<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d9ba12fb6fc7688b6e0197e353d544c28fd500e3">https://github.com/macports/macports-ports/commit/d9ba12fb6fc7688b6e0197e353d544c28fd500e3</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 d9ba12fb6fc libarchive: fix build on older systems
</span>d9ba12fb6fc is described below
<span style='display:block; white-space:pre;color:#808000;'>commit d9ba12fb6fc7688b6e0197e353d544c28fd500e3
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Jul 24 17:10:57 2023 +1000
<span style='display:block; white-space:pre;color:#404040;'> libarchive: fix build on older systems
</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/67815
</span>---
archivers/libarchive/Portfile | 4 +-
archivers/libarchive/files/bsdunzip-time.diff | 85 +++++++++++++++++++++++++
archivers/libarchive/files/getline.patch | 92 +++++++++++++++++++++++++++
3 files changed, 180 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/libarchive/Portfile b/archivers/libarchive/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 4744c1bb977..330e41edf91 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/archivers/libarchive/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/libarchive/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -32,7 +32,9 @@ depends_lib port:bzip2 port:zlib port:libxml2 port:xz \
</span> port:libb2
patchfiles patch-libarchive__archive_read_support_format_lha.c.diff \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- fix_pc_file.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fix_pc_file.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bsdunzip-time.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ getline.patch
</span>
platform darwin 8 {
patchfiles-append patch-libarchive-3.5-fix-tests-tiger.diff
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/libarchive/files/bsdunzip-time.diff b/archivers/libarchive/files/bsdunzip-time.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..19199cb84a0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/libarchive/files/bsdunzip-time.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,85 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/libarchive/libarchive/commit/b55d25506ad63667e394a31bee91b494ad891ceb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/unzip/bsdunzip.c b/unzip/bsdunzip.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index be18ecfb5..cd8237aa7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- unzip/bsdunzip.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ unzip/bsdunzip.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -72,6 +72,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_UNISTD_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if ((!defined(HAVE_UTIMENSAT) && defined(HAVE_LUTIMES)) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (!defined(HAVE_FUTIMENS) && defined(HAVE_FUTIMES)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef HAVE_SYS_TIME_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</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;'>+ #include <archive.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <archive_entry.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -630,9 +636,15 @@ extract_file(struct archive *a, struct archive_entry *e, char **path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int mode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct timespec mtime;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct stat sb;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- struct timespec ts[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int fd, check, text;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char *linkname;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_UTIMENSAT) || defined(HAVE_FUTIMENS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct timespec ts[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if ((!defined(HAVE_UTIMENSAT) && defined(HAVE_LUTIMES)) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (!defined(HAVE_FUTIMENS) && defined(HAVE_FUTIMES)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct timeval times[2];
</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;'>+ mode = archive_entry_mode(e) & 0777;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (mode == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -686,9 +698,18 @@ extract_file(struct archive *a, struct archive_entry *e, char **path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</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 defined(HAVE_UTIMENSAT) || defined(HAVE_FUTIMENS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ts[0].tv_sec = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ts[0].tv_nsec = UTIME_NOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ts[1] = mtime;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if ((!defined(HAVE_UTIMENSAT) && defined(HAVE_LUTIMES)) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (!defined(HAVE_FUTIMENS) && defined(HAVE_FUTIMES)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ times[0].tv_sec = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ times[0].tv_usec = -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ times[1].tv_sec = mtime.tv_sec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ times[1].tv_usec = mtime.tv_nsec / 1000;
</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;'>+ /* process symlinks */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ linkname = archive_entry_symlink(e);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -701,8 +722,14 @@ extract_file(struct archive *a, struct archive_entry *e, char **path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ warning("Cannot set mode for '%s'", *path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* set access and modification time */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_UTIMENSAT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (utimensat(AT_FDCWD, *path, ts, AT_SYMLINK_NOFOLLOW) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ warning("utimensat('%s')", *path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(HAVE_LUTIMES)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ gettimeofday(×[0], NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (lutimes(*path, times) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ warning("lutimes('%s')", *path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</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;'>+@@ -720,8 +747,14 @@ extract_file(struct archive *a, struct archive_entry *e, char **path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ info("\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* set access and modification time */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE_FUTIMENS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (futimens(fd, ts) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error("futimens('%s')", *path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(HAVE_FUTIMES)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ gettimeofday(×[0], NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (futimes(fd, times) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ error("futimes('%s')", *path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (close(fd) != 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error("close('%s')", *path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/libarchive/files/getline.patch b/archivers/libarchive/files/getline.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..041684d0298
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/libarchive/files/getline.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,92 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- unzip/bsdunzip.c.orig 2023-07-24 16:33:11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ unzip/bsdunzip.c 2023-07-24 16:54:44
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -460,7 +460,89 @@ static char spinner[] = { '|', '/', '-', '\\' };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static unsigned char buffer[8192];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static char spinner[] = { '|', '/', '-', '\\' };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(__DARWIN_C_LEVEL) || __DARWIN_C_LEVEL < 200809L
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Need to provide getline() implementation */
</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) 2011 The NetBSD Foundation, Inc.
</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;'>++ * This code is derived from software contributed to The NetBSD Foundation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * by Christos Zoulas.
</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;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * BE 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;'>++ssize_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *ptr, *eptr;
</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 (*buf == NULL || *bufsiz == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *bufsiz = BUFSIZ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((*buf = malloc(*bufsiz)) == NULL)
</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;'>++ for (ptr = *buf, eptr = *buf + *bufsiz;;) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int c = fgetc(fp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (feof(fp)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ssize_t diff = (ssize_t)(ptr - *buf);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (diff != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *ptr = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return diff;
</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;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *ptr++ = c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (c == delimiter) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *ptr = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ptr - *buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (ptr + 2 >= eptr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ char *nbuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ size_t nbufsiz = *bufsiz * 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ssize_t d = ptr - *buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if ((nbuf = realloc(*buf, nbufsiz)) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *buf = nbuf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *bufsiz = nbufsiz;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ eptr = nbuf + nbufsiz;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ptr = nbuf + d;
</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;'>++ssize_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++getline(char **buf, size_t *bufsiz, FILE *fp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return getdelim(buf, bufsiz, '\n', fp);
</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;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ handle_existing_file(char **path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span></pre><pre style='margin:0'>
</pre>