<pre style='margin:0'>
Marius Schamschula (Schamschula) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3cc8ae1d99eab3c4b63e2c2fc14ba7b4d59b7f3e">https://github.com/macports/macports-ports/commit/3cc8ae1d99eab3c4b63e2c2fc14ba7b4d59b7f3e</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 3cc8ae1d99e xar: add --to-stdout
</span>3cc8ae1d99e is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 3cc8ae1d99eab3c4b63e2c2fc14ba7b4d59b7f3e
</span>Author: Marius Schamschula <mps@macports.org>
AuthorDate: Wed Mar 9 20:22:05 2022 -0600

<span style='display:block; white-space:pre;color:#404040;'>    xar: add --to-stdout
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/64775
</span>---
 archivers/xar/Portfile                |   5 +-
 archivers/xar/files/patch-stdout.diff | 118 ++++++++++++++++++++++++++++++++++
 2 files changed, 122 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/xar/Portfile b/archivers/xar/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 8ca5b02016c..20d4e7e48b0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/archivers/xar/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/xar/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7,7 +7,7 @@ PortGroup           openssl 1.0
</span> name                xar
 set apple_version   452
 version             1.8.0.${apple_version}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            3
</span> 
 categories          archivers sysutils
 platforms           darwin freebsd linux
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -45,6 +45,9 @@ patchfiles-append   patch-tpoechtrager.diff \
</span>                     patch-lib-hash.c.diff \
                     patch-src-xar.c.diff
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# add --to-stdout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-stdout.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.cflags-append -std=c99
 
 post-patch {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/xar/files/patch-stdout.diff b/archivers/xar/files/patch-stdout.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..37607e20227
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/xar/files/patch-stdout.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,118 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/xar.c.orig 2022-03-09 07:52:07.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/xar.c      2022-03-09 19:29:08.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -53,8 +53,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "../lib/filetree.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "util.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MIN_XAR_NEW_OPTIONS 0x01060180
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define SYMBOLIC 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define NUMERIC  2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static unsigned long xar_lib_version = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static int xar_lib_version_fetched = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int Perms = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int Local = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static char *Subdoc = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -73,6 +80,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int LinkSame = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int NoOverwrite = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int SaveSuid = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static int ToStdout = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct lnode {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   char *str;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -457,24 +465,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if( matched ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   struct stat sb;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  if( NoOverwrite && (lstat(path, &sb) == 0) ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  if( !ToStdout && NoOverwrite && (lstat(path, &sb) == 0) ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           printf("%s already exists, not overwriting\n", path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           const char *prop = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           int deferred = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if( xar_prop_get(f, "type", &prop) == 0 && prop != NULL ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                   if( strcmp(prop, "directory") == 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                          if (!ToStdout) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                           struct lnode *tmpl = calloc(sizeof(struct lnode),1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                          tmpl->str = (char *)f;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                          tmpl->next = dirs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                          dirs = tmpl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                          deferred = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  tmpl->str = (char *)f;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  tmpl->next = dirs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  dirs = tmpl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  deferred = 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;'>+                           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if( ! deferred ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                  files_extracted++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                  print_file(x, f);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                  xar_extract(x, f);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                  if (xar_extract(x, f) == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                          files_extracted++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                  else if (!ToStdout)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                          fprintf(stderr, "Unable to extract file %s\n", path);
</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;'>+@@ -859,6 +870,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf(stderr, "\t                      to a document in cwd named <name>.xml\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf(stderr, "\t--exclude        POSIX regular expression of files to \n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf(stderr, "\t                      ignore while archiving.\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  fprintf(stderr, "\t--to-stdout      Write file contents to standard out when extracting\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  fprintf(stderr, "\t-O               Synonym for \"--to-stdout\"\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf(stderr, "\t--rsize          Specifies the size of the buffer used\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf(stderr, "\t                      for read IO operations in bytes.\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf(stderr, "\t--coalesce-heap  When archived files are identical, only store one copy\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -917,6 +953,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           {"keep-existing",    no_argument,       0, 15},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           {"keep-setuid",      no_argument,       0, 16},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           {"compression-args", required_argument, 0, 17},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          {"to-stdout",        no_argument,             0, 'O'},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           { 0, 0, 0, 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;'>+@@ -925,7 +962,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           exit(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;'>+-  while( (c = getopt_long(argc, argv, "axcC:vtjzf:hpPln:s:d:vk", o, &loptind)) != -1 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while( (c = getopt_long(argc, argv, "axcOC:vtjzf:hpPln:s:d:vk", o, &loptind)) != -1 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           switch(c) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           case  1 : // toc-cksum
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   if( !optarg ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1150,6 +1187,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           case 'l': // stay on local device
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   Local = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          case 'O':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  if (xar_lib_version < MIN_XAR_NEW_OPTIONS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          fprintf(stderr, "--to-stdout requires a newer xar library\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  ToStdout = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           case 'n': // provide subdocument name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   SubdocName = optarg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/xar.1.orig 2020-05-12 22:28:17.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/xar.1      2022-03-09 19:52:00.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,6 +103,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ the archive during creation or from being extracted during extraction.  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ This option can be specified multiple times.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++\-\-to\-stdout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Instead of creating files during extraction, write the file contents to standard output.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Only the file data will be written to standard output.  All extended attributes, resource forks and other file properties are ignored with this option.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++\-O
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Synonym for \-\-to\-stdout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++.TP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ \-\-rsize
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Specifies a size (in bytes) for the internal libxar read buffer while performing I/O.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .TP
</span></pre><pre style='margin:0'>

</pre>