From e64d3ec0c99c4dbc4392d901a326bc8a073eb228 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Mon, 6 Aug 2018 10:31:50 +0200 Subject: [PATCH] - rel 2; backport zstd support from upstream --- tar.spec | 4 +- zstd.patch | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 zstd.patch diff --git a/tar.spec b/tar.spec index 96b9edd..a7ae6ef 100644 --- a/tar.spec +++ b/tar.spec @@ -11,7 +11,7 @@ Summary(pt_BR.UTF-8): GNU Tape Archiver (tar) Summary(tr.UTF-8): Yaygın kullanılan yedekleyici Name: tar Version: 1.30 -Release: 1 +Release: 2 Epoch: 1 License: GPL v3+ Group: Applications/Archiving @@ -21,6 +21,7 @@ Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-ma # Source1-md5: 4e4b1655fe42c27a4eb5d7bcd82e74ac Patch0: %{name}-info.patch Patch1: %{name}-zero-block.patch +Patch2: zstd.patch URL: http://www.gnu.org/software/tar/tar.html BuildRequires: autoconf >= 2.63 BuildRequires: automake >= 1:1.11 @@ -140,6 +141,7 @@ z pakietu dump. %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 %{__rm} po/stamp-po diff --git a/zstd.patch b/zstd.patch new file mode 100644 index 0000000..5421723 --- /dev/null +++ b/zstd.patch @@ -0,0 +1,199 @@ +From 3d45373d3b192d7342d49524193497598818d36d Mon Sep 17 00:00:00 2001 +From: Adam Borowski +Date: Sun, 18 Mar 2018 10:24:13 +0200 +Subject: Add support for zstd compression + +* configure.ac (zstd): Register compression program. +* doc/tar.1: Mention --zstd. +* doc/tar.texi: Document zstd support. +* src/buffer.c: Register zstd compression. +* src/suffix.c: Add suffixes zst and tzst. +* src/tar.c: New compression option --zstd. +--- + configure.ac | 1 + + doc/.gitignore | 1 + + doc/tar.1 | 4 ++++ + doc/tar.texi | 29 +++++++++++++++++++++-------- + src/buffer.c | 5 ++++- + src/suffix.c | 2 ++ + src/tar.c | 12 +++++++++++- + 7 files changed, 44 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0bddbeb..354e787 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -250,6 +250,7 @@ TAR_COMPR_PROGRAM(lzip) + TAR_COMPR_PROGRAM(lzma) + TAR_COMPR_PROGRAM(lzop) + TAR_COMPR_PROGRAM(xz) ++TAR_COMPR_PROGRAM(zstd) + + AC_MSG_CHECKING(for default archive format) + +diff --git a/doc/tar.1 b/doc/tar.1 +index ddf4fdc..0663525 100644 +--- a/doc/tar.1 ++++ b/doc/tar.1 +@@ -831,6 +831,10 @@ Filter the archive through + \fB\-Z\fR, \fB\-\-compress\fR, \fB\-\-uncompress\fR + Filter the archive through + .BR compress (1). ++.TP ++\fB\-\-zstd\fR ++Filter the archive through ++.BR zstd (1). + .SS Local file selection + .TP + \fB\-\-add\-file\fR=\fIFILE\fR +diff --git a/doc/tar.texi b/doc/tar.texi +index a56b9fb..1362216 100644 +--- a/doc/tar.texi ++++ b/doc/tar.texi +@@ -3713,6 +3713,9 @@ only attributes from the user namespace. + @itemx -J + Use @command{xz} for compressing or decompressing the archives. @xref{gzip}. + ++@item --zstd ++Use @command{zstd} for compressing or decompressing the archives. @xref{gzip}. ++ + @end table + + @node Short Option Summary +@@ -9520,6 +9523,7 @@ switch to @samp{posix}. + @cindex lzma + @cindex lzop + @cindex compress ++@cindex zstd + @GNUTAR{} is able to create and read compressed archives. It supports + a wide variety of compression programs, namely: @command{gzip}, + @command{bzip2}, @command{lzip}, @command{lzma}, @command{lzop}, +@@ -9530,14 +9534,21 @@ compression programs@footnote{It also had patent problems in the past.}. + + Creating a compressed archive is simple: you just specify a + @dfn{compression option} along with the usual archive creation +-commands. The compression option is @option{-z} (@option{--gzip}) to +-create a @command{gzip} compressed archive, @option{-j} +-(@option{--bzip2}) to create a @command{bzip2} compressed archive, +-@option{--lzip} to create an @asis{lzip} compressed archive, +-@option{-J} (@option{--xz}) to create an @asis{XZ} archive, +-@option{--lzma} to create an @asis{LZMA} compressed +-archive, @option{--lzop} to create an @asis{LZOP} archive, and +-@option{-Z} (@option{--compress}) to use @command{compress} program. ++commands. Available compression options are summarized in the ++table below: ++ ++@multitable @columnfractions 0.4 0.2 0.4 ++@headitem Long @tab Short @tab Archive format ++@item @option{--gzip} @tab @option{-z} @tab @command{gzip} ++@item @option{--bzip2} @tab @option{-j} @tab @command{bzip2} ++@item @option{--xz} @tab @option{-J} @tab @command{xz} ++@item @option{--lzip} @tab @tab @command{lzip} ++@item @option{--lzma} @tab @tab @command{lzma} ++@item @option{--lzop} @tab @tab @command{lzop} ++@item @option{--zstd} @tab @tab @command{zstd} ++@item @option{--compress} @tab @option{-Z} @tab @command{compress} ++@end multitable ++ + For example: + + @smallexample +@@ -9730,6 +9741,8 @@ suffix. The following suffixes are recognized: + @item @samp{.tlz} @tab @command{lzma} + @item @samp{.lzo} @tab @command{lzop} + @item @samp{.xz} @tab @command{xz} ++@item @samp{.zst} @tab @command{zstd} ++@item @samp{.tzst} @tab @command{zstd} + @end multitable + + @anchor{use-compress-program} +diff --git a/src/buffer.c b/src/buffer.c +index 51f299f..063e1be 100644 +--- a/src/buffer.c ++++ b/src/buffer.c +@@ -281,7 +281,8 @@ enum compress_type { + ct_lzip, + ct_lzma, + ct_lzop, +- ct_xz ++ ct_xz, ++ ct_zstd + }; + + static enum compress_type archive_compression_type = ct_none; +@@ -310,6 +311,7 @@ static struct zip_magic const magic[] = { + { ct_lzma, 6, "\xFFLZMA" }, + { ct_lzop, 4, "\211LZO" }, + { ct_xz, 6, "\xFD" "7zXZ" }, ++ { ct_zstd, 4, "\x28\xB5\x2F\xFD" }, + }; + + #define NMAGIC (sizeof(magic)/sizeof(magic[0])) +@@ -325,6 +327,7 @@ static struct zip_program zip_program[] = { + { ct_lzma, XZ_PROGRAM, "-J" }, + { ct_lzop, LZOP_PROGRAM, "--lzop" }, + { ct_xz, XZ_PROGRAM, "-J" }, ++ { ct_zstd, ZSTD_PROGRAM, "--zstd" }, + { ct_none } + }; + +diff --git a/src/suffix.c b/src/suffix.c +index 47027e7..66b5694 100644 +--- a/src/suffix.c ++++ b/src/suffix.c +@@ -46,6 +46,8 @@ static struct compression_suffix compression_suffixes[] = { + { S(lzo, LZOP) }, + { S(xz, XZ) }, + { S(txz, XZ) }, /* Slackware */ ++ { S(zst, ZSTD) }, ++ { S(tzst, ZSTD) }, + { NULL } + #undef S + #undef __CAT2__ +diff --git a/src/tar.c b/src/tar.c +index 3f844a8..02fa561 100644 +--- a/src/tar.c ++++ b/src/tar.c +@@ -348,7 +348,8 @@ enum + WARNING_OPTION, + XATTR_OPTION, + XATTR_EXCLUDE, +- XATTR_INCLUDE ++ XATTR_INCLUDE, ++ ZSTD_OPTION, + }; + + static char const doc[] = N_("\ +@@ -682,6 +683,7 @@ static struct argp_option options[] = { + {"lzma", LZMA_OPTION, 0, 0, NULL, GRID+1 }, + {"lzop", LZOP_OPTION, 0, 0, NULL, GRID+1 }, + {"xz", 'J', 0, 0, NULL, GRID+1 }, ++ {"zstd", ZSTD_OPTION, 0, 0, NULL, GRID+1 }, + #undef GRID + + #define GRID 100 +@@ -1129,6 +1131,10 @@ tar_help_filter (int key, const char *text, void *input) + s = xasprintf (_("filter the archive through %s"), XZ_PROGRAM); + break; + ++ case ZSTD_OPTION: ++ s = xasprintf (_("filter the archive through %s"), ZSTD_PROGRAM); ++ break; ++ + case ARGP_KEY_HELP_EXTRA: + { + const char *tstr; +@@ -1650,6 +1656,10 @@ parse_opt (int key, char *arg, struct argp_state *state) + set_use_compress_program_option (COMPRESS_PROGRAM, args->loc); + break; + ++ case ZSTD_OPTION: ++ set_use_compress_program_option (ZSTD_PROGRAM, args->loc); ++ break; ++ + case ATIME_PRESERVE_OPTION: + atime_preserve_option = + (arg +-- +cgit v1.0-41-gc330 + -- 2.44.0