summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/tar
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/tar')
-rw-r--r--gnu/usr.bin/tar/Makefile23
-rw-r--r--gnu/usr.bin/tar/config.h582
-rw-r--r--gnu/usr.bin/tar/doc/Makefile6
-rw-r--r--gnu/usr.bin/tar/localedir.h1
-rw-r--r--gnu/usr.bin/tar/tar.1573
5 files changed, 1185 insertions, 0 deletions
diff --git a/gnu/usr.bin/tar/Makefile b/gnu/usr.bin/tar/Makefile
new file mode 100644
index 0000000..e488179
--- /dev/null
+++ b/gnu/usr.bin/tar/Makefile
@@ -0,0 +1,23 @@
+# $FreeBSD$
+
+TARDIR= ${.CURDIR}/../../../contrib/tar
+.PATH: ${TARDIR}/lib ${TARDIR}/src
+
+PROG= tar
+
+SUBDIR= doc
+
+# libtar SRCS
+SRCS= addext.c argmatch.c backupfile.c basename.c dirname.c error.c \
+ exclude.c full-write.c getdate.c getline.c getopt.c getopt1.c \
+ getstr.c hash.c human.c mktime.c modechange.c prepargs.c \
+ print-copyr.c quotearg.c safe-read.c save-cwd.c savedir.c unicodeio.c \
+ xgetcwd.c xmalloc.c xstrdup.c xstrtoul.c xstrtoumax.c
+SRCS+= buffer.c compare.c create.c delete.c extract.c incremen.c list.c \
+ mangle.c misc.c names.c rtapelib.c tar.c update.c
+
+CFLAGS+= -DHAVE_CONFIG_H -I${.CURDIR} -I${TARDIR}/lib -I${TARDIR}/src
+
+NOSHARED?= YES
+
+.include <bsd.prog.mk>
diff --git a/gnu/usr.bin/tar/config.h b/gnu/usr.bin/tar/config.h
new file mode 100644
index 0000000..6e72423
--- /dev/null
+++ b/gnu/usr.bin/tar/config.h
@@ -0,0 +1,582 @@
+/* $FreeBSD$ */
+
+#include <paths.h>
+
+/* config.h. Generated automatically by configure. */
+/* config.h.in. Generated automatically from configure.ac by autoheader. */
+
+/* Define if the `closedir' function returns void instead of `int'. */
+/* #undef CLOSEDIR_VOID */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+/* #undef CRAY_STACKSEG_END */
+
+/* Define if using `alloca.c'. */
+/* #undef C_ALLOCA */
+
+/* Define to a string giving the full name of the default archive file. */
+#define DEFAULT_ARCHIVE _PATH_DEFTAPE
+
+/* Define to a number giving the default blocking size for archives. */
+#define DEFAULT_BLOCKING 20
+
+/*
+ [Define], [to], [1], [if], [density], [may], [be], [indicated], [by], [[lmh]], [at], [end], [of], [device.]
+ */
+/* #undef DENSITY_LETTER */
+
+/* Define to a string giving the prefix of the default device, without the
+ part specifying the unit and density. */
+#define DEVICE_PREFIX _PATH_DEFTAPE
+
+/* Define if there is a member named d_ino in the struct describing directory
+ headers. */
+#define D_INO_IN_DIRENT 1
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#define ENABLE_NLS 0
+
+/* Define if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
+/* #undef HAVE_ALLOCA_H */
+
+/* Define if you have the <argz.h> header file. */
+/* #undef HAVE_ARGZ_H */
+
+/* Define if you have the `clock_gettime' function. */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define if backslash-a works in C strings. */
+#define HAVE_C_BACKSLASH_A 1
+
+/* Define if you have the `dcgettext' function. */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if free is declared. */
+#define HAVE_DECL_FREE 1
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETENV 1
+
+/* Define to 1 if getgrgid is declared. */
+#define HAVE_DECL_GETGRGID 1
+
+/* Define to 1 if getpwuid is declared. */
+#define HAVE_DECL_GETPWUID 1
+
+/* Define to 1 if malloc is declared. */
+#define HAVE_DECL_MALLOC 1
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRERROR_R 1
+
+/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRTOUL 1
+
+/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRTOULL 1
+
+/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRTOUMAX 1
+
+/* Define if you have the <dirent.h> header file, and it defines `DIR'. */
+#define HAVE_DIRENT_H 1
+
+/* Define if the malloc check has been performed. */
+#define HAVE_DONE_WORKING_MALLOC_CHECK 1
+
+/* Define if the realloc check has been performed. */
+#define HAVE_DONE_WORKING_REALLOC_CHECK 1
+
+/* Define if you don't have `vprintf' but do have `_doprnt.' */
+/* #undef HAVE_DOPRNT */
+
+/* Define if you have the `fchdir' function. */
+#define HAVE_FCHDIR 1
+
+/* Define if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the `feof_unlocked' function. */
+/* #undef HAVE_FEOF_UNLOCKED */
+
+/* Define if you have the `fgets_unlocked' function. */
+/* #undef HAVE_FGETS_UNLOCKED */
+
+/* Define if your system has a working `fnmatch' function. */
+#define HAVE_FNMATCH 1
+
+/* Define if you have the `fsync' function. */
+#define HAVE_FSYNC 1
+
+/* Define if you have the `ftime' function. */
+/* #undef HAVE_FTIME */
+
+/* Define if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define if getcwd (NULL, 0) allocates memory for result. */
+#define HAVE_GETCWD_NULL 1
+
+/* Define if you have the `getegid' function. */
+#define HAVE_GETEGID 1
+
+/* Define if you have the `geteuid' function. */
+#define HAVE_GETEUID 1
+
+/* Define if you have the `getgid' function. */
+#define HAVE_GETGID 1
+
+/* Define if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define if you have the `getuid' function. */
+#define HAVE_GETUID 1
+
+/* Define if you have the iconv() function. */
+/* #undef HAVE_ICONV */
+
+/* Define if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if you have the `isascii' function. */
+#define HAVE_ISASCII 1
+
+/* Define if you have the `iswprint' function. */
+/* #undef HAVE_ISWPRINT */
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#define HAVE_LANGINFO_CODESET 1
+
+/* Define if you have the `lchown' function. */
+#define HAVE_LCHOWN 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#define HAVE_LC_MESSAGES 1
+
+/* Define if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define if you have the <linux/fd.h> header file. */
+/* #undef HAVE_LINUX_FD_H */
+
+/* Define if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define if you have the `localtime_r' function. */
+#define HAVE_LOCALTIME_R 1
+
+/* Define if you support file names longer than 14 characters. */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if you have the long long type. */
+#define HAVE_LONG_LONG 1
+
+/* Define if you have the `lstat' function. */
+#define HAVE_LSTAT 1
+
+/* Define if you have the <malloc.h> header file. */
+/* #undef HAVE_MALLOC_H */
+
+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
+/* #undef HAVE_MBRTOWC */
+
+/* Define if you have the `mbsinit' function. */
+/* #undef HAVE_MBSINIT */
+
+/* Define if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define if you have the `mempcpy' function. */
+/* #undef HAVE_MEMPCPY */
+
+/* Define if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define if you have the `mkfifo' function. */
+#define HAVE_MKFIFO 1
+
+/* Define to 1 if the mknod function is available. */
+#define HAVE_MKNOD 1
+
+/* Define if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define if you have the `munmap' function. */
+#define HAVE_MUNMAP 1
+
+/* Define if you have the `nap' function. */
+/* #undef HAVE_NAP */
+
+/* Define if you have the `napms' function. */
+/* #undef HAVE_NAPMS */
+
+/* Define if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define if you have the <netdb.h> header file. */
+/* #undef HAVE_NETDB_H */
+
+/* Define if you have the <net/errno.h> header file. */
+/* #undef HAVE_NET_ERRNO_H */
+
+/* Define if you have the <nl_types.h> header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define if you have the `pathconf' function. */
+#define HAVE_PATHCONF 1
+
+/* Define if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define if you have the <poll.h> header file. */
+#define HAVE_POLL_H 1
+
+/* Define if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define if you have the `readlink' function. */
+#define HAVE_READLINK 1
+
+/* Define if you have the `rename' function. */
+#define HAVE_RENAME 1
+
+/* Define if you have the `rmdir' function. */
+#define HAVE_RMDIR 1
+
+/* Define if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define if you have the <sgtty.h> header file. */
+#define HAVE_SGTTY_H 1
+
+/* Define if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define if you have the `stpcpy' function. */
+/* #undef HAVE_STPCPY */
+
+/* Define if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define if you have the `strerror_r' function. */
+#define HAVE_STRERROR_R 1
+
+/* Define if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define if you have the <stropts.h> header file. */
+/* #undef HAVE_STROPTS_H */
+
+/* Define if you have the `strstr' function. */
+#define HAVE_STRSTR 1
+
+/* Define if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define if you have the `strtoull' function. */
+/* #undef HAVE_STRTOULL */
+
+/* Define if you have the `strtoumax' function. */
+#define HAVE_STRTOUMAX 1
+
+/* Define if `st_blksize' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+
+/* Define if `st_blocks' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define if `tm_zone' is member of `struct tm'. */
+#define HAVE_STRUCT_TM_TM_ZONE 1
+
+/* Define if your `struct stat' has `st_blksize'. Deprecated, use
+ `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
+#define HAVE_ST_BLKSIZE 1
+
+/* Define if your `struct stat' has `st_blocks'. Deprecated, use
+ `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
+#define HAVE_ST_BLOCKS 1
+
+/* Define if struct stat has a char st_fstype[] member. */
+/* #undef HAVE_ST_FSTYPE_STRING */
+
+/* Define if you have the `symlink' function. */
+#define HAVE_SYMLINK 1
+
+/* Define if you have the <sys/buf.h> header file. */
+#define HAVE_SYS_BUF_H 1
+
+/* Define if you have the <sys/device.h> header file. */
+/* #undef HAVE_SYS_DEVICE_H */
+
+/* Define if you have the <sys/dir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define if you have the <sys/gentape.h> header file. */
+/* #undef HAVE_SYS_GENTAPE_H */
+
+/* Define if you have the <sys/inet.h> header file. */
+/* #undef HAVE_SYS_INET_H */
+
+/* Define if you have the <sys/ioccom.h> header file. */
+#define HAVE_SYS_IOCCOM_H 1
+
+/* Define if you have the <sys/io/trioctl.h> header file. */
+/* #undef HAVE_SYS_IO_TRIOCTL_H */
+
+/* Define if you have the <sys/mtio.h> header file. */
+#define HAVE_SYS_MTIO_H 1
+
+/* Define if you have the <sys/ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define if you have the <sys/tape.h> header file. */
+/* #undef HAVE_SYS_TAPE_H */
+
+/* Define if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
+/* Define if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define if you have the <sys/tprintf.h> header file. */
+/* #undef HAVE_SYS_TPRINTF_H */
+
+/* Define if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#define HAVE_TM_ZONE 1
+
+/* Define if you have the `tsearch' function. */
+#define HAVE_TSEARCH 1
+
+/* Define if you don't have `tm_zone' but do have the external array `tzname'.
+ */
+/* #undef HAVE_TZNAME */
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if you have the unsigned long long type. */
+#define HAVE_UNSIGNED_LONG_LONG 1
+
+/* Define if you have the `usleep' function. */
+#define HAVE_USLEEP 1
+
+/* Define to 1 if utime.h exists and declares struct utimbuf. */
+#define HAVE_UTIME_H 1
+
+/* Define if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define if you have the `waitpid' function. */
+#define HAVE_WAITPID 1
+
+/* Define if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define if you have the <wctype.h> header file. */
+#define HAVE_WCTYPE_H 1
+
+/* Define to 1 if `strerror_r' returns a string. */
+/* #undef HAVE_WORKING_STRERROR_R */
+
+/* Define if you have the `__argz_count' function. */
+/* #undef HAVE___ARGZ_COUNT */
+
+/* Define if you have the `__argz_next' function. */
+/* #undef HAVE___ARGZ_NEXT */
+
+/* Define if you have the `__argz_stringify' function. */
+/* #undef HAVE___ARGZ_STRINGIFY */
+
+/* Define as const if the declaration of iconv() needs const. */
+/* #undef ICONV_CONST */
+
+/* Define if `major', `minor', and `makedev' are declared in <mkdev.h>. */
+/* #undef MAJOR_IN_MKDEV */
+
+/* Define if `major', `minor', and `makedev' are declared in <sysmacros.h>. */
+/* #undef MAJOR_IN_SYSMACROS */
+
+/* Define to mt_model (v.g., for DG/UX), else to mt_type. */
+#define MTIO_CHECK_FIELD mt_type
+
+/* Name of package */
+#define PACKAGE "tar"
+
+/* Define if the C compiler supports function prototypes. */
+#define PROTOTYPES 1
+
+/* Define to the full path of your rsh, if any. */
+#define REMOTE_SHELL _PATH_RSH
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+/* #undef STACK_DIRECTION */
+
+/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define if your <sys/time.h> declares `struct tm'. */
+/* #undef TM_IN_SYS_TIME */
+
+/* Define to 1 if using the included libintl implementation. */
+/* #undef USE_INCLUDED_LIBINTL */
+
+/* Version number of package */
+#define VERSION "1.13.25"
+
+/* Define if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define unconditionally for setting a GNU environment. */
+#define _GNU_SOURCE 1
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define if on MINIX. */
+/* #undef _MINIX */
+
+/* Define if the system does not provide POSIX.1 features except with this
+ defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Define as `__inline' if that's what the C compiler calls it, or to nothing
+ if it is not supported. */
+/* #undef inline */
+
+/* Define to widest signed type if <inttypes.h> doesn't define. */
+/* #undef intmax_t */
+
+/* Type of major device numbers. */
+#define major_t int
+
+/* Define to rpl_malloc if the replacement function should be used. */
+/* #undef malloc */
+
+/* Define to a type if <wchar.h> does not define. */
+/* #undef mbstate_t */
+
+/* Type of minor device numbers. */
+#define minor_t int
+
+/* Define to rpl_mktime if the replacement function should be used. */
+#define mktime rpl_mktime
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef mode_t */
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to rpl_realloc if the replacement function should be used. */
+/* #undef realloc */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Type of sizes or error indications. */
+/* #undef ssize_t */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+/* Define to widest unsigned type if <inttypes.h> doesn't define. */
+/* #undef uintmax_t */
diff --git a/gnu/usr.bin/tar/doc/Makefile b/gnu/usr.bin/tar/doc/Makefile
new file mode 100644
index 0000000..2d2657d
--- /dev/null
+++ b/gnu/usr.bin/tar/doc/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+INFO= tar
+SRCDIR= ${.CURDIR}/../../../../contrib/tar/doc
+
+.include <bsd.info.mk>
diff --git a/gnu/usr.bin/tar/localedir.h b/gnu/usr.bin/tar/localedir.h
new file mode 100644
index 0000000..da23dbe
--- /dev/null
+++ b/gnu/usr.bin/tar/localedir.h
@@ -0,0 +1 @@
+/* $FreeBSD$ */
diff --git a/gnu/usr.bin/tar/tar.1 b/gnu/usr.bin/tar/tar.1
new file mode 100644
index 0000000..3cc2ea7
--- /dev/null
+++ b/gnu/usr.bin/tar/tar.1
@@ -0,0 +1,573 @@
+.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*-
+.\" See /usr/src/gnu/COPYING for conditions of redistribution
+.\"
+.\" Written by John F. Woods <jfw@jfwhome.funhouse.com>
+.\" Updated by Robert Eckardt <roberte@mep.ruhr-uni-bochum.de>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 23, 2000
+.Os
+.Dt TAR 1
+.Sh NAME
+.Nm tar
+.Nd "tape archiver; manipulate ""tar"" archive files"
+.Sh SYNOPSIS
+.Nm
+.Op Oo Fl Oc Ns Ar bundled-options Ar Args
+.Op Ar gnu-style-flags
+.Op Ar filenames | Fl C Ar directory-name
+.Ar ...
+.Sh DESCRIPTION
+.Nm Tar
+is short for
+.Dq tape archiver ,
+so named for historical reasons; the
+.Nm
+program creates, adds files to, or extracts files from an archive file
+in
+.Nm
+format, called a
+.Ar tarfile .
+A
+.Ar tarfile
+is often a magnetic tape, but can be a floppy diskette or any
+regular disk file.
+.Pp
+The first argument word of the
+.Nm
+command line is usually a command word of bundled function and modifier
+letters, optionally preceded by a dash;
+it must contain exactly one function letter from the set
+.Cm A ,
+.Cm c ,
+.Cm d ,
+.Cm r ,
+.Cm t ,
+.Cm u ,
+.Cm x ,
+for
+.Em append ,
+.Em create ,
+.Em difference ,
+.Em replace ,
+.Em table of contents ,
+.Em update ,
+and
+.Em extract
+(further described below).
+The command word can also contain other function modifiers described below,
+some of which will take arguments from the command line in the order they
+are specified in the command word (review the
+.Sx EXAMPLES
+section).
+Functions and function modifiers can also be specified
+with the GNU argument convention (preceded by two dashes, one function or
+modifier per word.
+Command-line arguments that specify files to
+add to, extract from, or list from an archive may be given as shell
+pattern matching strings.
+.Sh FUNCTIONS
+Exactly one of the following functions must be specified.
+.Pp
+.Bl -tag -width "--concatenate" -compact
+.It Fl A
+.It Fl -catenate
+.It Fl "-concatenate"
+Append the contents of named file, which must itself be a
+.Nm
+archive,
+to the end of the archive (erasing the old end-of-archive block).
+This has the effect of adding the files contained in the named file to
+the first archive, rather than adding the second archive as an element
+of the first.
+.Em Note :
+This option requires a rewritable
+.Ar tarfile ,
+and therefore does not work on quarter-inch cartridge tapes.
+.It Fl c
+.It Fl -create
+Create a new archive (or truncates an old one) and writes the named files
+to it.
+.It Fl d
+.It Fl -diff
+.It Fl -compare
+Find differences between files in the archive and corresponding files in
+the file system.
+.It Fl -delete
+Delete named files from the archive.
+(Does not work on quarter-inch tapes).
+.It Fl r
+.It Fl -append
+Append files to the end of an archive.
+(Does not work on quarter-inch tapes).
+.It Fl t
+.It Fl -list
+List the contents of an archive; if
+.Ar filename
+arguments are given, only those
+files are listed, otherwise the entire table of contents is listed.
+.It Fl u
+.It Fl -update
+Append the named files if the on-disk version has a modification date
+more recent than their copy in the archive (if any).
+Does not work on quarter-inch tapes.
+.It Fl x
+.It Fl -extract
+.It Fl -get
+Extract files from an archive.
+The owner, modification time, and file permissions are restored, if possible.
+If no
+.Ar file
+arguments are given, extract all the files in the archive.
+If a
+.Ar filename
+argument matches the name of a directory on the tape, that directory and
+its contents are extracted (as well as all directories under that directory).
+If the archive contains multiple entries corresponding to the same file
+(see the
+.Fl -append
+command above), the last one extracted will overwrite all earlier versions.
+.El
+.Sh OPTIONS
+The other options to
+.Nm
+may be combined arbitrarily; single-letter options may be bundled in with
+the command word.
+Verbose options which take arguments will be
+followed by the argument; single-letter options will consume
+successive command line arguments (see the
+.Sx EXAMPLES
+below).
+.Pp
+.Bl -tag -width "--preserve-permissions" -compact
+.It Fl -help
+Prints a message listing and briefly describing all the command
+options to
+.Nm .
+.It Fl -atime-preserve
+Restore the access times on files which are written to tape (note that
+this will change the inode-change time!).
+.It Fl b
+.It Fl -block-size Ar number
+Sets the block size for reading or writing to
+.Ar number
+* 512-byte blocks.
+.It Fl B
+.It Fl -read-full-blocks
+Re-assemble short reads into full blocks (for reading
+.Bx 4.2
+pipes).
+.It Fl C Ar directory
+.It Fl -directory Ar directory
+Change to
+.Ar directory
+before processing the remaining arguments.
+.It Fl -checkpoint
+Print number of buffer reads/writes while reading/writing the archive.
+.It Fl f Xo
+.Oo Ar hostname : Oc Ns Ar file
+.Xc
+.It Fl -file Xo
+.Oo Ar hostname : Oc Ns Ar file
+.Xc
+Read or write the specified
+.Ar file
+(default is
+.Pa /dev/sa0 ) .
+If a
+.Ar hostname
+is specified,
+.Nm
+will use
+.Xr rmt 8
+to read or write the specified
+.Ar file
+on a remote machine.
+.Dq Ar -
+may be used as a filename, for reading
+or writing to/from stdin/stdout.
+.It Fl -force-local
+Archive file is local even if it has a colon.
+.It Fl F Ar file
+.It Fl -info-script Ar file
+.It Fl -new-volume-script Ar file
+Run a script at the end of each archive volume (implies
+.Fl M ) .
+.It Fl -fast-read
+Stop after all non-wildcard extraction targets have been found
+in the archive.
+.It Fl G
+.It Fl -incremental
+Create/list/extract old GNU-format incremental backup.
+.It Fl g Ar file
+.It Fl -listed-incremental Ar file
+Create/list/extract new GNU-format incremental backup.
+.It Fl h
+.It Fl -dereference
+Don't write symlinks as symlinks; write the data of the files they name.
+.It Fl i
+.It Fl -ignore-zeros
+Ignore blocks of zeroes in archive (usually means End-Of-File).
+.It Fl -ignore-failed-read
+Don't exit with non-zero status on unreadable files.
+.It Fl j
+.It Fl y
+.It Fl -bzip
+.It Fl -bzip2
+.It Fl -bunzip2
+Filter the archive through
+.Xr bzip2 1 .
+.It Fl k
+.It Fl -keep-old-files
+Keep files which already exist on disk; don't overwrite them from the archive.
+.It Fl K Ar file
+.It Fl -starting-file Ar file
+Begin at
+.Ar file
+in the archive.
+.It Fl l
+.It Fl -one-file-system
+Stay in local filesystem when creating an archive (do not cross mount
+points).
+.It Fl L Ar number
+.It Fl -tape-length Ar number
+Change tapes after writing
+.Ar number
+* 1024 bytes.
+.It Fl m
+.It Fl -modification-time
+Don't extract file modified time.
+.It Fl M
+.It Fl -multi-volume
+Create/list/extract multi-volume archive.
+.It Fl n
+.It Fl -norecurse
+Don't recurse into subdirectories when creating.
+.It Fl -volno-file Ar file
+File name with volume number to start with.
+.It Fl N Ar date
+.It Fl -after-date Ar date
+.It Fl -newer Ar date
+Only store files with creation time newer than
+.Ar date .
+.It Fl -newer-mtime Ar date
+Only store files with modification time newer than
+.Ar date .
+.It Fl o
+.It Fl -old-archive
+.It Fl -portability
+Write a V7 format archive, rather than POSIX format.
+.It Fl O
+.It Fl -to-stdout
+Extract files to standard output.
+.It Fl p
+.It Fl -same-permissions
+.It Fl -preserve-permissions
+Extract all protection information.
+.It Fl -preserve
+Has the effect of
+.Fl p s .
+.It Fl P
+.It Fl -absolute-paths
+Don't strip leading
+.Ql /
+from file names.
+.It Fl R
+.It Fl -record-number
+Show record number within archive with each message.
+.It Fl -remove-files
+Remove files after adding them to the archive.
+.It Fl s
+.It Fl -same-order
+.It Fl -preserve-order
+List of names to extract is sorted to match archive.
+.It Fl -show-omitted-dirs
+Show directories which were omitted while processing the archive.
+.It Fl S
+.It Fl -sparse
+Handle
+.Dq sparse
+files efficiently.
+.It Fl T Ar file
+.It Fl I Ar file
+.It Fl -files-from Ar file
+Get names of files to extract or create from
+.Ar file ,
+one per line.
+.It Fl -null
+Modifies behavior of
+.Fl T
+to expect null-terminated names; disables
+.Fl C .
+.It Fl -totals
+Prints total bytes written with
+.Fl -create .
+.It Fl U
+.It Fl -unlink
+.It Fl -unlink-first
+Unlink files before creating them.
+.It Fl v
+.It Fl -verbose
+Lists files written to archive with
+.Fl -create
+or extracted with
+.Fl -extract ;
+lists file protection information along with file names with
+.Fl -list .
+.It Fl V Ar volume-name
+.It Fl -label Ar volume-name
+Create archive with the given
+.Ar volume-name .
+.It Fl -version
+Print
+.Nm
+program version number.
+.It Fl w
+.It Fl -interactive
+.It Fl -confirmation
+Ask for confirmation for every action.
+.It Fl W
+.It Fl -verify
+Attempt to verify the archive after writing it.
+.It Fl -exclude Ar pattern
+Exclude files matching the
+.Ar pattern
+(don't extract them, don't add them, don't list them).
+.It Fl X Ar file
+.It Fl -exclude-from Ar file
+Exclude files listed in
+.Ar file .
+.It Fl Z
+.It Fl -compress
+.It Fl -uncompress
+Filter the archive through
+.Xr compress 1 .
+.It Fl z
+.It Fl -gzip
+.It Fl -gunzip
+Filter the archive through
+.Xr gzip 1 .
+.It Fl -use-compress-program Ar program
+Filter the archive through
+.Ar program
+(which must accept
+.Fl d
+to mean
+.Dq decompress ) .
+.It Fl -block-compress
+Block the output of compression program for tapes or floppies
+(otherwise writes will be of odd length, which device drivers may reject).
+.It Fl Xo
+.Op Cm 0 Ns - Ns Cm 7 Ns
+.Op Cm lmh
+.Xc
+Specify tape drive and density.
+.El
+.Sh ENVIRONMENT
+The environment variable
+.Ev TAR_OPTIONS
+can hold a set of default options for
+.Nm .
+These options are interpreted first and can be overwritten by explicit command
+line parameters.
+.Sh EXAMPLES
+To create an archive on tape drive
+.Pa /dev/sa0
+with a block size of 20 blocks, containing files named
+.Pa bert
+and
+.Pa ernie ,
+you can enter
+.Dl "tar cfb /dev/sa0 20 bert ernie"
+or
+.Dl "tar --create --file /dev/sa0 --block-size 20 bert ernie"
+Note that the
+.Fl f
+and
+.Fl b
+flags both require arguments, which they take from the command line in
+the order they were listed in the command word.
+.Pp
+Because
+.Pa /dev/sa0
+is the default device, and 20 is the default block
+size, the above example could have simply been
+.Dl "tar c bert ernie"
+.Pp
+To extract all the C sources and headers from an archive named
+.Pa backup.tar ,
+type
+.Dl "tar xf backup.tar '*.[ch]'"
+Note that the pattern must be quoted to prevent the shell from
+attempting to expand it according the files in the current working
+directory (the shell does not have access to the list of files in
+the archive, of course).
+.Pp
+To move file hierarchies, use a command line like this:
+.Bd -literal
+tar -cf - -C srcdir . | tar xpf - -C destdir
+.Ed
+.Pp
+To create a compressed archive on diskette, using
+.Xr gzip 1 ,
+use a command-line like
+.Dl "tar --block-compress -z -c -v -f /dev/fd1a -b 36 tar/"
+.Pp
+Note that you cannot mix bundled flags and
+.Fl -style
+flags; you can use
+single-letter flags in the manner above, rather than having to type
+.Dl "tar --block-compress --gzip --verbose --file /dev/fd1a --block-size 20 tar/"
+.Pp
+The above-created diskette can be listed with
+.Dl "tar tvfbz /dev/fd1a 36"
+.Pp
+To join two
+.Nm
+archives into a single archive, use
+.Dl "tar Af archive1.tar archive2.tar"
+which will add the files contained in
+.Pa archive2.tar
+onto the end of
+.Pa archive1.tar
+(note that this can't be done by simply typing
+.Dl "cat archive2.tar >> archive1.tar"
+because of the end-of-file block at the end of a
+.Nm
+archive).
+.Pp
+To archive all files from the directory
+.Pa srcdir ,
+which were modified
+after Feb. 9th 1997, 13:00 h, use
+.Dl "tar -c -f backup.tar --newer-mtime 'Feb 9 13:15 1997' srcdir/"
+.Pp
+Other possible time specifications are
+.Sq "02/09/97 13:15" ,
+.Sq "1997-02-09 13:15" ,
+.Sq "13:15 9 Feb 1997" ,
+.Sq "9 Feb 1997 13:15" ,
+.Sq "Feb. 9, 1997 1:15pm" ,
+.Sq "09-Feb" ,
+.Sq "3 weeks ago"
+or
+.Sq "May first Sunday" .
+To specify the correct time zone use either e.g.\&
+.Sq "13:15 CEST"
+or
+.Sq "13:15+200" .
+.Sh ENVIRONMENT
+The
+.Nm
+program examines the following environment variables.
+.Bl -tag -width "POSIXLY_CORRECT"
+.It Ev POSIXLY_CORRECT
+Normally,
+.Nm
+will process flag arguments that appear in the file list.
+If set in the environment, this causes
+.Nm
+to consider the first
+non-flag argument to terminate flag processing, as per the POSIX specification.
+.It Ev SHELL
+In interactive mode, a permissible response to the prompt is to
+request to spawn a subshell, which will be
+.Pa /bin/sh
+unless the
+.Ev SHELL
+variable is set.
+.It Ev TAPE
+Changes
+.Nm Ns 's
+default tape drive (which is still overridden by the
+.Fl f
+flag).
+.It TAR_RSH
+The TAR_RSH environment variable allows you to override the default
+shell used as the transport for
+.Nm .
+.El
+.Sh FILES
+.Bl -tag -width "/dev/sa0"
+.It Pa /dev/sa0
+The default tape drive.
+.El
+.Sh COMPATIBILITY
+The
+.Fl y
+is a
+.Fx
+localism.
+The GNU
+.Nm
+maintainer has now choosen
+.Fl j
+as the offical
+.Xr bzip2 1
+compression option in GNU
+.Nm
+1.13.18 and later.
+The
+.Fl I
+option is for compatibility with Solaris's
+.Nm .
+.Sh SEE ALSO
+.Xr bzip2 1 ,
+.Xr compress 1 ,
+.Xr gzip 1 ,
+.Xr pax 1 ,
+.Xr rmt 8
+.Sh HISTORY
+The
+.Nm
+format has a rich history, dating back to Sixth Edition
+.Ux .
+The current implementation of
+.Nm
+is the GNU implementation, which
+originated as the public-domain
+.Nm
+written by
+.An John Gilmore .
+.Sh AUTHORS
+.An -nosplit
+A cast of thousands, including [as listed in the
+.Pa ChangeLog
+file in the source]
+.An John Gilmore
+(author of original public domain version),
+.An Jay Fenlason
+(first GNU author),
+.An Joy Kendall ,
+.An Jim Kingdon ,
+.An David J. MacKenzie ,
+.An Michael I Bushnell ,
+.An Noah Friedman ,
+and innumerable others who have contributed fixes and additions.
+.Pp
+Man page obtained by the
+.Fx
+group from the
+.Nx 1.0
+release.
+.Sh BUGS
+The
+.Fl C
+feature does not work like historical
+.Nm
+programs, and is probably untrustworthy.
+.Pp
+The
+.Fl A
+command should work to join an arbitrary number of
+.Nm
+archives
+together, but it does not; attempting to do so leaves the
+end-of-archive blocks in place for the second and subsequent archives.
+.Pp
+The
+.Nm
+file format is a semi fixed width field format, and the field
+for device numbers were designed for 16 bit (8 major, 8 minor)
+and can not absorb our 32 bit (8 major, 16+8 minor) numbers.
OpenPOWER on IntegriCloud