<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/57d775ae0697f1cd206dd12274d08b98cd103703">https://github.com/macports/macports-ports/commit/57d775ae0697f1cd206dd12274d08b98cd103703</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 57d775ae069 got: re-fix build on macOS <13
</span>57d775ae069 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 57d775ae0697f1cd206dd12274d08b98cd103703
</span>Author: aeiouaeiouaeiouaeiouaeiouaeiou <aeioudev@outlook.com>
AuthorDate: Sun Mar 23 02:28:56 2025 +0300
<span style='display:block; white-space:pre;color:#404040;'> got: re-fix build on macOS <13
</span>---
devel/got/Portfile | 7 +-
devel/got/files/patch-vis-compat.diff | 288 +++++++++++++++++++++++++++++++++-
2 files changed, 290 insertions(+), 5 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/got/Portfile b/devel/got/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c35603f38d8..8aaa19446a6 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/got/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/got/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -40,19 +40,20 @@ if {${os.platform} eq "darwin" && ${os.major} < 22} {
</span> # memset_s() is not available on macOS <10.9, so
# emulate it with volatile memset().
if {${os.platform} eq "darwin" && ${os.major} < 13} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles patch-use-volatile-memset.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-use-volatile-memset.diff
</span> }
# There is probably a smarter way to do this, see failed attempts at
# https://trac.macports.org/ticket/69827
# So, if you, like me, are using LibreSSL, remove the port:libretls line
# as that is only required for OpenSSL users to supply libtls which is
# already included with LibreSSL.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib path:lib/libssl.dylib:openssl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append path:lib/libssl.dylib:openssl \
</span> port:libretls \
port:ncurses \
port:ossp-uuid \
port:libevent
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build port:bison \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:bison \
</span> path:bin/pkg-config:pkgconfig
livecheck.type regex
livecheck.url https://gameoftrees.org/
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/got/files/patch-vis-compat.diff b/devel/got/files/patch-vis-compat.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index b256a60d43a..e96f785f7dd 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/got/files/patch-vis-compat.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/got/files/patch-vis-compat.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,11 +5,295 @@
</span>
if HOST_DARWIN
-libopenbsd_compat_a_SOURCES += uuid.c bsd-poll.c bsd-poll.h
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+libopenbsd_compat_a_SOURCES += uuid.c bsd-poll.c bsd-poll.h vis.c vis.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++libopenbsd_compat_a_SOURCES += uuid.c bsd-poll.c bsd-poll.h unvis.c vis.c vis.h
</span> endif
if !HAVE_GETOPT
--- /dev/null
<span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compat/unvis.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,281 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* $OpenBSD: unvis.c,v 1.12 2005/08/08 08:05:34 espie Exp $ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright (c) 1989, 1993
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * The Regents of the University of California. All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * modification, are permitted provided that the following conditions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * are met:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 1. Redistributions of source code must retain the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * notice, this list of conditions and the following disclaimer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 2. Redistributions in binary form must reproduce the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * notice, this list of conditions and the following disclaimer in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * documentation and/or other materials provided with the distribution.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 3. Neither the name of the University nor the names of its contributors
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * may be used to endorse or promote products derived from this software
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * without specific prior written permission.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * SUCH DAMAGE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <ctype.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "vis.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * decode driven by state machine
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_GROUND 0 /* haven't seen escape char */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_START 1 /* start decoding special sequence */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_META 2 /* metachar started (M) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_META1 3 /* metachar more, regular char (-) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_CTRL 4 /* control char started (^) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_OCTAL2 5 /* octal digit 2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define S_OCTAL3 6 /* octal digit 3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * unvis - decode characters previously encoded by vis
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++unvis(char *cp, char c, int *astate, int flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (flag & UNVIS_END) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (*astate == S_OCTAL2 || *astate == S_OCTAL3) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (*astate == S_GROUND ? UNVIS_NOCHAR : UNVIS_SYNBAD);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch (*astate) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_GROUND:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == '\\') {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_START;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_START:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch(c) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\\':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '0': case '1': case '2': case '3':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '4': case '5': case '6': case '7':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = (c - '0');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_OCTAL2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'M':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = (char) 0200;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_META;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '^':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_CTRL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'n':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\n';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'r':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\r';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'b':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\b';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'a':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\007';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'v':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\v';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 't':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\t';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'f':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\f';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 's':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = ' ';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 'E':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = '\033';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\n':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * hidden newline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_NOCHAR);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '$':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * hidden marker
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_NOCHAR);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_SYNBAD);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_META:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == '-')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_META1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if (c == '^')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_CTRL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_SYNBAD);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_META1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp |= c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_CTRL:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == '?')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp |= 0177;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp |= c & 037;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_OCTAL2: /* second possible octal digit */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (isoctal(c)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * yes - and maybe a third
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = (*cp << 3) + (c - '0');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_OCTAL3;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * no - done with current sequence, push back passed char
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALIDPUSH);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case S_OCTAL3: /* third possible octal digit */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (isoctal(c)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *cp = (*cp << 3) + (c - '0');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * we were done, push back passed char
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_VALIDPUSH);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * decoder in unknown state - (probably uninitialized)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *astate = S_GROUND;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (UNVIS_SYNBAD);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * strunvis - decode src into dst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Number of chars decoded into dst is returned, -1 on error.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Dst is null terminated.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++strunvis(char *dst, const char *src)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *start = dst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int state = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while ((c = *src++)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ again:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch (unvis(dst, c, &state, 0)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case UNVIS_VALID:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case UNVIS_VALIDPUSH:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto again;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case UNVIS_NOCHAR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (unvis(dst, c, &state, UNVIS_END) == UNVIS_VALID)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (dst - start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ssize_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++strnunvis(char *dst, const char *src, size_t sz)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char c, p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *start = dst, *end = dst + sz - 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int state = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (sz > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *end = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while ((c = *src++)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ again:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch (unvis(&p, c, &state, 0)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case UNVIS_VALID:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst < end)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case UNVIS_VALIDPUSH:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst < end)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto again;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case UNVIS_NOCHAR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst <= end)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (unvis(&p, c, &state, UNVIS_END) == UNVIS_VALID) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst < end)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst <= end)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (dst - start);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span> +++ compat/vis.c
@@ -0,0 +1,242 @@
+/* $OpenBSD: vis.c,v 1.24 2015/07/20 01:52:28 millert Exp $ */
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -49,7 +333,7 @@
</span> +#include <string.h>
+#include <stdlib.h>
+
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <vis.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "vis.h"
</span> +
+#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7')
+#define isvisible(c,flag) \
</pre><pre style='margin:0'>
</pre>