<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/68e2d2d5feb647732564630e89bad72a3b4db8ab">https://github.com/macports/macports-base/commit/68e2d2d5feb647732564630e89bad72a3b4db8ab</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 68e2d2d5feb647732564630e89bad72a3b4db8ab
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Mon Apr 2 18:31:20 2018 +0200

<span style='display:block; white-space:pre;color:#404040;'>    compat: Move strlcpy implementation
</span>---
 Mk/macports.autoconf.mk.in          |  1 +
 configure                           |  7 +++--
 configure.ac                        |  5 ++--
 src/compat/Makefile.in              |  3 +++
 src/compat/strlcpy.c                | 53 +++++++++++++++++++++++++++++++++++++
 src/compat/strlcpy.h                | 10 +++++++
 src/darwintracelib1.0/Makefile.in   |  3 +++
 src/darwintracelib1.0/darwintrace.c | 16 -----------
 8 files changed, 78 insertions(+), 20 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Mk/macports.autoconf.mk.in b/Mk/macports.autoconf.mk.in
</span><span style='display:block; white-space:pre;color:#808080;'>index 100c8da..3cb54c0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Mk/macports.autoconf.mk.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Mk/macports.autoconf.mk.in
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -65,3 +65,4 @@ SILENT                    = @
</span> HAVE_GETDELIM             = @HAVE_GETDELIM@
 HAVE_GETLINE           = @HAVE_GETLINE@
 HAVE_STRLCAT           = @HAVE_STRLCAT@
<span style='display:block; white-space:pre;background:#e0ffe0;'>+HAVE_STRLCPY            = @HAVE_STRLCPY@
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/configure b/configure
</span><span style='display:block; white-space:pre;color:#808080;'>index d31997c..0b224a3 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/configure
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/configure
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -667,6 +667,7 @@ OS_MAJOR
</span> OS_PLATFORM
 READLINE_LIBS
 MD5_LIBS
<span style='display:block; white-space:pre;background:#e0ffe0;'>+HAVE_STRLCPY
</span> HAVE_STRLCAT
 HAVE_GETLINE
 HAVE_GETDELIM
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7131,7 +7132,7 @@ done
</span> for ac_func in OSAtomicCompareAndSwap32 OSAtomicCompareAndSwap64 \
        OSAtomicCompareAndSwapPtr __getdirentries64 clearenv copyfile \
        flock fls kqueue posix_spawn setmode \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        strlcpy sysctlbyname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   sysctlbyname
</span> do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7145,7 +7146,7 @@ done
</span> 
 
 # Check for library functions, replacements are in pextlib1.0/compat/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-for ac_func in getline getdelim strlcat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+for ac_func in getline getdelim strlcat strlcpy
</span> do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7163,6 +7164,8 @@ HAVE_GETLINE=$ac_cv_func_getline
</span> 
 HAVE_STRLCAT=$ac_cv_func_strlcat
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+HAVE_STRLCPY=$ac_cv_func_strlcpy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> 
 ac_fn_c_check_decl "$LINENO" "atomic_compare_exchange_strong_explicit" "ac_cv_have_decl_atomic_compare_exchange_strong_explicit" "#include <stdatomic.h>
 "
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/configure.ac b/configure.ac
</span><span style='display:block; white-space:pre;color:#808080;'>index ec3d73c..846da85 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/configure.ac
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -238,13 +238,14 @@ AC_CHECK_HEADERS([crt_externs.h err.h fcntl.h libkern/OSAtomic.h libproc.h limit
</span> AC_CHECK_FUNCS([OSAtomicCompareAndSwap32 OSAtomicCompareAndSwap64 \
        OSAtomicCompareAndSwapPtr __getdirentries64 clearenv copyfile \
        flock fls kqueue posix_spawn setmode \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        strlcpy sysctlbyname])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   sysctlbyname])
