<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>