<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/71bb5270228ad75683c9df728ea9a78e7c8d587a">https://github.com/macports/macports-ports/commit/71bb5270228ad75683c9df728ea9a78e7c8d587a</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 71bb5270228 got: fix build on macOS <13
</span>71bb5270228 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 71bb5270228ad75683c9df728ea9a78e7c8d587a
</span>Author: aeiouaeiouaeiouaeiouaeiouaeiou <aeioudev@outlook.com>
AuthorDate: Mon Mar 17 07:19:29 2025 +0300
<span style='display:block; white-space:pre;color:#404040;'> got: fix build on macOS <13
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/71820
</span>---
devel/got/Portfile | 11 +-
devel/got/files/patch-vis-compat.diff | 344 ++++++++++++++++++++++++++++++++++
2 files changed, 354 insertions(+), 1 deletion(-)
<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 a559fa41ec0..33e8695cd0b 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;'>@@ -27,7 +27,16 @@ checksums rmd160 10049e7f6f987481ee13bdcc9f026fca6c3d7cbb \
</span> sha256 22d2dd54e15bc63fa0e55b289b4d587a43db33672414213c2ef718c5332c6a81 \
size 1527363
# error: implicit declaration of function 'stravis' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms {darwin >= 22}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/71820
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# backport vis.c wrapper from tmux
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# can be removed as soon as it appears in upstream
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 22} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-vis-compat.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # these dependencies are necessary to re-detect the headers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:autoconf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:automake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</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;color:#808080;'>diff --git a/devel/got/files/patch-vis-compat.diff b/devel/got/files/patch-vis-compat.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b256a60d43a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</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;'>@@ -0,0 +1,344 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- compat/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compat/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28,7 +28,7 @@ libopenbsd_compat_a_SOURCES += strlcat.c strlcpy.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if HOST_DARWIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-libopenbsd_compat_a_SOURCES += uuid.c bsd-poll.c bsd-poll.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++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;'>+ endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if !HAVE_GETOPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compat/vis.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,242 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* $OpenBSD: vis.c,v 1.24 2015/07/20 01:52:28 millert 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 <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <ctype.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <limits.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdlib.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;'>++#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define isvisible(c,flag) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (((c) == '\\' || (flag & VIS_ALL) == 0) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (((u_int)(c) <= UCHAR_MAX && isascii((u_char)(c)) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (((c) != '*' && (c) != '?' && (c) != '[' && (c) != '#') || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (flag & VIS_GLOB) == 0) && isgraph((u_char)(c))) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((flag & VIS_SP) == 0 && (c) == ' ') || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((flag & VIS_TAB) == 0 && (c) == '\t') || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((flag & VIS_NL) == 0 && (c) == '\n') || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((flag & VIS_SAFE) && ((c) == '\b' || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (c) == '\007' || (c) == '\r' || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ isgraph((u_char)(c))))))
</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;'>++ * vis - visually encode characters
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++vis(char *dst, int c, int flag, int nextc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (isvisible(c, flag)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((c == '"' && (flag & VIS_DQ) != 0) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (c == '\\' && (flag & VIS_NOSLASH) == 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (dst);
</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 & VIS_CSTYLE) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch(c) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\n':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'n';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\r':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'r';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\b':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'b';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\a':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'a';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\v':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'v';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\t':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 't';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\f':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'f';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case ' ':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 's';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case '\0':
</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;'>++ if (isoctal(nextc)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</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 (((c & 0177) == ' ') || (flag & VIS_OCTAL) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((flag & VIS_GLOB) && (c == '*' || c == '?' || c == '[' || c == '#'))) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = ((u_char)c >> 6 & 07) + '0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = ((u_char)c >> 3 & 07) + '0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = ((u_char)c & 07) + '0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((flag & VIS_NOSLASH) == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '\\';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c & 0200) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ c &= 0177;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = 'M';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (iscntrl((u_char)c)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '^';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == 0177)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '?';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = c + '@';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = '-';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++done:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (dst);
</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;'>++ * strvis, strnvis, strvisx - visually encode characters from src into dst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Dst must be 4 times the size of src to account for possible
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * expansion. The length of dst, not including the trailing NULL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * is returned.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Strnvis will write no more than siz-1 bytes (and will NULL terminate).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * The number of bytes needed to fully encode the string is returned.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Strvisx encodes exactly len bytes from src into dst.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * This is useful for encoding a block of data.
</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;'>++strvis(char *dst, const char *src, int flag)
</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;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (start = dst; (c = *src);)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst = vis(dst, c, flag, *++src);
</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;'>++int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++strnvis(char *dst, const char *src, size_t siz, int flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *start, *end;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char tbuf[5];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int c, i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ i = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (start = dst, end = start + siz - 1; (c = *src) && dst < end; ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (isvisible(c, flag)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((c == '"' && (flag & VIS_DQ) != 0) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (c == '\\' && (flag & VIS_NOSLASH) == 0)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* need space for the extra '\\' */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst + 1 >= end) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ i = 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</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;'>++ i = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst++ = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ i = vis(tbuf, c, flag, *++src) - tbuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst + i <= end) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ memcpy(dst, tbuf, i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst += i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ src--;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</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;'>++ if (siz > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *dst = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (dst + i > end) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* adjust return value for truncation */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while ((c = *src))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst += vis(tbuf, c, flag, *++src) - tbuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</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;'>++int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++stravis(char **outp, const char *src, int flag)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int len, serrno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ buf = calloc(4, strlen(src) + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (buf == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ len = strvis(buf, src, flag);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ serrno = errno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *outp = realloc(buf, len + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (*outp == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *outp = buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ errno = serrno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (len);
</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;'>++strvisx(char *dst, const char *src, size_t len, int flag)
</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;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (start = dst; len > 1; len--) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ c = *src;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst = vis(dst, c, flag, *++src);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dst = vis(dst, *src, flag, '\0');
</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;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ compat/vis.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,85 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* $OpenBSD: vis.h,v 1.15 2015/07/20 01:52:27 millert Exp $ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* $NetBSD: vis.h,v 1.4 1994/10/26 00:56:41 cgd Exp $ */
</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;'>++ * Copyright (c) 1990 The Regents of the University of California.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 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;'>++ * @(#)vis.h 5.9 (Berkeley) 4/3/91
</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;'>++#ifndef _VIS_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define _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;'>++ * to select alternate encoding format
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_OCTAL 0x01 /* use octal \ddd format */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_CSTYLE 0x02 /* use \[nrft0..] where appropriate */
</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;'>++ * to alter set of characters encoded (default is to encode all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * non-graphic except space, tab, and newline).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_SP 0x04 /* also encode space */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_TAB 0x08 /* also encode tab */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_NL 0x10 /* also encode newline */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_WHITE (VIS_SP | VIS_TAB | VIS_NL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_SAFE 0x20 /* only encode "unsafe" characters */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_DQ 0x200 /* backslash-escape double quotes */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_ALL 0x400 /* encode all characters */
</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;'>++ * other
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_NOSLASH 0x40 /* inhibit printing '\' */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VIS_GLOB 0x100 /* encode glob(3) magics and '#' */
</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 return codes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define UNVIS_VALID 1 /* character valid */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define UNVIS_VALIDPUSH 2 /* character valid, push back passed char */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define UNVIS_NOCHAR 3 /* valid sequence, no character produced */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define UNVIS_SYNBAD -1 /* unrecognized escape sequence */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define UNVIS_ERROR -2 /* decoder in unknown state (unrecoverable) */
</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 flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define UNVIS_END 1 /* no more characters */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char *vis(char *, int, int, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int strvis(char *, const char *, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int stravis(char **, const char *, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int strnvis(char *, const char *, size_t, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int strvisx(char *, const char *, size_t, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int strunvis(char *, const char *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int unvis(char *, char, int *, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ssize_t strnunvis(char *, const char *, size_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* !_VIS_H_ */
</span></pre><pre style='margin:0'>
</pre>