* 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.
TAR_COMPR_PROGRAM(lzma)
TAR_COMPR_PROGRAM(lzop)
TAR_COMPR_PROGRAM(xz)
+TAR_COMPR_PROGRAM(zstd)
AC_MSG_CHECKING(for default archive format)
tar.vr
version.texi
/parse-datetime.texi
+/rmt.8
\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
@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
@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},
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
@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}
ct_lzip,
ct_lzma,
ct_lzop,
- ct_xz
+ ct_xz,
+ ct_zstd
};
static enum compress_type archive_compression_type = ct_none;
{ 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]))
{ ct_lzma, XZ_PROGRAM, "-J" },
{ ct_lzop, LZOP_PROGRAM, "--lzop" },
{ ct_xz, XZ_PROGRAM, "-J" },
+ { ct_zstd, ZSTD_PROGRAM, "--zstd" },
{ ct_none }
};
{ S(lzo, LZOP) },
{ S(xz, XZ) },
{ S(txz, XZ) }, /* Slackware */
+ { S(zst, ZSTD) },
+ { S(tzst, ZSTD) },
{ NULL }
#undef S
#undef __CAT2__
WARNING_OPTION,
XATTR_OPTION,
XATTR_EXCLUDE,
- XATTR_INCLUDE
+ XATTR_INCLUDE,
+ ZSTD_OPTION,
};
static char const doc[] = N_("\
{"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
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;
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