</span> 
 # Check for library functions, replacements are in pextlib1.0/compat/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-AC_CHECK_FUNCS([getline getdelim strlcat])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+AC_CHECK_FUNCS([getline getdelim strlcat strlcpy])
</span> AC_SUBST(HAVE_GETDELIM, $ac_cv_func_getdelim)
 AC_SUBST(HAVE_GETLINE, $ac_cv_func_getline)
 AC_SUBST(HAVE_STRLCAT, $ac_cv_func_strlcat)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+AC_SUBST(HAVE_STRLCPY, $ac_cv_func_strlcpy)
</span> 
 AC_CHECK_DECLS([atomic_compare_exchange_strong_explicit], [], [], [[#include <stdatomic.h>]])
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/compat/Makefile.in b/src/compat/Makefile.in
</span><span style='display:block; white-space:pre;color:#808080;'>index b7ad206..5eb5015 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/compat/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/compat/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -12,6 +12,9 @@ endif
</span> ifneq ($(HAVE_STRLCAT),yes)
 OBJS+= strlcat.o
 endif
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ifneq ($(HAVE_STRLCPY),yes)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OBJS+= strlcpy.o
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endif
</span> 
 # disable pkgIndex.tcl and install
 PKGINDEX=
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/compat/strlcpy.c b/src/compat/strlcpy.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..f444445
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/compat/strlcpy.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,53 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 The MacPorts Project
</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 Apple Inc., The MacPorts Project nor the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *    names of its contributors may be used to endorse or promote products
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *    derived from this software 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * AND 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 COPYRIGHT OWNER OR CONTRIBUTORS BE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * POSSIBILITY OF 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 <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <config.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;'>+#ifndef HAVE_STRLCPY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "strlcopy.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Define strlcpy if it's not available. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+size_t strlcpy(char * restrict dst, const char * restrict src, size_t size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        size_t result = strlen(src);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if (size > 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                size_t copylen = size - 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if (copylen > result) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        copylen = result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                memcpy(dst, src, copylen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                dst[copylen] = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/compat/strlcpy.h b/src/compat/strlcpy.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d72adc3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/compat/strlcpy.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef _STRLCPY_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _STRLCPY_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if !HAVE_STRLCPY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+size_t strlcpy(char * restrict dst, const char * restrict src, size_t size);
</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;'>+#endif /* _STRLCPY_H */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/darwintracelib1.0/Makefile.in b/src/darwintracelib1.0/Makefile.in
</span><span style='display:block; white-space:pre;color:#808080;'>index f1ee776..306332d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/darwintracelib1.0/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/darwintracelib1.0/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,6 +26,9 @@ OBJS = $(SRCS:%.c=%.o)
</span> ifneq ($(HAVE_STRLCAT),yes)
 COMPAT_OBJS+= $(srcdir)/../compat/strlcat.o
 endif
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ifneq ($(HAVE_STRLCPY),yes)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+COMPAT_OBJS+= $(srcdir)/../compat/strlcpy.o
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endif
</span> 
 CPPFLAGS+= -I../compat
 LIBS+= $(COMPAT_OBJS)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/darwintracelib1.0/darwintrace.c b/src/darwintracelib1.0/darwintrace.c
</span><span style='display:block; white-space:pre;color:#808080;'>index e4d5c08..1f31048 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/darwintracelib1.0/darwintrace.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/darwintracelib1.0/darwintrace.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -66,22 +66,6 @@
</span> #define LSTATSYSNUM SYS_lstat
 #endif
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef HAVE_STRLCPY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Define strlcpy if it's not available. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-size_t strlcpy(char *dst, const char *src, size_t size) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   size_t result = strlen(src);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (size > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           size_t copylen = size - 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (copylen > result) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   copylen = result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           memcpy(dst, src, copylen);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           dst[copylen] = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> // Global Variables
 /**
  * PID of the process darwintrace was last used in. This is used to detect
</pre><pre style='margin:0'>

</pre>