]> git.cworth.org Git - tar/commitdiff
Imported Upstream version 1.24
authorBdale Garbee <bdale@gag.com>
Mon, 1 Nov 2010 23:20:21 +0000 (17:20 -0600)
committerBdale Garbee <bdale@gag.com>
Mon, 1 Nov 2010 23:20:21 +0000 (17:20 -0600)
472 files changed:
COPYING
ChangeLog
ChangeLog.1
Makefile.am
Makefile.in
NEWS
README
THANKS
aclocal.m4
build-aux/c++defs.h
build-aux/config.guess
build-aux/config.sub
build-aux/depcomp
build-aux/mdate-sh
build-aux/texinfo.tex
build-aux/warn-on-use.h
config.h.in
configure
configure.ac
doc/Makefile.am
doc/Makefile.in
doc/dumpdir.texi
doc/fdl.texi
doc/gendocs_template
doc/getdate.texi [deleted file]
doc/intern.texi
doc/mastermenu.el
doc/parse-datetime.texi [new file with mode: 0644]
doc/snapshot.texi
doc/sparse.texi
doc/stamp-vti
doc/tar-snapshot-edit.texi
doc/tar.info
doc/tar.info-1
doc/tar.info-2
doc/tar.texi
doc/value.texi
doc/version.texi
gnu/Makefile.am
gnu/Makefile.in
gnu/anytostr.c [new file with mode: 0644]
gnu/areadlink-with-size.c [deleted file]
gnu/areadlink.c [new file with mode: 0644]
gnu/areadlinkat.c [new file with mode: 0644]
gnu/argp-help.c
gnu/argp-namefrob.h
gnu/at-func2.c [new file with mode: 0644]
gnu/btowc.c
gnu/canonicalize-lgpl.c [new file with mode: 0644]
gnu/canonicalize.c [deleted file]
gnu/canonicalize.h [deleted file]
gnu/chdir-long.c
gnu/cloexec.c [new file with mode: 0644]
gnu/cloexec.h [new file with mode: 0644]
gnu/close-stream.c
gnu/config.charset
gnu/dirent.in.h
gnu/errno.in.h
gnu/error.c
gnu/exclude.c
gnu/fcntl.in.h
gnu/fdopendir.c
gnu/fdutimensat.c [new file with mode: 0644]
gnu/file-set.c [deleted file]
gnu/file-set.h [deleted file]
gnu/filenamecat-lgpl.c [new file with mode: 0644]
gnu/filenamecat.h [new file with mode: 0644]
gnu/float+.h
gnu/float.in.h
gnu/fseeko.c
gnu/ftruncate.c [deleted file]
gnu/futimens.c [new file with mode: 0644]
gnu/getcwd.c
gnu/getdate.c [deleted file]
gnu/getdate.h [deleted file]
gnu/getdate.y [deleted file]
gnu/getopt.c
gnu/getopt.in.h
gnu/getopt_int.h
gnu/gettext.h
gnu/hash-pjw.c [deleted file]
gnu/hash-pjw.h [deleted file]
gnu/hash-triple.c [deleted file]
gnu/hash-triple.h [deleted file]
gnu/hash.c
gnu/hash.h
gnu/imaxtostr.c
gnu/inttostr.c
gnu/inttostr.h
gnu/inttypes.in.h
gnu/langinfo.in.h
gnu/lchown.c
gnu/link.c [new file with mode: 0644]
gnu/linkat.c [new file with mode: 0644]
gnu/localcharset.c
gnu/malloc.c
gnu/malloca.c
gnu/mkdir.c
gnu/mkfifo.c [new file with mode: 0644]
gnu/mkfifoat.c [new file with mode: 0644]
gnu/mknod.c [new file with mode: 0644]
gnu/mknodat.c [new file with mode: 0644]
gnu/nl_langinfo.c
gnu/obstack.h
gnu/offtostr.c
gnu/open.c
gnu/openat-proc.c
gnu/openat.c
gnu/openat.h
gnu/parse-datetime.c [new file with mode: 0644]
gnu/parse-datetime.h [new file with mode: 0644]
gnu/parse-datetime.y [new file with mode: 0644]
gnu/priv-set.c
gnu/priv-set.h
gnu/readlinkat.c [new file with mode: 0644]
gnu/realloc.c
gnu/regcomp.c
gnu/regex.h
gnu/regex_internal.c
gnu/regex_internal.h
gnu/rename.c [new file with mode: 0644]
gnu/renameat.c [new file with mode: 0644]
gnu/rmdir.c
gnu/same.c [deleted file]
gnu/same.h [deleted file]
gnu/save-cwd.c
gnu/savedir.c
gnu/savedir.h
gnu/setenv.c
gnu/stdarg.in.h
gnu/stdbool.in.h
gnu/stddef.in.h
gnu/stdint.in.h
gnu/stdio-impl.h
gnu/stdio-write.c
gnu/stdio.in.h
gnu/stdlib.in.h
gnu/strerror.c
gnu/string.in.h
gnu/strings.in.h
gnu/strtol.c
gnu/symlink.c [new file with mode: 0644]
gnu/symlinkat.c [new file with mode: 0644]
gnu/sys_stat.in.h
gnu/sys_time.in.h
gnu/sysexits.in.h
gnu/time.in.h
gnu/time_r.c
gnu/timespec.h
gnu/uinttostr.c
gnu/umaxtostr.c
gnu/unistd.in.h
gnu/unitypes.h [deleted file]
gnu/unitypes.in.h [new file with mode: 0644]
gnu/uniwidth.h [deleted file]
gnu/uniwidth.in.h [new file with mode: 0644]
gnu/uniwidth/width.c
gnu/unlink.c
gnu/utimens.c
gnu/utimens.h
gnu/utimensat.c [new file with mode: 0644]
gnu/vasnprintf.c
gnu/verify.h
gnu/wchar.in.h
gnu/wctype.in.h
gnu/wcwidth.c
gnu/xalloc.h
gnu/xmalloc.c
lib/Makefile.am
lib/Makefile.in
lib/paxerror.c
lib/paxlib.h
lib/rtapelib.c
m4/argp.m4
m4/asm-underscore.m4 [new file with mode: 0644]
m4/bison.m4
m4/btowc.m4
m4/chown.m4
m4/cloexec.m4 [new file with mode: 0644]
m4/codeset.m4
m4/dirent_h.m4
m4/dirfd.m4
m4/environ.m4
m4/errno_h.m4
m4/error.m4
m4/fchdir.m4
m4/fcntl-o.m4
m4/fcntl_h.m4
m4/fdopendir.m4
m4/filenamecat.m4 [new file with mode: 0644]
m4/float_h.m4
m4/fnmatch.m4
m4/fseeko.m4
m4/ftruncate.m4 [deleted file]
m4/futimens.m4 [new file with mode: 0644]
m4/getcwd-path-max.m4
m4/getdate.m4 [deleted file]
m4/getopt.m4
m4/getpagesize.m4
m4/gettext.m4
m4/gnulib-common.m4
m4/gnulib-comp.m4
m4/iconv.m4
m4/include_next.m4
m4/intlmacosx.m4
m4/intmax_t.m4
m4/inttostr.m4
m4/inttypes-pri.m4
m4/inttypes.m4
m4/inttypes_h.m4
m4/langinfo_h.m4
m4/lib-ld.m4
m4/lib-link.m4
m4/libunistring-base.m4 [new file with mode: 0644]
m4/link-follow.m4 [new file with mode: 0644]
m4/link.m4 [new file with mode: 0644]
m4/linkat.m4 [new file with mode: 0644]
m4/locale-fr.m4
m4/locale-ja.m4
m4/locale-zh.m4
m4/lseek.m4
m4/lstat.m4
m4/malloc.m4
m4/mbrtowc.m4
m4/mbsinit.m4
m4/mbsrtowcs.m4
m4/memchr.m4
m4/mkfifo.m4 [new file with mode: 0644]
m4/mkfifoat.m4 [new file with mode: 0644]
m4/mknod.m4 [new file with mode: 0644]
m4/mktime.m4
m4/open.m4
m4/openat.m4
m4/parse-datetime.m4 [new file with mode: 0644]
m4/po.m4
m4/printf.m4
m4/priv-set.m4
m4/progtest.m4
m4/readlinkat.m4 [new file with mode: 0644]
m4/realloc.m4
m4/regex.m4
m4/rename.m4 [new file with mode: 0644]
m4/renameat.m4 [new file with mode: 0644]
m4/rmdir.m4
m4/same.m4 [deleted file]
m4/setenv.m4
m4/size_max.m4
m4/ssize_t.m4
m4/stat.m4
m4/stdarg.m4
m4/stdbool.m4
m4/stddef_h.m4
m4/stdint.m4
m4/stdint_h.m4
m4/stdio_h.m4
m4/stdlib_h.m4
m4/strdup.m4
m4/string_h.m4
m4/strings_h.m4
m4/strndup.m4
m4/strnlen.m4
m4/symlink.m4 [new file with mode: 0644]
m4/symlinkat.m4 [new file with mode: 0644]
m4/sys_stat_h.m4
m4/sys_time_h.m4
m4/time_h.m4
m4/time_r.m4
m4/unistd_h.m4
m4/unlink.m4
m4/utimensat.m4 [new file with mode: 0644]
m4/vasnprintf.m4
m4/wchar_h.m4
m4/wchar_t.m4
m4/wcrtomb.m4
m4/wctype_h.m4
m4/wcwidth.m4
m4/wint_t.m4
po/LINGUAS
po/Makevars
po/bg.gmo
po/bg.po
po/ca.gmo [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/cs.gmo
po/cs.po
po/da.gmo
po/da.po
po/de.gmo
po/de.po
po/el.gmo
po/el.po
po/es.gmo
po/es.po
po/et.gmo
po/et.po
po/eu.gmo
po/eu.po
po/fi.gmo
po/fi.po
po/fr.gmo
po/fr.po
po/ga.gmo
po/ga.po
po/gl.gmo
po/gl.po
po/hr.gmo
po/hr.po
po/hu.gmo
po/hu.po
po/id.gmo
po/id.po
po/it.gmo
po/it.po
po/ja.gmo
po/ja.po
po/ko.gmo
po/ko.po
po/ky.gmo
po/ky.po
po/ms.gmo
po/ms.po
po/nb.gmo
po/nb.po
po/nl.gmo
po/nl.po
po/pl.gmo
po/pl.po
po/pt.gmo
po/pt.po
po/pt_BR.gmo
po/pt_BR.po
po/ro.gmo
po/ro.po
po/ru.gmo
po/ru.po
po/sk.gmo
po/sk.po
po/sl.gmo
po/sl.po
po/sv.gmo
po/sv.po
po/tar.pot
po/tr.gmo
po/tr.po
po/uk.gmo
po/uk.po
po/vi.gmo
po/vi.po
po/zh_CN.gmo
po/zh_CN.po
po/zh_TW.gmo
po/zh_TW.po
rmt/Makefile.in
rmt/rmt.c
scripts/Makefile.in
scripts/backup-specs
scripts/dump-remind.in
src/Makefile.am
src/Makefile.in
src/arith.h
src/buffer.c
src/checkpoint.c
src/common.h
src/compare.c
src/create.c
src/delete.c
src/exit.c
src/extract.c
src/incremen.c
src/list.c
src/misc.c
src/names.c
src/sparse.c
src/suffix.c
src/system.c
src/tar.c
src/tar.h
src/transform.c
src/unlink.c
src/update.c
src/warning.c
src/xheader.c
tests/Makefile.am
tests/Makefile.in
tests/append01.at
tests/append02.at
tests/atlocal.in
tests/backup01.at
tests/chtype.at
tests/comprec.at
tests/delete03.at
tests/exclude.at
tests/exclude06.at [new file with mode: 0644]
tests/extrac01.at
tests/extrac03.at
tests/extrac04.at
tests/extrac05.at
tests/extrac06.at
tests/extrac07.at
tests/extrac08.at
tests/extrac09.at [new file with mode: 0644]
tests/extrac10.at [new file with mode: 0644]
tests/extrac11.at [new file with mode: 0644]
tests/extrac12.at [new file with mode: 0644]
tests/extrac13.at [new file with mode: 0644]
tests/extrac14.at [new file with mode: 0644]
tests/extrac15.at [new file with mode: 0644]
tests/filerem01.at
tests/filerem02.at
tests/genfile.c
tests/gzip.at
tests/incr01.at
tests/incr02.at
tests/incr03.at
tests/incr06.at
tests/label02.at
tests/label03.at [new file with mode: 0644]
tests/label04.at [new file with mode: 0644]
tests/label05.at [new file with mode: 0644]
tests/link01.at
tests/link02.at
tests/link03.at
tests/link04.at [new file with mode: 0644]
tests/listed01.at
tests/listed02.at
tests/listed03.at [new file with mode: 0644]
tests/long01.at
tests/longv7.at
tests/multiv01.at
tests/multiv02.at
tests/multiv03.at
tests/multiv05.at
tests/multiv06.at
tests/multiv07.at
tests/multiv08.at [new file with mode: 0644]
tests/options.at
tests/options02.at
tests/package.m4
tests/pipe.at
tests/remfiles01.at
tests/remfiles03.at [new file with mode: 0644]
tests/rename01.at
tests/rename02.at
tests/rename03.at
tests/rename04.at
tests/rename05.at
tests/same-order01.at
tests/same-order02.at
tests/shortfile.at
tests/shortupd.at
tests/sigpipe.at [new file with mode: 0644]
tests/sparse01.at
tests/sparse02.at
tests/sparsemv.at
tests/sparsemvp.at
tests/spmvp00.at
tests/spmvp10.at
tests/star/README
tests/star/gtarfail2.at
tests/star/multi-fail.at
tests/star/pax-big-10g.at
tests/star/quicktest.sh
tests/star/ustar-big-2g.at
tests/star/ustar-big-8g.at
tests/testsuite
tests/testsuite.at
tests/update01.at
tests/update02.at
tests/volsize.at
tests/volume.at
tests/xform-h.at
tests/xform01.at [new file with mode: 0644]

diff --git a/COPYING b/COPYING
index 443254047416efc10bc53cb1adb5421680d5a647..94a9ed024d3859793618152ea559a168bbcbb5e2 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,12 +1,11 @@
-
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 3, 29 June 2007
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
 
  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-                           Preamble
+                            Preamble
 
   The GNU General Public License is a free, copyleft license for
 software and other kinds of works.
@@ -69,7 +68,7 @@ patents cannot be used to render the program non-free.
   The precise terms and conditions for copying, distribution and
 modification follow.
 
-                      TERMS AND CONDITIONS
+                       TERMS AND CONDITIONS
 
   0. Definitions.
 
@@ -77,7 +76,7 @@ modification follow.
 
   "Copyright" also means copyright-like laws that apply to other kinds of
 works, such as semiconductor masks.
+
   "The Program" refers to any copyrightable work licensed under this
 License.  Each licensee is addressed as "you".  "Licensees" and
 "recipients" may be individuals or organizations.
@@ -510,7 +509,7 @@ actual knowledge that, but for the patent license, your conveying the
 covered work in a country, or your recipient's use of the covered work
 in a country, would infringe one or more identifiable patents in that
 country that you have reason to believe are valid.
-  
+
   If, pursuant to or in connection with a single transaction or
 arrangement, you convey, or propagate by procuring conveyance of, a
 covered work, and grant a patent license to some of the parties
@@ -619,9 +618,9 @@ an absolute waiver of all civil liability in connection with the
 Program, unless a warranty or assumption of liability accompanies a
 copy of the Program in return for a fee.
 
-                    END OF TERMS AND CONDITIONS
+                     END OF TERMS AND CONDITIONS
 
-           How to Apply These Terms to Your New Programs
+            How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
@@ -673,4 +672,3 @@ may consider it more useful to permit linking proprietary applications with
 the library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.  But first, please read
 <http://www.gnu.org/philosophy/why-not-lgpl.html>.
-
index 23bef2daf61be085019cf9f5bb0d705739702e19..55d521abff46a1766bf4d8c08971fc9bcaef4752 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2010-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.24
+       * configure.ac, NEWS: Version 1.24
+       * bootstrap: Restore tar-specific code lost during last
+       sync from gnulib (241b72ffad).
+       * src/misc.c (chdir_do): Remove unused automatic variable.
+
+2010-10-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: use more-accurate diagnostic when intermediate mkdir fails
+       Without this change, if tar tried to extract a file A/B/C, noticed
+       that A/B didn't exist, attempted to mkdir A/B, and the mkdir
+       failed, it did not diagnose the mkdir failure, but simply reported
+       the failure to open A/B/C.  This sometimes led to confusion
+       because it wasn't clear what tar was trying to do, in particular
+       that tar tried to mkdir A/B.  With this patch, tar issues two
+       diagnostics in this case: one for A/B and the other for A/B/C.
+       Problem reported by Hauke Laging in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00020.html>.
+       * gnulib.modules: Remove faccessat.
+       * src/extract.c (make_directories): New arg INTERDIR_MADE.
+       Diagnose mkdir failure.  Return 0 on success, nonzero on failure,
+       as opposed to nonzero iff some directory was created.  All callers
+       changed.  Simplify the code when mkdir fails, by checking whether
+       the desired file exists unless errno==EEXIST: this is more robust.
+       * tests/extrac15.at: New test, to check this.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+       tests: port to NFS file servers with clock skew
+       Several of the tests assumed that a newly created file cannot
+       have a time stamp dated in the future.  This assumption is not
+       true when files are served by a remote host whose clock is
+       slightly in advance of ours.  Fix the problems that I observed
+       when running "make check" a couple of times on such a server.
+
+       * tests/backup01.at: Use --warning=no-timestamp to suppress
+       clock-skew warnings.
+       * tests/chtype.at, tests/comprec.at, tests/exclude06.at:
+       * tests/extrac01.at, tests/extrac03.at, tests/extrac05.at:
+       * tests/extrac06.at, tests/extrac08.at, tests/extrac13.at:
+       * tests/extrac14.at, tests/incr01.at, tests/incr03.at,
+       tests/link01.at:
+       * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at:
+       * tests/pipe.at, tests/rename02.at, tests/rename03.at:
+       * tests/rename05.at, tests/same-order01.at, tests/same-order02.at:
+       * tests/sparse01.at:
+       Likewise.
+
+2010-10-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       gnulib: sync from latest gnulib, notably bootstrap and
+       parse-datetime
+       * bootstrap: Sync from gnulib.
+       * doc/.gitignore: Rename getdate.texi to parse-datetime.texi.
+       * doc/Makefile.am (tar_TEXINFOS): Likewise.
+       * doc/tar.texi (Top): Adjust to renaming of getdate to
+       parse-datetime.
+       * gnulib.modules: Likewise.  Also, remove ftruncate (now
+       obsolete).
+       And add inttostr (we missed this dependency).
+       * src/tar.c: Include parse-datetime.h, not getdate.h.  All calls
+       to get_date replaced with parse_datetime.
+
+2010-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: -x -C symlink fix
+       * src/misc.c (chdir_do): Don't use O_NOFOLLOW when opening the
+       argument to -C.  This is for consistency with "tar -c -C FOO", and
+       matches the new documentation.
+       * tests/extrac14.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+       tar: --dereference consistency
+       This closes another race condition, that occurs when overwriting a
+       symlink with a regular file.
+       * NEWS (--dereference consistency): New section.
+       * doc/tar.texi (Option Summary): Describe new --deference
+       behavior.
+       (dereference): Likewise.  Remove discussion that I didn't follow,
+       even before --dereference was changed.
+       * src/common.h (deref_stat, set_file_atime): Adjust signatures.
+       * src/compare.c (diff_file, diff_multivol): Respect
+       open_read_flags
+       instead of rolling our own flags.  This implements the new
+       behavior
+       for --dereference.
+       (diff_file, diff_dumpdir): Likewise, for fstatat_flags.
+       * src/create.c: Adjust to set_file_atime signature change.
+       * src/extract.c (mark_after_links, file_newer_p, extract_dir):
+       Likewise.
+       * src/incremen.c (try_purge_directory): Likewise.
+       * src/misc.c (maybe_backup_file): Likewise.
+       * src/extract.c (file_newer_p): New arg STP.  All callers changed.
+       (maybe_recoverable): New arg REGULAR.  All callers changed.
+       Handle the case of overwriting a symlink with a regular file,
+       when --overwrite is specified but --dereference is not.
+       (open_output_file): Add O_CLOEXEC, O_NOCTTY, O_NONBLOCK for
+       consistency with file creation.  Add O_NOFOLLOW if
+       overwriting_old_files && ! dereference_option.
+       * src/incremen.c (update_parent_directory): Use fstat, not
+       fstatat;
+       there's less to go wrong.
+       * src/misc.c (deref_stat): Remove DEREF arg.  All callers changed.
+       Instead, use fstatat_flags.
+       (set_file_atime): Remove ATFLAG arg.  All callers changed.
+       Instead, use fstatat_flags.
+       * src/names.c, src/update.c: Adjust to deref_stat signature
+       change.
+       * src/tar.c (get_date_or_file): Use stat, not deref_stat, as this
+       is not a file to be archived.
+       * tests/Makefile.am (TESTSUITE_AT): Add extrac13.at.
+       * tests/extrac13.at: New file.
+       * tests/testsuite.at: Include it.
+
+2010-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: do not crash with --listed-incremental
+       Problem reported by Frantisek Hanzlik in
+       <https://bugzilla.redhat.com/635318> via Kamil Dudka in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-09/msg00066.html>.
+       I don't understand this code either, but Sergey can take a look at
+       this patch, and perhaps install a better one, when he has
+       the time.
+       * src/incremen.c (append_incremental_renames): Don't actually
+       append
+       anything to DIR if DIR is null.
+
+2010-09-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: prefer openat-style functions
+       This change replaces traditional functions like 'open' with the
+       POSIX.1-2008 functions like 'openat'.  Mostly this is an internal
+       refactoring change, in preparation for further changes to close
+       some races.
+       * gnulib.modules: Add faccessat, linkat, mkfifoat, renameat,
+       symlinkat.
+       Remove save-cwd.
+       * src/Makefile.am (tar_LDADD): Add $(LIB_EACCESS).
+       * tests/Makefile.am (LDADD): Likewise.
+       * src/common.h (chdir_fd): New extern var.
+       * src/compare.c (diff_file, diff_multivol): Use openat instead
+       of open.
+       * src/create.c (create_archive, restore_parent_fd): Likewise.
+       * src/extract.c (create_placeholder_file): Likewise.
+       * src/names.c (collect_and_sort_names): Likewise.
+       * src/update.c (append_file): Likewise.
+       * src/compare.c (diff_symlink): Use readlinkat instead of
+       readlink.
+       * src/compare.c (diff_file): Use chdir_fd instead of AT_FDCWD.
+       * src/create.c (subfile_open, dump_file0): Likewise.
+       * src/extract.c (fd_chmod, fd_chown, fd_stat, set_stat):
+       (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat):
+       Likewise.
+       * src/extract.c (mark_after_links, file_newer_p, extract_dir):
+       (extract_link, apply_delayed_links):
+       Use fstatat rather than stat or lstat.
+       * src/misc.c (maybe_backup_file, deref_stat): Likewise.
+       * src/extract.c (make_directories): Use mkdirat rather than mkdir.
+       Use faccessat rather than access.  This fixes a minor permissions
+       bug when tar is running setuid (who would want to do that?!).
+       (open_output_file): Use openat rather than open.
+       In the process, this removes support for Masscomp's O_CTG files,
+       which aren't compatible with openat's signature.  Masscomp!  Wow!
+       That's a blast from the past.  As far as I know, that operating
+       system hasn't been supported for more than 20 years.
+       (extract_link, apply_delayed_links):
+       Use linkat rather than link.
+       (extract_symlink, apply_delayed_links):
+       Use symlinkat rather than symlink.
+       (extract_node): Use mknodat rather than mknod.
+       (extract_fifo): Use mkfifoat rather than mkfifo.
+       (apply_delayed_links): Use unlinkat rather than unlink or rmdir.
+       * src/misc.c (safer_rmdir, remove_any_file): Likewise.
+       * src/unlink.c (flush_deferred_unlinks): Likewise.
+       * src/extract.c (rename_directory): Use renameat rather than
+       rename.
+       * src/misc.c (maybe_backup_file, undo_last_backup): Likewise.
+       * src/misc.c: Don't include <save-cwd.h>; no longer needed now
+       that we're using openat etc.
+       (struct wd): Add member fd.  Remove members err and fd.  All uses
+       changed.
+       (CHDIR_CACHE_SIZE): New constant.
+       (wdcache, wdcache_count, chdir_fd): New vars.
+       (chdir_do): Use openat rather than save_cwd.  Keep the cache up
+       to date.  This code won't scale well, but is good enough for now.
+       * src/update.c (update_archive): Use openat + fdopendir +
+       streamsavedir rather than savedir.
+
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
+2010-09-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: add utimens.h includes
+       * src/extract.c: Include <utimens.h>, needed for fdutimens
+       prototype.
+       * src/misc.c: Likewise.
+
+       tar: switch to gnulib fdutimensat module
+       * gnulib.modules: Add fdutimensat.
+       * src/common.h (fd_utimensat): Remove decl.
+       * src/extract.c (set_stat): Call fdutimensat, not fd_utimensat.
+       * src/misc.c (set_file_atime): Likewise.
+       (fd_utimensat): Remove.
+
+2010-09-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: extract permissions for . last
+       * src/common.h (must_be_dot_or_slash): New decl.
+       * src/extract.c (mark_after_links): New function, taking code
+       that used to be in create_placeholder_file.
+       (create_placeholder_file): Use it.
+       (delay_set_stat): Always delay setting status for . and /.
+       * src/misc.c (must_be_dot_or_slash): Now extern.
+       * tests/extrac12.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Likewise.
+
+       tar: don't check for getdtablesize; use AC_CHECK_FUNCS_ONCE
+       * configure.ac: Don't check for getdtablesize; no longer needed.
+       Use AC_CHECK_FUNCS_ONCE rather than AC_CHECK_FUNCS, for
+       efficiency.
+
+       tar: extract symlink attributes, close some symlink-related races
+       * NEWS: Describe symlink-extraction improvements.
+       * src/extract.c (enum permstatus): Remove.
+       (fchmod, fchown): Define dummy replacement macros if the system
+       does not supply them.
+       (implemented): New function.
+       (struct delayed_set_stat): Remove members invert_permissions,
+       permstatus.  They were too confusing, and tried to do too much
+       in too-little space.  Instead, add members current_mode,
+       current_mode_mask, interdir, atflag.  All users changed.
+       (struct delayed_link): Add members mode, atime, mtime, to support
+       platforms such as BSD where symlinks have these attributes.
+       All users changed.
+       (fd_chmod): Renamed from fdchmod.  New argument atflag.  Check for
+       operation not supported at run-time, not at configure-time.  Put
+       fd argument first.  All callers changed.
+       (fd_chown): Likewise, renaming from fdchown.
+       (fd_stat): Likewise, renaming from fdstat.
+       (set_mode): Remove args stat_info, cur_info, invert_permissions,
+       permstatus.  Add args mode, mode_mask, current_mode,
+       current_mode_mask,
+       atflag.  All callers changed.  Close some races.  Use an easier-to
+       understand method for computing permissions.  Work around POSIX
+       incompatibility in Linux fchmodat.  Support extraction of symlink
+       modes, if the OS allows it.
+       (set_stat): Remove args cur_info, invert_permissions, permstatus.
+       Add args current_mode, current_mode_mask, interdir, atflag.
+       All callers changed.  Close some races.  Support extraction of
+       attributes on symlinks, if the OS allows it.
+       (delay_set_stat): Remove args invert_permissions, permstatus.
+       Add args current_mode, current_mode_mask, mode, atflag.
+       The ST arg can be null now, indicating that it's an intermediate
+       directory.  All callers changed.
+       (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat):
+       Close some races.
+       (extract_dir): Also be paranoid if only --same-permissions, due
+       to semantics of setgid and setuid directories on some hosts.
+       This closes a race on those hosts.  Simplify calculation of
+       delay_set_stat arguments; the old code was truly strange and
+       probably wrong in some border cases.
+       (extract_dir, extract_file, extract_node, extract_fifo): Don't
+       rely on
+       unspecified behavior in mode arg of open, mknod, etc.  Instead,
+       mask out those bits when creating the file, and add them later via
+       fchmod or chmodat.
+       (open_output_file): file_name is now const.  Add arg current_mode,
+       current_mode_mask.  All callers changed.  When overwriting
+       old files,
+       refuse to overwrite something that is not a regular file, since
+       we're extracting a regular file.
+       (extract_file): Remove the FIXME comment.  Whatever the protection
+       issues were, they should be fixed now.  As a result of all
+       the other
+       API changes, we now use fchmod etc. rather than chmod etc.,
+       closing
+       some races.
+       (create_placeholder_file, apply_delayed_links): Record desired
+       mode and times for symlinks, for OSes that support that.
+
+2010-09-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: tar -x without --incremental no longer sets atime again
+       * src/extract.c (set_stat): Use UTIME_OMIT rather than UTIME_NOW.
+       The UTIME_NOW was there only to emulate the previous behavior of
+       using the current time, and the previous behavior was there only
+       because before we started assuming POSIX.1-2008 there was no
+       portable way to get the effect of UTIME_NOW.
+
+       tar: another --atime-preserve race fix
+       * src/common.h (set_file_atime): Add parentfd arg.
+       * src/compare.c (diff_file): Use it.
+       * src/create.c (dump_file0): Likewise.  This closes yet another
+       race condition with symbolic links.
+       * src/misc.c (set_file_atime): Add parentfd arg.
+
+       tar: --atime-preserve fixes for races etc.
+       This patch fixes a race condition in the --atime-preserve=replace
+       option, which might cause tar to improperly follow a symbolic
+       link.
+
+       It also drops the use of the _FIOSATIME ioctl of Solaris 2.x
+       and later, which loses resolution on time stamps.  Modern Solaris
+       systems support full-resolution time stamps in the kernel, and
+       it's not worth the hassle of testing this call, useful only in
+       no-longer-supported Solaris variants.
+
+       Also, it undoes a change I recently introduced to the --compare
+       option, which caused it to not follow symbolic links unless the
+       --dereference option was also used.  Quite possibly this change is
+       a good idea, but the old behavior was documented and the change
+       should not have been installed casually.
+
+       * configure.ac: Don't check for stropts.h and sys/filio.h.
+       * gnulib.modules: Add futimens, utimensat.  Remove futimens.
+       * src/common.h (fd_utimensat): New decl.
+       * src/compare.c (diff_file, diff_multivol):
+       Don't use open_read_flags: those are for --create only.
+       * src/create.c (dump_file0): Adjust to set_file_atime changes.
+       Pass fstatat_flags to set_file_atime, so that symbolic links are
+       not followed inadvertantly.
+       * src/extract.c: Don't include utimens.h.
+       (set_stat): Use fd_utimensat ant UTIME_NOW rather than fdutimens.
+       * src/misc.c: Don't include utimens.h, stropts.h, sys/filio.h.
+       (fd_utimensat): New function.
+       (set_file_atime): Use it.  New arg atflag, controlling symlink
+       handling.  All callers changed.
+
+2010-09-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * configure.ac: tar: close some race conditions when extracting
+       * configure.ac: Check for fchmod and fchown.  Don't check
+       for utimes.
+       * src/extract.c (fdchmod, fdchown, fdstat): New functions.
+       (set_mode, set_stat): New arg FD.  All callers changed.
+       This avoids some race conditions between closing a regular file
+       and setting its metadata, and it's a bit faster.
+
+2010-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't worry about fdopendir closing its argument
+       * NEWS: Don't mention dirfd; no longer needed.
+       * gnulib.modules: Remove dirfd.
+       * src/create.c (get_directory_entries): Remove the code dealing
+       with dirfd failures, as the new fdopendir replacement doesn't
+       close its argument so we don't need to call dirfd.  See
+       <http://lists.gnu.org/archive/html/bug-gnulib/2010-09/msg00208.html>
+       and gnulib commit 970c9038e4cca46e1b037ae0a6d574dfae6a7327.
+
+       * NEWS: Fix wording typo in previous change.
+       Reported by Jim Meyering.
+
+       tar: live within system-supplied limits on file descriptors
+       * NEWS: Note the change.  Mention dirfd and fdopendir.
+       * gnulib.modules: Add dirfd and fdopendir.  The code was already
+       using fdopendir; dirfd is a new need.
+       * src/common.h (open_searchdir_flags, get_directory_entries):
+       (subfile_open, restore_parent_fd, tar_stat_close): New decls.
+       (check_exclusion_tags): Adjust signature to match code change.
+       * src/create.c (IMPOSTOR_ERRNO): New constant.
+       (check_exclusion_tags): First arg is now a struct tar_stat_info
+       const *, not an fd.  All callers changed.
+       (dump_regular_file, dump_file0): A zero fd represents an unused
+       slot, so play it safe if the fd member is zero here.  A negative
+       fd represents the negation of an errno value, so play it safe and
+       do not assign -1 to fd merely because an open fails.
+       (open_failure_recover, get_directory_entries, restore_parent_fd):
+       (subfile_open): New functions.  These help to recover from file
+       descriptor exhaustion.
+       (dump_dir, dump_file0): Use them.
+       (dump_file0): Use tar_stat_close instead of rolling our own close.
+       * src/incremen.c (scan_directory): Use get_directory_entries,
+       subfile_open, etc., to recover from file descriptor exhaustion.
+       * src/names.c (add_hierarchy_to_namelist): Likewise.
+       (collect_and_sort_names): A negative fd represents the negation
+       of an errno value, so play it safe and do not assign -1 to fd.
+       * src/tar.c (decode_options): Set open_searchdir_flags.
+       Add O_CLOEXEC to all the open flags.
+       (tar_stat_close): New function, which knows how to deal with
+       new convention for directory streams and file descriptors.
+       Diagnose 'close' failures.
+       (tar_stat_destroy): Use it.
+       * src/tar.h (struct tar_stat_info): New member dirstream.
+       fd now has the negative of an errno value, not merely -1, if
+       the file could not be opened, so that failures to reopen
+       directories
+       are better-diagnosed later.
+       * tests/Makefile.am (TESTSUITE_AT): Add extrac11.at.
+       * tests/testsuite.at: Likewise.
+       * tests/extrac11.at: New file.
+
+2010-09-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: improve documentation of reliability and security issues
+       * doc/tar.texi (Reliability and security, Reliability):
+       (Permissions problems, Data corruption and repair, Race
+       conditions):
+       (Security, Privacy, Integrity, Live untrusted data):
+       (Security rules of thumb): New nodes.
+
+2010-09-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: more reliable directory traversal when creating archives
+       * NEWS: Document this.
+       * gnulib.modules: Add openat, readlinkat.
+       * src/common.h (open_read_flags, fstatat_flags): New global
+       variables.
+       (cachedir_file_p, dump_file, check_exclusion_tags,
+       scan_directory):
+       Adjust to new signatures, described below.
+       (name_fill_directory): Remove.
+       * src/compare.c (diff_file, diff_multivol): Use open_read_flags.
+       * src/create.c (struct exclusion_tag): Exclusion predicates
+       now take
+       a file descriptor, not a file name.
+       (add_exclusion_tag): Likewise.  All uses changed.
+       (cachedir_file_p): Likewise.
+       (check_exclusion_tags): The directory is now a file descriptor,
+       not a file name.  All uses changed.  Use openat for better
+       traversal.
+       (file_dumpable_p): Arg is now a struct stat, not a struct
+       tar_stat_info.  All uses changed.  Check the arg's file types too.
+       (dump_dir0, dump_dir, dump_file0, dump_file): Omit top_level and
+       parent_device args, since st->parent tells us that now.  All uses
+       changed.
+       (dump_dir): Likewise.  Also, omit fd arg for similar reasons.
+       Apply fdsavedir to a dup of the file descriptor, since we need a
+       file descriptor for openat etc. as well, and fdsavedir (perhaps
+       unwisely) consumes its file descriptor when successful.
+       Do not consume st->fd when successful; this simplifies the caller.
+       (create_archive): Allocate a file descriptor when retraversing
+       a directory, during incremental dumps.
+       (dump_file0): Use fstatat, openat, and readlinkat for better
+       traversal.
+       When opening a file, use the result of fstat on the file
+       descriptor
+       rather than the fstatat on the directory entry, to avoid some race
+       conditions.  No need to reopen the directory since we now
+       no longer
+       close it.  Change "did we open the file?" test from 0 <= fd to
+       0 < fd since fd == 0 now represents uninitialized.
+       (dump_file): Now accepts struct tar_stat_info describing parent,
+       not parent_device.  Also, accept basename and fullname of entry.
+       All uses changed.
+       * src/incremen.c (update_parent_directory): Accept struct
+       tar_stat_info for parent, not name.  All callers changed.
+       Use fstatat for safer directory traversal.
+       (procdir): Accept struct tar_stat_info, not struct stat and
+       dev_t, for info about directory.  All callers changed.
+       (scan_directory): Accept struct tar_stat_info, not name,
+       device, and cmdline, for info about directory.  All callers
+       changed.  Do not consume the file descriptor, since caller
+       might need it.  Use fstatat and openat for safer directory
+       traversal; also, use fstat after opening to double-check.
+       (name_fill_directory): Remove.
+       * src/names.c (add_hierarchy_to_namelist): Accept struct
+       tar_stat_info instead of device and cmdline.  All callers changed.
+       When descending into a subdirectory, use openat and fstat for
+       safer directory traversal.
+       (collect_and_sort_names): Use open and fstat for safer directory
+       traversal.  Set up struct tar_stat_info for callee's new API.
+       * src/tar.c (decode_options): Initialize open_read_flags
+       and fstatat_flags.
+       (tar_stat_destroy): Close st->fd if it is positive (not zero!).
+       * src/tar.h (struct tar_stat_info): New members parent, fd.
+       * src/update.c (update_archive): Adjust to dump_file's API change.
+       * tests/filerem02.at: Ignore stderr since its contents now depend
+       on the file system implementation.
+
+2010-09-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove lint discovered by Sun C compiler
+       * src/common.h (WARN_ALL): Don't mask with 0xffffffff; on a 32-bit
+       host, 0xffffffff is of type 'unsigned int', which makes WARN_ALL
+       an unsigned int value that is too large to fit into an int, and
+       the C standard says that this has undefined behavior.  The mask is
+       not needed, so omit it.
+
+2010-09-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: restore macros that are used in some cases
+       * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+       Restore these macros, undoing the previous change to this file.
+       The macros are used after all, in some cases.  Sorry about that.
+
+2010-09-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove unused macros
+       * src/create.c (UINTMAX_TO_CHARS): Remove; no longer used.
+       * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+       Likewise.
+       * src/incremen.c (DIR_IS_NEW): Comment out; not used.
+       Mark this with a FIXME, since it looks like it should be used.
+
+2010-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix --remove-files in update/append mode.
+       * src/update.c (update_archive): Call finish_deferred_unlinks when
+       done.
+
+2010-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: avoid assumptions about root access and chmod -w in test
+       cases
+       * tests/extrac07.at, tests/extrac09.at, tests/listed03.at: Use
+       AT_UNPRIVILEGED_PREREQ, since this test requires non-root
+       privileges.
+       * tests/extrac07.at: Don't use "chmod -w", as POSIX says it's not
+       portable to start a chmod permissions-list with "-" as it may be
+       confused with an option.  Use "chmod a-w" instead.
+
+       tar: fix bug with -C and delayed setting of metadata
+       * src/common.h (chdir_current): New decl.
+       * src/extract.c (struct delayed_set_stat, struct delayed_link):
+       New member change_dir.
+       (delay_set_stat, create_placeholder_file): Set it.
+       (apply_nonancestor_delayed_set_stat, apply_delayed_links): Use it.
+       (extract_link): Check that the links are all relative to the same
+       directory.
+       (extract_archive): Restore the current directory after
+       apply_nonancestor_delayed_set_stat has possibly changed it.
+       * src/misc.c (chdir_current): New external var; this used to
+       be the private static variable 'previous' inside chdir_dir.
+       All uses changed.
+       * tests/Makefile.am (TESTSUITE_AT): New test extrac10.at.
+       * tests/extrac10.at: New file.
+       * tests/testsuite.at: Include it.
+
+2010-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Don't apply file transformations to volume names.
+       * src/list.c (decode_header): Don't apply file transformations
+       to volume names.
+       * tests/xform01.at: New testcase.
+       * tests/xform-h.at (xform): Rename macro to xformtest. Use
+       pushdef/popdef.
+       * tests/Makefile.am, tests/testsuite.at: Add xform01.at
+
+2010-08-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: optimize -c --sparse when file is entirely sparse
+       * src/sparse.c (sparse_scan_file): If the file is entirely sparse,
+       that is, if ST_NBLOCKS is zero, don't bother scanning for nonzero
+       blocks.  Idea by Kit Westneat, communicated by Bernd Schubert in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00038.html>.
+       Also, omit unnecessary lseek at start of file.
+
+       tar: don't assume size of a sparse file chunk fits in size_t
+       * src/tar.h (struct sp_array): Change numbytes from size_t
+       to off_t.
+       All uses changed.
+       * scripts/xsparse.c (struct sp_array): Likewise.
+       Include <stdint.h>, for SIZE_MAX.
+       (expand_sparse): Don't try to allocate a buffer bigger than
+       SIZE_MAX bytes.
+       * src/common.h (SIZE_TO_CHARS, size_to_chars, SIZE_FROM_HEADER):
+       (size_from_header): Remove decls.
+       * src/create.c (size_to_chars): Remove.
+       * src/list.c (size_from_header): Remove.
+       * src/sparse.c (sparse_extract_region, check_data_region):
+       (oldgnu_add_sparse, oldgnu_store_sparse_info, pax_decode_header):
+       Don't assume chunk sizes fit in size_t.
+       (oldgnu_add_sparse): Check for off_t overflow.
+       * src/xheader.c (sparse_numbytes_decoder, sparse_map_decoder):
+       Likewise.
+
+       tar: use ctime, not mtime, when checking placeholders
+       * src/extract.c (struct delayed_link): Rename member mtime
+       to ctime.
+       All uses changed to use ctime rather than mtime.
+
+2010-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: add comment to link04.at test
+       * tests/link04.at: Add explanatory comment at head.
+
+       tar: fix 1.23 Solaris regression related to PRIV_SYS_LINKDIR
+       The idea was suggested by Petr Sumbera in the thread starting
+       here:
+       http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00000.html
+       * src/extract.c (set_mode): Save the errno of the chmod that
+       failed, for the benefit of chmod_error_details.  Do not bother
+       retrying chmod unless the mode suggests setuid is the issue.
+       (extract_archive): Remove redundant call to
+       priv_set_remove_linkdir.
+       * src/system.c: Include priv-set.h.
+       (sys_spawn_shell, sys_child_open_for_compress):
+       (sys_child_open_for_uncompress, sys_exec_command):
+       (sys_exec_info_script, sys_exec_checkpoint_script):
+       Invoke priv_set_restore_linkdir before execv or execlp, so that
+       the subprocess has the same privileges that tar originally did.
+
+       tar: handle files that occur multiple times but have link count 1
+       This patch was inspired by the following patch that addressed a
+       similar problem in GNU coreutils du:
+       http://git.savannah.gnu.org/gitweb/?p=coreutils.git;h=efe53cc72b599979ea292754ecfe8abf7c839d22
+       * src/common.h (name_count): New decl.
+       * src/create.c (trivial_link_count): New static var.
+       (create_archive): Initialize it.
+       (dump_hard_link, file_count_links): Use it, so that files with
+       link count 1 are handled correctly when they are found multiple
+       times.
+       * src/names.c (allocated_entries): Renamed from allocated_names,
+       since the identifier's name was misleading.  All uses changed.
+       (entries): Renamed from names.  All uses changed.
+       (scanned): Renamed from name_index.  All uses changed.
+       (name_count): New var.
+       (name_add_name): Increment it.
+       * tests/link04.at: New file.
+       * tests/testsuite.at: Add it.
+       * tests/Makefile.am (TESTSUITE_AT): Likewise.
+
+2010-08-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: use nlink_t for link counts
+       * src/create.c (struct link): nlink is now of type nlink_t,
+       not size_t.
+
+       tar: don't export names that aren't used elsewhere
+       * src/common.h (file_dumpable_p, gid_to_chars, major_to_chars):
+       (minor_to_chars, mode_to_chars, uid_to_chars, uintmax_to_chars):
+       (string_to_chars, dumpdir_creat0, dumpdir_create, dumpdir_free):
+       (dumpdir_locate, dumpdir_next, dumpdir_first, gid_from_header):
+       (major_from_header, minor_from_header, mode_from_header):
+       (time_from_header, uid_from_header, quote_copy_string,
+       request_stdin):
+       (xheader_init, transform_header_name):
+       Remove declarations; these are no longer exported from their
+       modules.
+       (GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS):
+       (UID_TO_CHARS, UINTMAX_TO_CHARS, UNAME_TO_CHARS, GNAME_TO_CHARS):
+       Move to src/create.c, since no other module uses these.
+       (GID_FROM_HEADER, MAJOR_FROM_HEADER, MINOR_FROM_HEADER):
+       (MODE_FROM_HEADER, TIME_FROM_HEADER, UID_FROM_HEADER):
+       Move to src/extract.c, since no other module uses these.
+       (dumpdir_t, dumpdir_iter_t): Remove; no longer used.
+       * src/create.c (gid_to_chars, major_to_chars, minor_to_chars):
+       (mode_to_chars, uid_to_chars, uintmax_to_chars, string_to_chars):
+       (file_dumpable_p): Now static.
+       * src/incremen.c (dumpdir_create0, dumpdir_create, dumpdir_free):
+       (dumpdir_locate, dumpdir_next, dumpdir_first): Now static.
+       (scan_directory, write_directory_file_entry):
+       Use struct dumpdir_iter * rather than dumpdir_iter_t.
+       * src/list.c (gid_from_header, major_from_header,
+       minor_from_header):
+       (mode_from_header, time_from_header, uid_from_header):
+       (transform_member_name): Now static.
+       * src/misc.c (quote_copy_string): #if 0 out, as it's not used
+       anywhere.
+       * src/system.c (wait_for_grandchild): Now static.
+       * src/tar.c (request_stdin): Now static.
+       * src/xheader.c (xheader_init): Now static.
+
+       tar: fix misspelled identifier "set_comression_program_by_suffix"
+       * src/suffix.c (set_compression_program_by_suffix): Renamed from
+       set_comression_program_by_suffix.
+       * src/buffer.c, src/common.h, src/tar.c: All uses changed.
+
+2010-08-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: change interdir_made from int to bool
+       * src/extract.c (maybe_recoverable, create_placeholder_file):
+       Change interdir_made from int * to bool *, since the flag has just
+       two values 0 and 1.  All uses changed.  This does not affect tar's
+       behavior.
+
+       tar: remove trailing white space from source files
+       * ChangeLog.1, ChangeLog.CVS, Makefile.am, NEWS, README:
+       * README-hacking, directory, doc/Makefile.am, doc/dumpdir.texi:
+       * doc/gendocs_template, doc/intern.texi, doc/mastermenu.el:
+       * doc/snapshot.texi, doc/sparse.texi, doc/tar-snapshot-edit.texi:
+       * doc/value.texi, lib/Makefile.am, scripts/backup-specs:
+       * scripts/dump-remind.in, scripts/tar-snapshot-edit,
+       scripts/tarcat:
+       * scripts/xsparse.c, src/arith.h, src/buffer.c, src/compare.c:
+       * src/create.c, src/delete.c, src/exit.c, src/suffix.c, src/tar.c:
+       * src/tar.h, src/update.c, src/warning.c, src/xheader.c:
+       * tests/append01.at, tests/append02.at, tests/atlocal.in:
+       * tests/delete03.at, tests/exclude.at, tests/exclude06.at:
+       * tests/extrac04.at, tests/extrac05.at, tests/extrac06.at:
+       * tests/extrac07.at, tests/filerem01.at, tests/filerem02.at:
+       * tests/incr01.at, tests/incr02.at, tests/incr03.at,
+       tests/incr06.at:
+       * tests/label02.at, tests/label03.at, tests/label04.at:
+       * tests/label05.at, tests/link02.at, tests/link03.at:
+       * tests/listed01.at, tests/listed02.at, tests/long01.at:
+       * tests/longv7.at, tests/multiv01.at, tests/multiv02.at:
+       * tests/multiv03.at, tests/multiv05.at, tests/multiv06.at:
+       * tests/multiv07.at, tests/multiv08.at, tests/options.at:
+       * tests/options02.at, tests/remfiles03.at, tests/rename01.at:
+       * tests/rename02.at, tests/rename03.at, tests/rename04.at:
+       * tests/rename05.at, tests/same-order01.at, tests/same-order02.at:
+       * tests/shortfile.at, tests/shortupd.at, tests/sparse01.at:
+       * tests/sparse02.at, tests/sparsemv.at, tests/sparsemvp.at:
+       * tests/star/README, tests/star/gtarfail2.at:
+       * tests/star/multi-fail.at:
+       * tests/star/pax-big-10g.at, tests/star/quicktest.sh:
+       * tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at:
+       * tests/update01.at, tests/update02.at, tests/volsize.at:
+       * tests/volume.at:
+       Remove trailing spaces and tabs from lines, and remove
+       trailing empty lines from files.  This makes it a bit easier
+       to share code among coreutils and other projects that do this.
+
+2010-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: update licenses to latest versions from www.gnu.org
+       * COPYING: Update to latest version; this is just minor
+       formatting.
+       * doc/fdl.texi: Update from GFDL 1.2 to 1.3.
+       * doc/tar.texi: Adjust to new format of fdl.texi.  Omit trailing
+       white space.
+
+2010-07-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/misc.c (struct wd): Fix comment to match code.
+
+2010-07-18  Paul R. Eggert  <eggert@cs.ucla.edu>
+
+       tar: no need to report getcwd error if never using the result
+       * src/misc.c (struct wd): Rename 'saved' to 'err', with new
+       semantics.
+       (chdir_arg, chdir_do): Adjust to new semantics.  Do not report an
+       error merely because save_cwd fails; report an error only if
+       save_cwd's result is needed later.
+       * tests/extrac09.at: New file, to test for bug that was fixed.
+       * tests/testsuite.at: Include it.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+
+       tar: go back to absolutifying filenames in normalize_filename
+       for now
+       * src/misc.c (normalize_filename): For now, go back to making
+       filenames absolute, even though this causes 'tar' to fail when
+       getcwd fails.  However, do not attempt to resolve ".." as this
+       does not work with symlinks.  Also, do the right thing with
+       leading file system prefixes and on hosts where // != /.
+
+2010-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Allow for size suffixes in -L and --record-size options.
+       * src/tar.c (TAR_SIZE_SUFFIXES): New define.
+       (parse_opt): Allow for size suffixes in arguments to
+       -L and --record-size options.
+       * NEWS, doc/tar.texi: Update.
+
+2010-07-15  Paul R. Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't crash if getcwd fails
+       * src/extract.c: Don't include xgetcwd.h.
+       (extract_dir): stat "." rather than statting getcwd's output.
+       * src/misc.c (normalize_filename_x): Rewrite so as not to resolve
+       /../, which can't be done reliably in the presence of symlinks.
+       Don't reject valid names such as ".".
+       (normalize_filename): Don't make it absolute; that way, we don't
+       have to invoke xgetcwd which might fail.  Don't bother to realloc
+       at the end, since that uses time and now saves little space.
+       (chdir_do): Don't crash if xgetcwd fails.
+       * tests/Makefile.am (TESTSUITE_AT): Add listed03.at.
+       * tests/listed03.at: New file.
+       * tests/testsuite.at: Include listed03.at.
+
+2010-07-11  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Keep a detailed map of archive members stored in the record
+       buffer.
+       A separate map (bufmap) provides information for creating
+       multi-volume continuation headers.
+
+       * src/buffer.c (bufmap): New struct.
+       (bufmap_head, bufmap_tail, inhibit_map): New variables.
+       (mv_begin_write): New function.
+       (mv_begin): Rename to mv_begin_read. Rewrite using mv_begin_write.
+       All callers changed.
+       (mv_total_size): Remove.
+       (bufmap_locate, bufmap_free, bufmap_reset): New functions.
+       (_flush_write): Update bufmap.
+       (close_archive): Free bufmap.
+       (add_chunk_header): Take a bufmap argument.
+       (gnu_add_multi_volume_header): Likewise.
+       (add_multi_volume_header): Likewise.
+       (_gnu_flush_write): Rewrite using bufmap.
+       (real_s_name, real_s_totsize)
+       (real_s_sizeleft)
+       (save_name, save_totsize, save_sizeleft): Removed. All
+       uses updated.
+       (mv_size_left): Update bufmap_head.
+       (mv_end): Rewrite.
+       (multi_volume_sync): Remove.
+
+       * src/common.h (mv_begin_write): New prototype.
+       (mv_begin): Rename to mv_begin_read.
+       * src/create.c: Use mv_begin_write instead of mv_begin.
+       Remove calls to mv_size_left and mv_end.
+       * src/sparse.c: Likewise.
+
+       * tests/multiv07.at: Close stdin.
+       * tests/spmvp00.at: Update AT_KEYWORDS.
+       * tests/spmvp10.at: Likewise.
+
+       * tests/multiv08.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add multiv08.at.
+
+       Version 1.23.90
+       * NEWS, configure.ac: Version 1.23.90
+       * doc/tar.texi: Document the use of lbzip2.
+
+2010-06-28  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix exclusion of long file names when extracting from pax format
+       archives.
+       * src/list.c (read_and): Call decode_header before attempting
+       name_match.
+       (list_archive): Remove call to decode_header.
+
+       * src/compare.c (diff_archive): Remove call to decode_header.
+       * src/extract.c (extract_archive): Likewise.
+
+       * test/exclude06.at: New test case.
+       * tests/testsuite.at: Include exclude06.at.
+       * tests/Makefile.am (TESTSUITE_AT): Add exclude06.at.
+
+       Minor fix.
+       * src/buffer.c (magic): Split the character constant to help
+       cc recognize character boundaries (7 is a valid hex character).
+
+2010-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix.
+       * src/buffer.c (magic): Fix xz magic.
+
+2010-06-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove some lint, found by gcc -W etc.
+       * src/common.h (label_notfound): New decl.
+       * src/buffer.c (set_volume_start_time, compress_type):
+       (guess_seekable_archive, open_compressed_archive, init_buffer):
+       (_flush_write, archive_is-dev, increase_volume_number):
+       (change_tape_menu, try_new_volume, add_chunk_header):
+       (multi_volume_sync):
+       Declare as 'static' if it's not exported.
+       Use function prototype (void) rather than old-style ().
+       * src/checkpoint.c (expand_checkpoint_string): Likewise.
+       * src/incremen.c (dirlist_replace_prefix, makedumpdir,
+       read_incr_db_2):
+       Likewise.
+       * src/list.c (print_volume_label): Likewise.
+       * src/misc.c (normalize_filename_x): Likewise.
+       * src/names.c (make_name, free_name, check_name_alloc,
+       name_next_elt):
+       Likewise.
+       * src/tar.c (tar_list_quoting_style, add_exclude_array):
+       (set_stat_signal): Likewise.
+       * src/transform.c (new_transform,
+       _single_transform_name_to_obstack):
+       (_transform_name_to_obstack): Likewise.
+       * src/unlink.c (dunlink_alloc): Likewise.
+
+       * src/buffer.c (struct zip_magic): Use const when appropriate.
+       * src/incremen.c (obstack_code_rename,
+       write_directory_file_entry):
+       Likewise.
+       * src/sparse.c (COPY_STRING): Likewise.
+       * src/system.c (dec_to_env, time_to_env, oct_to_env, str_to_env):
+       (chr_to_env): Likewise.
+       * src/tar.c (tar_list_quoting_style, set_stat_signal): Likewise.
+
+       * src/extract.c (extract_node): Don't return garbage.
+
+       * src/names.c: Remove old-style declarations of getgrnam etc.
+       All modern systems declare these, and it's not worth the hassle
+       of ignoring the warnings on modern systems for old-style decls.
+
+2010-05-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfix.
+       * src/incremen.c (make_directory): Retain the slash if it is the
+       only character in a filename.
+
+2010-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Recode NEWS back to UTF-8
+
+2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix the gzip.at test case.
+       * tests/gzip.at: Suppress gzip error output, as it can differ
+       depending on its version etc. Bug reported by Ludovic Courtès.
+
+2010-03-28  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       New option --full-time.
+       * src/common.h (full_time_option): New global.
+       * src/tar.c (FULL_TIME_OPTION): New constant.
+       (options): New option --full-time.
+       (parse_opt): Handle the --full-time option.
+       * src/list.c (simple_print_header): Pass full_time_option
+       as the 2nd argument to tartime.
+       * doc/tar.texi: Update.
+       * NEWS: Update.
+
+2010-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fixes in the testsuite.
+       * tests/extrac07.at: Fix a typo (invalid number
+       of arguments before format list).
+       * tests/link02.at: Use `ln' instead of `link'.
+       * tests/link03.at: Likewise.
+
+       Fix coredump.
+       * src/names.c (collect_and_sort_names): Remove
+       entry from the table before freeing it.
+
+       Fix dead loop on extracting existing symlinks with the -k option.
+       * src/extract.c (create_placeholder_file)
+       (extract_link, extract_symlink)
+       (extract_node, extract_fifo): Handle all possible
+       return values from maybe_recoverable. This complements
+       8f390db92fc. Reported by Ico Doornekamp <bug-tar@zevv.nl>.
+       * NEWS: Update.
+
+2010-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix undesired error exit on receiving SIGPIPE.
+       * src/tar.c: Do not ignore SIGPIPE.
+       * tests/sigpipe.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add sigpipe.at
+       * tests/remfiles01.at: Fix error code expectation.
+       * NEWS: Update.
+
+2010-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix --remove-files.
+       Tar --remove-files relied on canonicalize_file_name,
+       which replaces symlinks in file name components with
+       the directories they point to. Due to this, tar
+       effectively ignored existence of symbolic links and
+       was unable to remove a directory that contained any
+       (Alexander Kozlov <akozlov@nada.kth.se>, 2010-03-15).
+
+       * gnulib.modules: Remove canonicalize.
+       * src/misc.c (normalize_filename): Rewrite
+       from scratch. The function operates only on
+       its input string, it makes no attempt to test
+       components for existence or to resolve symbolic
+       links.
+       * tests/Makefile.am (TESTSUITE_AT): Add remfiles03.at.
+       * tests/testsuite.at: Likewise.
+       * tests/remfiles03.at: New test case.
+       * NEWS: Update.
+
+2010-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfixes.
+       * src/buffer.c (check_label_pattern): Initialize result.
+       * tests/remfiles01.at: Skip if run with root privileges.
+
+2010-03-11  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix `--test-label' and `--label -r' behavior.
+       * doc/tar.texi (Including a Label in the Archive): Revise
+       the section.
+       * NEWS: Update
+
+       * src/buffer.c (open_archive): Check volume label on
+       ACCESS_UPDATE as well.
+       * src/list.c (test_archive_label): Rewrite to match the
+       documentation.
+       * src/names.c (regex_usage_warning): Return int.
+       (names_notfound): Rewrite the conditional.
+       (label_notfound): New function.
+
+       * tests/label03.at: New testcase.
+       * tests/label04.at: New testcase.
+       * tests/label05.at: New testcase.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+
+       Doc fixes.
+       * doc/tar.texi: Consistently use lowercase `see' within sentences.
+       More fixes spotted by Denis Excoffier.
+       * THANKS: Update.
+
+       Shut up a gcc warning message.
+       * src/tar.c (tar_help_filter): Use a separate const
+       variable to hold returns from gettext. Reported by
+       Peter Breitenlohner.
+
+       Bugfix.
+       * src/names.c (collect_and_sort_names): Initialize prev_name.
+       Reported by Dmitry V. Levin.
+
 2010-03-10  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Version 1.23
 2009-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Add xz support.
-       
+
        * src/buffer.c, src/suffix.c: Add support for xz compression.
        * src/tar.c: New option --xz, for compression/decompression using xz.
        Re-assign -J as a short equivalent of --xz.
 2008-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Do not try to drain the input pipe before closing the
-       archive. 
-       
+       archive.
+
        * src/buffer.c (close_archive): Remove call to
        sys_drain_input_pipe. Pass hit_eof as the second
        argument to sys_wait_for_child.
        * src/extract.c (extract_link, extract_symlink): Remove calls to
        transform_member_name. It is done in read_header.
        * src/list.c (decode_xform): Reflect change in data type of 2nd
-       argument. 
+       argument.
        (transform_member_name): 2nd arg is int.
        (decode_header): Transform file name and link target names.
        * src/tar.c: Remove --transform-symlinks.
        set global flags using `flags=' syntax.
        (_transform_name_to_obstack, transform_name_fp)
        (transform_name): Take an additional argument, specifying scope
-       flags. 
+       flags.
 
 2008-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * tests/sparsemvp.at: Likewise.
        * tests/volsize.at: Likewise.
        * NEWS: Update.
-       
+
 2008-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/common.h (transform_symlinks_option): New global.
        * doc/tar.texi: Document --transform-symlinks
        * NEWS: Update.
        * THANKS: Update.
-       
+
        * src/names.c (name_gather): Use xzalloc.
        * src/buffer.c (short_read): Move record size detection before
        the loop.
-       
+
 2008-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/tar.c (options): Add --lzop option.
 2008-10-05  Xavier Hienne <xavier.hienne@free.fr> (tiny change)
 
        * src/checkpoint.c (checkpoint_compile_action): Add missing
-       `else'. 
+       `else'.
 
 2008-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * tests/atlocal.in (decho): New function.
        * tests/multiv06.at: Use decho instead of echo2.
        * tests/incremental.at: Raise wait interval to 2 seconds.
-       
+
 2008-07-24  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/tar.c (decode_options): Do not allow volume length less
        tests/longv7.at, tests/lustar01.at, tests/lustar02.at,
        tests/shortfile.at: Update to match new diagnostic wording
        (see 2008-05-06).
-       
+
        * NEWS: Update.
 
 2008-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * doc/tar.texi (exclude): Document support for new VCS.
        * THANKS: Update.
-       * NEWS: Update. 
+       * NEWS: Update.
        * tests/multiv05.at: Fix typos.
        * tests/volsize.at: Remove a TZ dependency.
-       
+
 2008-06-14  Dan Drake <dan@dandrake.org> (tiny change)
 
        * src/tar.c (exclude_vcs_files): Support for Bazaar, Mercurial and
-       Darcs. 
+       Darcs.
 
 2008-05-06  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * tests/incr03.at, tests/incr04.at, tests/rename02.at,
        tests/rename03.at: Insert calls to sleep between creation of files
        and adding them to the archive.
-       
+
 2008-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/create.c (dump_file0): Count links only for actually dumped
-       files. 
+       files.
 
 2008-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * NEWS: Document --no-check-device and --check-device.
        * doc/rendition.texi: Change the way FIXME-*refs are handled in
-       !PROOF. 
+       !PROOF.
        * doc/intern.texi, doc/tar.texi: Update.
        * doc/untabify.el: New file.
        * doc/Makefile.am (EXTRA_DIST): Add untabify.el
        (untabify, final, check-format, check-refs, check-fixmes)
        (check-unrevised, all-check-docs, check-docs): New rules.
-       
+
        * src/common.h (check_device_option): New global.
        * src/incremen.c (procdir): Use boolean and instead of bitwise
        one. Patch by Jean-Louis Martineau.
        --check-device. Proposed by Jean-Louis Martineau.
        (parse_opt): Hanlde new options.
        (decode_options): Initialize check_device_option to true.
-       
+
        * THANKS: Update
 
 2008-03-06  Sergey Poznyakoff  <gray@gnu.org.ua>
        * po/.cvsignore: Update
        * src/system.c: Remove include setenv.h.
        * tests/atlocal.in (STAR_DATA_URL): Update.
-       * tests/star/README: Update URL. 
+       * tests/star/README: Update URL.
 
 2008-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Exit with nonzero status if a close fails on an archive.
        Problem (and initial trivial fix)
        * src/buffer.c (close_archive, new_volume): close_error, not
-       close_warn. 
+       close_warn.
 
 2007-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>
 
index 726fe72bf430e6b595b12c5ba8e84f4ad40bb271..75c88144077d7135cd02d4e7cf1ac2ff3ca83a73 100644 (file)
@@ -1,4 +1,4 @@
-Currently there is just one ChangeLog file for tar, but 
+Currently there is just one ChangeLog file for tar, but
 there used to be separate ChangeLog files for each subdirectory.
 This file records what used to be in those separate files.
 
index df8ea4c767647feffe922d764108869e19f423f7..af332d775170fc9790759b2884367269c9067013 100644 (file)
@@ -22,7 +22,7 @@ ACLOCAL_AMFLAGS = -I m4
 EXTRA_DIST = ChangeLog.1 Make.rules
 SUBDIRS = doc gnu lib rmt src scripts po tests
 
-dist-hook: 
+dist-hook:
        $(MAKE) changelog_dir=$(distdir) ChangeLog
        -rm -f $(distdir).cpio
        find $(distdir) | cpio -Hcrc -o | \
@@ -36,5 +36,3 @@ include Make.rules
 gen_start_date = 2009-03-06
 prev_change_log = ChangeLog.CVS
 changelog_dir = .
-
-
index 17bd117846fd2b4050915a3cafab33d8d5d57b09..dd4e19622d60d82eca61a54ea2ea7a88ee073e07 100644 (file)
@@ -95,11 +95,11 @@ subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -112,17 +112,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -132,54 +132,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -253,7 +260,7 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 \
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz \
        $(distdir).shar.gz
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
@@ -264,6 +271,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -361,6 +369,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -416,10 +425,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -444,6 +455,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -460,11 +472,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -482,20 +499,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -503,7 +523,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -519,12 +538,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -536,25 +558,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -564,18 +590,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -592,6 +621,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -608,8 +638,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -624,6 +657,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -642,6 +676,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -708,21 +744,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -745,6 +784,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -752,6 +792,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -777,7 +818,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -789,17 +832,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -869,6 +916,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -1180,7 +1228,6 @@ dist-bzip2: distdir
 dist-lzma: distdir
        tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
        $(am__remove_distdir)
-
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
        $(am__remove_distdir)
@@ -1200,6 +1247,7 @@ dist-zip: distdir
 dist dist-all: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
        tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__remove_distdir)
 
@@ -1398,7 +1446,7 @@ uninstall-am:
        tags-recursive uninstall uninstall-am
 
 
-dist-hook: 
+dist-hook:
        $(MAKE) changelog_dir=$(distdir) ChangeLog
        -rm -f $(distdir).cpio
        find $(distdir) | cpio -Hcrc -o | \
diff --git a/NEWS b/NEWS
index 32542665ad6084012021af7cd198d6a12598dfb4..66d9c880e0b0ea34190298582858f0517503e645 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,98 @@
-GNU tar NEWS - User visible changes. 2010-03-10
+GNU tar NEWS - User visible changes. 2010-10-24
 Please send GNU tar bug reports to <bug-tar@gnu.org>
 
+\f
+version 1.24 - Sergey Poznyakoff, 2010-10-24
+
+* The --full-time option.
+
+New command line option `--full-time' instructs tar to output file
+time stamps to the full resolution.
+
+* Bugfixes.
+
+** More reliable directory traversal when creating archives
+
+Tar now checks for inconsistencies caused when a file system is
+modified while tar is creating an archive.  In the new approach, tar
+maintains a cache of file descriptors to directories, so it uses more
+file descriptors than before, but it adjusts to system limits on
+the number of file descriptors.  Tar also takes more care when
+a file system is modified while tar is extracting from an archive.
+
+The new checks are implemented via the openat and related calls
+standardized by POSIX.1-2008.  On an older system where these calls do
+not exist or do not return useful results, tar emulates the calls at
+some cost in efficiency and reliability.
+
+** Symbolic link attributes
+
+When extracting symbolic links, tar now restores attributes such as
+last-modified time and link permissions, if the operating system
+supports this.  For example, recent versions of the Linux kernel
+support setting times on symlinks, and some BSD kernels also support
+symlink permissions.
+
+** --dereference consistency
+
+The --dereference (-h) option now applies to files that are copied
+into or out of archives, independently of other options.  For example,
+if F is a symbolic link and archive.tar contains a regular-file member
+also named F, "tar --overwrite -x -f archive.tar F" now overwrites F
+itself, rather than the file that F points to.  (To overwrite the file
+that F points to, add the --dereference (-h) option.)  Formerly,
+--dereference was intended to apply only when using the -c option, but
+the implementation was not consistent.
+
+Also, the --dereference option no longer affects accesses to other
+files, such as archives and time stamp files.  Symbolic links to these
+files are always followed.  Previously, the links were usually but not
+always followed.
+
+** Spurious error diagnostics on broken pipe.
+
+When receiving SIGPIPE, tar would exit with error status and
+"write error" diagnostics. In particular, this occurred if
+invoked as in the example below:
+
+   tar tf archive.tar | head -n 1
+
+** --remove-files
+
+`Tar --remove-files' failed to remove a directory which contained
+symlinks to another files within that directory.
+
+** --test-label behavior
+
+In case of a mismatch, `tar --test-label LABEL' exits with code 1,
+not 2 as it did in previous versions.
+
+The `--verbose' option used with `--test-label' provides additional
+diagnostics.
+
+Several volume labels may be specified in a command line, e.g.:
+
+   tar --test-label -f archive 'My volume' 'New volume' 'Test volume'
+
+In this case, tar exits with code 0 if any one of the arguments
+matches the actual volume label.
+
+** --label used with --update
+
+The `--label' option can be used with `--update' to prevent accidental
+update of an archive:
+
+  tar -rf archive --label 'My volume' .
+
+This did not work in previous versions, in spite of what the docs said.
+
+** --record-size and --tape-length (-L) options
+
+Usual size suffixes are allowed for these options.  For example,
+-L10k stands for a 10 kilobyte tape length.
+
+** Fix dead loop on extracting existing symlinks with the -k option.
+
 \f
 version 1.23 - Sergey Poznyakoff, 2010-03-10
 
@@ -80,7 +172,7 @@ the Epoch or a `Time reference' (see below).
 * Time references in --pax-option argument.
 
 Any value from the --pax-option argument that is enclosed in a pair
-of curly braces represents a time reference.  The string between the 
+of curly braces represents a time reference.  The string between the
 braces is understood either as a textual time representation, as described in
 chapter 7, "Date input formats", of the Tar manual, or as a name of
 an existing file, starting with `/' or `.'.  In the latter
@@ -114,14 +206,14 @@ version 1.22 - Sergey Poznyakoff, 2009-03-05
 
 * Support for xz compression
 
-Tar uses xz for compression if one of the following conditions is met: 
+Tar uses xz for compression if one of the following conditions is met:
 
  1. The option --xz or -J (see below) is used.
  2. The xz binary is set as compressor using --use-compress-program option.
  3. The file name of the archive being created ends in `.xz' and
  auto-compress option (-a) is used.
 
-Xz is used for decompression if one of the following conditions is met: 
+Xz is used for decompression if one of the following conditions is met:
 
  1. The option --xz or -J is used.
  2. The xz binary is set as compressor using --use-compress-program option.
@@ -174,7 +266,7 @@ control type of archive members affected by them.  The flags are:
  - s
    Apply transformation to symbolic link targets.
 
- - h  
+ - h
    Apply transformation to hard link targets.
 
 Corresponding upper-case letters negate the meaning, so that
@@ -196,10 +288,10 @@ can be changed using `flags=' statement before the expressions, e.g.:
 
 ** The --null option disabled handling of tar options in list files.  This
 is fixed.
-** Fixed record size autodetection.  If detected record size differs from
-the expected value (either default, or set on the command line), tar
-always prints a warning if verbosity level is set to 1 or greater,
-i.e. if either -t or -v option is given.
+** Fixed record size autodetection.  If the detected record size differs from
+the expected value (either default one, or the one set from the
+command line), tar always prints a warning if verbosity level is set
+to 1 or greater, i.e. if either -t or -v option is given.
 
 \f
 
@@ -253,7 +345,7 @@ during both creation and extraction.  Tar 1.19 used them only
 during extraction.
 
 For a detailed description, see chapter 6.7 "Modifying File and Member
-Names". 
+Names".
 
 * Info (end-of-volume) scripts
 
@@ -280,8 +372,8 @@ control systems, e.g. "CVS/", ".svn/", etc.
 
 The following options now work with incremental archives as well:
 
-  --exclude-caches       
-  --exclude-caches-all   
+  --exclude-caches
+  --exclude-caches-all
   --exclude-tag
   --exclude-tag-all
   --exclude-tag-under
@@ -292,14 +384,14 @@ Previous versions always stored absolute file names in rename
 records, even if -P was not used. This is fixed: rename records
 contain file names processed in accordance with the command line
 settings.
-  
+
 * Fix --version output.
 
 * Recognition of broken archives.
 
 When supplied an archive smaller than 512 bytes in reading mode (-x,
 -t), the previous version of tar silently ignored it, exiting with
-code 0. It is fixed. Tar now issues the following diagnostic message:
+code 0.  It is fixed.  Tar now issues the following diagnostic message:
 'This does not look like a tar archive', and exits with code 2.
 
 * Fix double-dot recognition in archive member names in case of duplicate '/.'.
diff --git a/README b/README
index f07050c95859f135bef53a5b92e5288fa2aec2a3..bf65e82ad7ce0180810701d326928e385013fea2 100644 (file)
--- a/README
+++ b/README
@@ -180,19 +180,19 @@ the `lchown' call will be used if available, but that's all.
 GNU `tar' is able to create archive in the following formats:
 
   *** The format of UNIX version 7
-  *** POSIX.1-1988 format, also known as "ustar format" 
+  *** POSIX.1-1988 format, also known as "ustar format"
   *** POSIX.1-2001 format, also known as "pax format"
   *** Old GNU format (described below)
 
 In addition to those, GNU `tar' is also able to read archives
-produced by `star' archiver.  
+produced by `star' archiver.
 
 A so called `Old GNU' format is based on an early draft of the
 POSIX 1003.1 `ustar' standard which is different from the final
 standard. It defines its extensions (such as incremental backups
 and handling of the long file names) in a way incompatible with
 any existing tar archive format, therefore the use of old GNU
-format is strongly discouraged. 
+format is strongly discouraged.
 
 Please read the file NEWS for more information about POSIX compliance
 and new `tar' features.
@@ -248,4 +248,3 @@ mode: outline
 paragraph-separate: "[ \f]*$"
 version-control: never
 End:
-
diff --git a/THANKS b/THANKS
index 525981ce43f4233e0b8727fbebd91303aea56471..0364c504763095fa8a058d296797cfcf632d1ab9 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -133,7 +133,7 @@ David Steiner               dsteiner@ispa.uni-osnabrueck.de
 David Taylor           taylor@think.com
 Dean Gaudet            dgaudet@watdragon.uwaterloo.ca
 Demizu Noritoshi       nori-d@is.aist-nara.ac.jp
-Denis Excoffier         denis.excoffier@airbus.com
+Denis Excoffier         denis.excoffier@free.fr
 Denis Fortin           fortin@acm.org
 Dennis Pixton          dennis@math.binghamton.edu
 Dick Streefland                dicks@tasking.nl
index 27de1723f321ed9f84679a39fac2b6b0deae517a..93aa9ab8a704c7323a29a7b72fe369e92a8c15ef 100644 (file)
@@ -1032,6 +1032,7 @@ m4_include([m4/00gnulib.m4])
 m4_include([m4/alloca.m4])
 m4_include([m4/argmatch.m4])
 m4_include([m4/argp.m4])
+m4_include([m4/asm-underscore.m4])
 m4_include([m4/backupfile.m4])
 m4_include([m4/bison.m4])
 m4_include([m4/btowc.m4])
@@ -1039,6 +1040,7 @@ m4_include([m4/canonicalize.m4])
 m4_include([m4/chdir-long.m4])
 m4_include([m4/chown.m4])
 m4_include([m4/clock_time.m4])
+m4_include([m4/cloexec.m4])
 m4_include([m4/close-stream.m4])
 m4_include([m4/close.m4])
 m4_include([m4/closeout.m4])
@@ -1064,15 +1066,15 @@ m4_include([m4/fcntl.m4])
 m4_include([m4/fcntl_h.m4])
 m4_include([m4/fdopendir.m4])
 m4_include([m4/fileblocks.m4])
+m4_include([m4/filenamecat.m4])
 m4_include([m4/float_h.m4])
 m4_include([m4/fnmatch.m4])
 m4_include([m4/fpending.m4])
 m4_include([m4/fseeko.m4])
-m4_include([m4/ftruncate.m4])
+m4_include([m4/futimens.m4])
 m4_include([m4/getcwd-abort-bug.m4])
 m4_include([m4/getcwd-path-max.m4])
 m4_include([m4/getcwd.m4])
-m4_include([m4/getdate.m4])
 m4_include([m4/getdelim.m4])
 m4_include([m4/getdtablesize.m4])
 m4_include([m4/getline.m4])
@@ -1100,6 +1102,10 @@ m4_include([m4/lchown.m4])
 m4_include([m4/lib-ld.m4])
 m4_include([m4/lib-link.m4])
 m4_include([m4/lib-prefix.m4])
+m4_include([m4/libunistring-base.m4])
+m4_include([m4/link-follow.m4])
+m4_include([m4/link.m4])
+m4_include([m4/linkat.m4])
 m4_include([m4/localcharset.m4])
 m4_include([m4/locale-fr.m4])
 m4_include([m4/locale-ja.m4])
@@ -1120,6 +1126,9 @@ m4_include([m4/mempcpy.m4])
 m4_include([m4/memrchr.m4])
 m4_include([m4/mkdir.m4])
 m4_include([m4/mkdtemp.m4])
+m4_include([m4/mkfifo.m4])
+m4_include([m4/mkfifoat.m4])
+m4_include([m4/mknod.m4])
 m4_include([m4/mktime.m4])
 m4_include([m4/mmap-anon.m4])
 m4_include([m4/mode_t.m4])
@@ -1129,6 +1138,7 @@ m4_include([m4/nl_langinfo.m4])
 m4_include([m4/nls.m4])
 m4_include([m4/open.m4])
 m4_include([m4/openat.m4])
+m4_include([m4/parse-datetime.m4])
 m4_include([m4/pathmax.m4])
 m4_include([m4/paxutils.m4])
 m4_include([m4/po.m4])
@@ -1139,15 +1149,17 @@ m4_include([m4/quote.m4])
 m4_include([m4/quotearg.m4])
 m4_include([m4/rawmemchr.m4])
 m4_include([m4/readlink.m4])
+m4_include([m4/readlinkat.m4])
 m4_include([m4/realloc.m4])
 m4_include([m4/regex.m4])
+m4_include([m4/rename.m4])
+m4_include([m4/renameat.m4])
 m4_include([m4/rmdir.m4])
 m4_include([m4/rmt.m4])
 m4_include([m4/rpmatch.m4])
 m4_include([m4/rtapelib.m4])
 m4_include([m4/safe-read.m4])
 m4_include([m4/safe-write.m4])
-m4_include([m4/same.m4])
 m4_include([m4/save-cwd.m4])
 m4_include([m4/savedir.m4])
 m4_include([m4/setenv.m4])
@@ -1179,6 +1191,8 @@ m4_include([m4/strtoll.m4])
 m4_include([m4/strtoul.m4])
 m4_include([m4/strtoull.m4])
 m4_include([m4/strtoumax.m4])
+m4_include([m4/symlink.m4])
+m4_include([m4/symlinkat.m4])
 m4_include([m4/sys_stat_h.m4])
 m4_include([m4/sys_time_h.m4])
 m4_include([m4/sysexits.m4])
@@ -1195,6 +1209,7 @@ m4_include([m4/unlinkdir.m4])
 m4_include([m4/unlocked-io.m4])
 m4_include([m4/utimbuf.m4])
 m4_include([m4/utimens.m4])
+m4_include([m4/utimensat.m4])
 m4_include([m4/utimes.m4])
 m4_include([m4/vasnprintf.m4])
 m4_include([m4/vasprintf.m4])
index 24b8d5db78598dd7b137e993df333acc587b1be3..c41e2428550cc724a702f4ea9cf3e5cdedb24aef 100644 (file)
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #endif
 
+/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
+   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
+   except that the C function rpl_func may have a slightly different
+   declaration.  A cast is used to silence the "invalid conversion" error
+   that would otherwise occur.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+    namespace GNULIB_NAMESPACE                                     \
+    {                                                              \
+      rettype (*const func) parameters =                           \
+        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
+    }                                                              \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
    declares a C++ alias called GNULIB_NAMESPACE::func
    that redirects to the system provided function func, if GNULIB_NAMESPACE
    are used to silence the "cannot find a match" and "invalid conversion"
    errors that would otherwise occur.  */
 #if defined __cplusplus && defined GNULIB_NAMESPACE
+  /* The outer cast must be a reinterpret_cast.
+     The inner cast: When the function is defined as a set of overloaded
+     functions, it works as a static_cast<>, choosing the designated variant.
+     When the function is defined as a single variant, it works as a
+     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
     namespace GNULIB_NAMESPACE                                                \
     {                                                                         \
       static rettype (*func) parameters =                                     \
         reinterpret_cast<rettype(*)parameters>(                               \
-          reinterpret_cast<rettype2(*)parameters2>(::func));                  \
+          (rettype2(*)parameters2)(::func));                                  \
     }                                                                         \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #else
-# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #endif
 
 /* _GL_CXXALIASWARN (func);
    causes a warning to be emitted when ::func is used but not when
-   GNULIB_NAMESPACE::func is used.  */
+   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
+   variants.  */
 #if defined __cplusplus && defined GNULIB_NAMESPACE
 # define _GL_CXXALIASWARN(func) \
-   _GL_CXXALIASWARN1 (func, GNULIB_NAMESPACE)
-# define _GL_CXXALIASWARN1(func,namespace) \
-   _GL_CXXALIASWARN2 (func, namespace)
-# define _GL_CXXALIASWARN2(func,namespace) \
-   _GL_WARN_ON_USE (func, \
-                    "The symbol ::" #func " refers to the system function. " \
-                    "Use " #namespace "::" #func " instead.")
+   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN_1(func,namespace) \
+   _GL_CXXALIASWARN_2 (func, namespace)
+/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+   we enable the warning only when not optimizing.  */
+# if !__OPTIMIZE__
+#  define _GL_CXXALIASWARN_2(func,namespace) \
+    _GL_WARN_ON_USE (func, \
+                     "The symbol ::" #func " refers to the system function. " \
+                     "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+#  define _GL_CXXALIASWARN_2(func,namespace) \
+     extern __typeof__ (func) func
+# else
+#  define _GL_CXXALIASWARN_2(func,namespace) \
+     _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
 #else
 # define _GL_CXXALIASWARN(func) \
     _GL_EXTERN_C int _gl_cxxalias_dummy
 #endif
 
+/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
+   causes a warning to be emitted when the given overloaded variant of ::func
+   is used but not when GNULIB_NAMESPACE::func is used.  */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
+                        GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
+   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
+/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+   we enable the warning only when not optimizing.  */
+# if !__OPTIMIZE__
+#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
+                         "The symbol ::" #func " refers to the system function. " \
+                         "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+     extern __typeof__ (func) func
+# else
+#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+     _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+    _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
 #endif /* _GL_CXXDEFS_H */
index c2246a4f7f4c78281ccfc4238a54cf7d83c4f421..4c8f032e786ebd6e6096748030da311c870e751a 100755 (executable)
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2009-12-30'
+timestamp='2010-09-24'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -92,7 +92,7 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
+trap 'exit 1' HUP INT TERM
 
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
@@ -106,7 +106,7 @@ trap 'exit 1' 1 2 15
 
 set_cc_for_build='
 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
 : ${TMPDIR=/tmp} ;
  { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -552,7 +552,7 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
        if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
@@ -968,6 +968,9 @@ EOF
     sparc:Linux:*:* | sparc64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-tilera-linux-gnu
+       exit ;;
     vax:Linux:*:*)
        echo ${UNAME_MACHINE}-dec-linux-gnu
        exit ;;
@@ -1231,6 +1234,9 @@ EOF
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
     NSE-?:NONSTOP_KERNEL:*:*)
        echo nse-tandem-nsk${UNAME_RELEASE}
        exit ;;
index c2d125724c0ed2d2c6da5308c54567649554e5f3..320e30388119ffd5e8c81f85998f075e4f888fba 100755 (executable)
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2010-01-22'
+timestamp='2010-09-11'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -124,8 +124,9 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
@@ -282,6 +283,7 @@ case $basic_machine in
        | moxie \
        | mt \
        | msp430 \
+       | nds32 | nds32le | nds32be \
        | nios | nios2 \
        | ns16k | ns32k \
        | or32 \
@@ -295,7 +297,7 @@ case $basic_machine in
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
        | spu | strongarm \
-       | tahoe | thumb | tic4x | tic80 | tron \
+       | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
        | ubicom32 \
        | v850 | v850e \
        | we32k \
@@ -303,6 +305,15 @@ case $basic_machine in
        | z8k | z80)
                basic_machine=$basic_machine-unknown
                ;;
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
        m6811 | m68hc11 | m6812 | m68hc12 | picochip)
                # Motorola 68HC11/12.
                basic_machine=$basic_machine-unknown
@@ -334,7 +345,7 @@ case $basic_machine in
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
        | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
        | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
@@ -368,6 +379,7 @@ case $basic_machine in
        | mmix-* \
        | mt-* \
        | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
        | nios-* | nios2-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | orion-* \
@@ -482,6 +494,15 @@ case $basic_machine in
                basic_machine=powerpc-ibm
                os=-cnk
                ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
        c90)
                basic_machine=c90-cray
                os=-unicos
@@ -841,6 +862,12 @@ case $basic_machine in
        np1)
                basic_machine=np1-gould
                ;;
+        neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+        nse-tandem)
+               basic_machine=nse-tandem
+               ;;
        nsr-tandem)
                basic_machine=nsr-tandem
                ;;
@@ -1075,18 +1102,6 @@ case $basic_machine in
                basic_machine=t90-cray
                os=-unicos
                ;;
-       tic54x | c54x*)
-               basic_machine=tic54x-unknown
-               os=-coff
-               ;;
-       tic55x | c55x*)
-               basic_machine=tic55x-unknown
-               os=-coff
-               ;;
-       tic6x | c6x*)
-               basic_machine=tic6x-unknown
-               os=-coff
-               ;;
         # This must be matched before tile*.
         tilegx*)
                basic_machine=tilegx-unknown
@@ -1301,7 +1316,8 @@ case $os in
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1484,6 +1500,15 @@ case $basic_machine in
         c4x-* | tic4x-*)
                os=-coff
                ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
+               ;;
        # This must come before the *-dec entry.
        pdp10-*)
                os=-tops20
index df8eea7e4ce8862105fcd7929b20bdb45488048b..c3163befc32dcbba825430a2bb74cf43de39ed50 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2010-10-07.20; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+# Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -90,10 +90,18 @@ if test "$depmode" = msvcmsys; then
    # This is just like msvisualcpp but w/o cygpath translation.
    # Just convert the backslash-escaped backslashes to single forward
    # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
+   cygpath_u='sed s,\\\\,/,g'
    depmode=msvisualcpp
 fi
 
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -405,6 +413,52 @@ tru64)
    rm -f "$tmpdepfile"
    ;;
 
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/      \1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/        /
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
   # dependency tracking mechanisms from slower ones.
index c477512f877850d5e34fdda2160eb410421c133f..60dc485a37847f65428d846fcf694d940cfb071f 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Get modification time of a file or directory and pretty-print it.
 
-scriptversion=2010-02-22.21; # UTC
+scriptversion=2010-08-21.06; # UTC
 
 # Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009, 2010
 # Free Software Foundation, Inc.
@@ -29,6 +29,15 @@ scriptversion=2010-02-22.21; # UTC
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+fi
+
 case $1 in
   '')
      echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
@@ -51,6 +60,13 @@ EOF
     ;;
 esac
 
+error ()
+{
+  echo "$0: $1" >&2
+  exit 1
+}
+
+
 # Prevent date giving response in another language.
 LANG=C
 export LANG
@@ -100,6 +116,7 @@ month=
 command=
 until test $month
 do
+  test $# -gt 0 || error "failed parsing \`$ls_command /' output"
   shift
   # Add another shift to the command.
   command="$command shift;"
@@ -119,8 +136,10 @@ do
   esac
 done
 
+test -n "$month" || error "failed parsing \`$ls_command /' output"
+
 # Get the extended ls output of the file or directory.
-set dummy x`eval "$ls_command \"\$save_arg1\""`
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
 
 # Remove all preceding arguments
 eval $command
index 9ef9480f42debcb3a687724d488bb19a8a84fb51..f472b6535262ea544d7b830fc6ede83bd14a8f3c 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2010-03-07.08}
+\def\texinfoversion{2010-09-06.17}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -65,7 +65,6 @@
 \everyjob{\message{[Texinfo version \texinfoversion]}%
   \catcode`+=\active \catcode`\_=\active}
 
-
 \chardef\other=12
 
 % We never want plain's \outer definition of \+ in Texinfo.
 % that mark overfull boxes (in case you have decided
 % that the text looks ok even though it passes the margin).
 %
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
+\def\finalout{\overfullrule=0pt }
 
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
 \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
   \removelastskip\penalty-200\bigskip\fi\fi}
 
-% For @cropmarks command.
 % Do @cropmarks to get crop marks.
 %
 \newif\ifcropmarks
 \newhelp\EMsimple{Press RETURN to continue.}
 
 
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux/toc files.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
-  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence.  (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo.  Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
-  L\kern-.36em
-  {\setbox0=\hbox{T}%
-   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
-  \kern-.15em
-  \TeX
-}
-
 % Be sure we're in horizontal mode when doing a tie, since we make space
 % equivalent to this in @example-like environments. Otherwise, a space
 % at the beginning of a line will start with \penalty -- and
@@ -872,7 +762,7 @@ where each line of input produces a line of output.}
 
 % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
 % paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.
+% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
 %
 \newskip\inmarginspacing \inmarginspacing=1cm
 \def\strutdepth{\dp\strutbox}
@@ -919,6 +809,36 @@ where each line of input produces a line of output.}
   \temp
 }
 
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).  This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
 % @include FILE -- \input text of FILE.
 %
 \def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -1094,109 +1014,6 @@ where each line of input produces a line of output.}
 }
 
 
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode`\_ = \active
-  \gdef\mathunderscore{%
-    \catcode`\_=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care.  Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  % make the texinfo accent commands work in math mode
-  \let\"=\ddot
-  \let\'=\acute
-  \let\==\bar
-  \let\^=\hat
-  \let\`=\grave
-  \let\u=\breve
-  \let\v=\check
-  \let\~=\tilde
-  \let\dotaccent=\dot
-  $\finishmath
-}
-\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \catcode`' = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-    \let' = \ptexquoteright
-  }
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em.  So do
-% whichever is larger.
-%
-\def\dots{%
-  \leavevmode
-  \setbox0=\hbox{...}% get width of three periods
-  \ifdim\wd0 > 1.5em
-    \dimen0 = \wd0
-  \else
-    \dimen0 = 1.5em
-  \fi
-  \hbox to \dimen0{%
-    \hskip 0pt plus.25fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \dots
-  \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
 % @refill is a no-op.
 \let\refill=\relax
 
@@ -1491,6 +1308,7 @@ output) for that.)}
       \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
       %
       % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\partentry##1##2##3##4{}% ignore parts in the outlines
       \def\numchapentry##1##2##3##4{%
        \def\thischapnum{##2}%
        \def\thissecnum{0}%
@@ -2104,8 +1922,8 @@ end
 \font\reducedsy=cmsy10
 \def\reducedecsize{1000}
 
-% reset the current fonts
-\textfonts
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts            % reset the current fonts
 \rm
 } % end of 11pt text font size definitions
 
@@ -2235,11 +2053,9 @@ end
 \font\reducedsy=cmsy9
 \def\reducedecsize{0900}
 
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
+\divide\parskip by 2  % reduce space between paragraphs
+\textleading = 12pt   % line spacing for 10pt CM
+\textfonts            % reset the current fonts
 \rm
 } % end of 10pt text font size definitions
 
@@ -2248,8 +2064,9 @@ end
 %   @fonttextsize 10
 % (or 11) to redefine the text font size.  pt is assumed.
 %
-\def\xword{10}
 \def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
 %
 \parseargdef\fonttextsize{%
   \def\textsizearg{#1}%
@@ -2307,7 +2124,7 @@ end
   \let\tenttsl=\titlettsl
   \def\curfontsize{title}%
   \def\lsize{chap}\def\lllsize{subsec}%
-  \resetmathfonts \setleading{25pt}}
+  \resetmathfonts \setleading{27pt}}
 \def\titlefont#1{{\titlefonts\rmisbold #1}}
 \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
@@ -2459,14 +2276,19 @@ end
 
 \let\markupsetuplqcode \markupsetcodequoteleft
 \let\markupsetuprqcode \markupsetcodequoteright
+%
 \let\markupsetuplqexample \markupsetcodequoteleft
 \let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
 \let\markupsetuplqverb \markupsetcodequoteleft
 \let\markupsetuprqverb \markupsetcodequoteright
+%
 \let\markupsetuplqverbatim \markupsetcodequoteleft
 \let\markupsetuprqverbatim \markupsetcodequoteright
 
-\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
 \let\markupsetuplqkbd \markupsetnoligaturesquoteleft
 
 % Allow an option to not replace quotes with a regular directed right
@@ -2506,12 +2328,12 @@ end
 
 % Font commands.
 
-% #1 is the font command (\sl vs. \it), #2 is the text to slant.
+% #1 is the font command (\sl or \it), #2 is the text to slant.
 % If we are in a monospaced environment, however, 1) always use \ttsl,
 % and 2) do not add an italic correction.
 \def\dosmartslant#1#2{%
   \ifusingtt 
-    {\ttsl #2\let\next=\relax}%
+    {{\ttsl #2}\let\next=\relax}%
     {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
   \next
 }
@@ -2831,8 +2653,188 @@ end
   \fi
 }
 
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
 
 \message{glyphs,}
+% and logos.
+
+% @@ prints an @.
+\def\@{\char64 }
+
+% Used to generate quoted braces.  Unless we're in typewriter, use
+% \ecfont because the CM text fonts do not have braces, and we don't
+% want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{%
+     \ifx\textnominalsize\xwordpt
+       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+       % Revert to plain's \scriptsize, which is 7pt.
+       \count255=\the\fam $\fam\count255 \scriptstyle A$%
+     \else
+       % For 11pt, we can use our lllsize.
+       \selectfonts\lllsize A%
+     \fi
+     }%
+     \vss
+  }}%
+  \kern-.15em
+  \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
 
 % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 %
@@ -3219,10 +3221,14 @@ end
 
 \def\headings #1 {\csname HEADINGS#1\endcsname}
 
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+  \evenheadline={\hfil}\evenfootline={\hfil}%
+   \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff  % it's the default
+
 % When we turn headings on, set the page number to 1.
 % For double-sided printing, put current file name in lower left corner,
 % chapter name on inside top of right hand pages, document
@@ -3334,7 +3340,7 @@ end
     \begingroup
       \advance\leftskip by-\tableindent
       \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil
+      \advance\rightskip by0pt plus1fil\relax
       \leavevmode\unhbox0\par
     \endgroup
     %
@@ -4146,11 +4152,14 @@ end
   \def\@{@}% change to @@ when we switch to @ as escape char in index files.
   \def\ {\realbackslash\space }%
   %
-  % Need these in case \tex is in effect and \{ is a \delimiter again.
-  % But can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.
-  \let\{ = \mylbrace
-  \let\} = \myrbrace
+  % Need these unexpandable (because we define \tt as a dummy)
+  % definitions when @{ or @} appear in index entry text.  Also, more
+  % complicated, when \tex is in effect and \{ is a \delimiter again.
+  % We can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.  Perhaps we
+  % should define @lbrace and @rbrace commands a la @comma.
+  \def\{{{\tt\char123}}%
+  \def\}{{\tt\char125}}%
   %
   % I don't entirely understand this, but when an index entry is
   % generated from a macro call, the \endinput which \scanmacro inserts
@@ -4203,7 +4212,7 @@ end
 \def\commondummies{%
   %
   % \definedummyword defines \#1 as \string\#1\space, thus effectively
-  % preventing its expansion.  This is used only for control% words,
+  % preventing its expansion.  This is used only for control words,
   % not control letters, because the \space would be incorrect for
   % control characters, but is needed to separate the control word
   % from whatever follows.
@@ -4222,6 +4231,7 @@ end
   \commondummiesnofonts
   %
   \definedummyletter\_%
+  \definedummyletter\-%
   %
   % Non-English letters.
   \definedummyword\AA
@@ -4258,20 +4268,24 @@ end
   \definedummyword\TeX
   %
   % Assorted special characters.
+  \definedummyword\arrow
   \definedummyword\bullet
   \definedummyword\comma
   \definedummyword\copyright
   \definedummyword\registeredsymbol
   \definedummyword\dots
   \definedummyword\enddots
+  \definedummyword\entrybreak
   \definedummyword\equiv
   \definedummyword\error
   \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\geq
   \definedummyword\guillemetleft
   \definedummyword\guillemetright
   \definedummyword\guilsinglleft
   \definedummyword\guilsinglright
-  \definedummyword\expansion
+  \definedummyword\leq
   \definedummyword\minus
   \definedummyword\ogonek
   \definedummyword\pounds
@@ -4328,7 +4342,9 @@ end
   \definedummyword\b
   \definedummyword\i
   \definedummyword\r
+  \definedummyword\sansserif
   \definedummyword\sc
+  \definedummyword\slanted
   \definedummyword\t
   %
   % Commands that take arguments.
@@ -4337,10 +4353,12 @@ end
   \definedummyword\code
   \definedummyword\command
   \definedummyword\dfn
+  \definedummyword\dmn
   \definedummyword\email
   \definedummyword\emph
   \definedummyword\env
   \definedummyword\file
+  \definedummyword\indicateurl
   \definedummyword\kbd
   \definedummyword\key
   \definedummyword\math
@@ -4368,7 +4386,7 @@ end
   \def\definedummyaccent##1{\let##1\asis}%
   % We can just ignore other control letters.
   \def\definedummyletter##1{\let##1\empty}%
-  % Hopefully, all control words can become @asis.
+  % All control words become @asis by default; overrides below.
   \let\definedummyword\definedummyaccent
   %
   \commondummiesnofonts
@@ -4380,8 +4398,14 @@ end
   %
   \def\ { }%
   \def\@{@}%
-  % how to handle braces?
   \def\_{\normalunderscore}%
+  \def\-{}% @- shouldn't affect sorting
+  %
+  % Unfortunately, texindex is not prepared to handle braces in the
+  % content at all.  So for index sorting, we map @{ and @} to strings
+  % starting with |, since that ASCII character is between ASCII { and }.
+  \def\{{|a}%
+  \def\}{|b}%
   %
   % Non-English letters.
   \def\AA{AA}%
@@ -4409,6 +4433,7 @@ end
   %
   % Assorted special characters.
   % (The following {} will end up in the sort string, but that's ok.)
+  \def\arrow{->}%
   \def\bullet{bullet}%
   \def\comma{,}%
   \def\copyright{copyright}%
@@ -4418,10 +4443,12 @@ end
   \def\error{error}%
   \def\euro{euro}%
   \def\expansion{==>}%
+  \def\geq{>=}%
   \def\guillemetleft{<<}%
   \def\guillemetright{>>}%
   \def\guilsinglleft{<}%
   \def\guilsinglright{>}%
+  \def\leq{<=}%
   \def\minus{-}%
   \def\point{.}%
   \def\pounds{pounds}%
@@ -4436,6 +4463,9 @@ end
   \def\result{=>}%
   \def\textdegree{o}%
   %
+  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+  \else \indexlquoteignore \fi
+  %
   % We need to get rid of all macros, leaving only the arguments (if present).
   % Of course this is not nearly correct, but it is the best we can do for now.
   % makeinfo does not expand macros in the argument to @deffn, which ends up
@@ -4449,6 +4479,11 @@ end
   \macrolist
 }
 
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
 \let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
@@ -4706,7 +4741,6 @@ end
 % But this freezes the catcodes in the argument, and can cause problems to
 % @code, which sets - active.  This problem was fixed by a kludge---
 % ``-'' was active throughout whole index, but this isn't really right.
-%
 % The right solution is to prevent \entry from swallowing the whole text.
 %                                 --kasal, 21nov03
 \def\entry{%
@@ -4743,10 +4777,17 @@ end
     % columns.
     \vskip 0pt plus1pt
     %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
     % Swallow the left brace of the text (first parameter):
     \afterassignment\doentry
     \let\temp =
 }
+\def\entrybreak{\unskip\space\ignorespaces}%
 \def\doentry{%
     \bgroup % Instead of the swallowed brace.
       \noindent
@@ -4979,7 +5020,22 @@ end
 \message{sectioning,}
 % Chapters, sections, etc.
 
-% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+  \chapoddpage
+  \null
+  \vskip.3\vsize  % move it down on the page a bit
+  \begingroup
+    \noindent \titlefonts\rmisbold #1\par % the text
+    \let\lastnode=\empty      % no node to associate with
+    \writetocentry{part}{#1}{}% but put it in the toc
+    \headingsoff              % no headline or footline on the part page
+    \chapoddpage
+  \endgroup
+}
+
+% \unnumberedno is an oxymoron.  But we count the unnumbered
 % sections so that we can refer to them unambiguously in the pdf
 % outlines by their "section number".  We avoid collisions with chapter
 % numbers by starting them at 10000.  (If a document ever has 10000
@@ -5058,8 +5114,8 @@ end
 \chardef\maxseclevel = 3
 %
 % A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
 %
 % Trace whether the current chapter is an appendix or not:
 % \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -5084,8 +5140,8 @@ end
   % The heading type:
   \def\headtype{#1}%
   \if \headtype U%
-    \ifnum \absseclevel < \unmlevel
-      \chardef\unmlevel = \absseclevel
+    \ifnum \absseclevel < \unnlevel
+      \chardef\unnlevel = \absseclevel
     \fi
   \else
     % Check for appendix sections:
@@ -5097,10 +5153,10 @@ end
       \fi\fi
     \fi
     % Check for numbered within unnumbered:
-    \ifnum \absseclevel > \unmlevel
+    \ifnum \absseclevel > \unnlevel
       \def\headtype{U}%
     \else
-      \chardef\unmlevel = 3
+      \chardef\unnlevel = 3
     \fi
   \fi
   % Now print the heading:
@@ -5352,9 +5408,8 @@ end
   \chappager
   \ifodd\pageno \else
     \begingroup
-      \evenheadline={\hfil}\evenfootline={\hfil}%
-      \oddheadline={\hfil}\oddfootline={\hfil}%
-      \hbox to 0pt{}%
+      \headingsoff
+      \null
       \chappager
     \endgroup
   \fi
@@ -5797,6 +5852,7 @@ end
 \def\summarycontents{%
   \startcontents{\putwordShortTOC}%
     %
+    \let\partentry = \shortpartentry
     \let\numchapentry = \shortchapentry
     \let\appentry = \shortchapentry
     \let\unnchapentry = \shortunnchapentry
@@ -5852,6 +5908,19 @@ end
 % The last argument is the page number.
 % The arguments in between are the chapter number, section number, ...
 
+% Parts, in the main contents.  Replace the part number, which doesn't
+% exist, with an empty box.  Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+  \penalty-300
+  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
 % Chapters, in the main contents.
 \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
 %
@@ -5941,9 +6010,9 @@ end
 \message{environments,}
 % @foo ... @end foo.
 
-% @tex ... @end tex    escapes into raw Tex temporarily.
+% @tex ... @end tex    escapes into raw TeX temporarily.
 % One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
 
 \envdef\tex{%
   \setupmarkupstyle{tex}%
@@ -6166,41 +6235,42 @@ end
 }
 
 % We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
-  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
-  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command.  #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
   \expandafter\let\csname E#1\endcsname \afterenvbreak
   \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
 }
 
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
-  \makedispenv{#1}{#3}
-  \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+  \makedispenvdef{#1}{#3}%
+  \makedispenvdef{#2}{#3}%
 }
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
 %
 % @smallexample and @smalllisp: use smaller fonts.
 % Originally contributed by Pavel@xerox.
 %
-\maketwodispenv{lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
   \nonfillstart
   \tt\setupmarkupstyle{example}%
   \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
+  \gobble % eat return
 }
 % @display/@smalldisplay: same as @lisp except keep current font.
 %
-\makedispenv {display}{%
+\makedispenvdef{display}{%
   \nonfillstart
   \gobble
 }
 
 % @format/@smallformat: same as @display except don't narrow margins.
 %
-\makedispenv{format}{%
+\makedispenvdef{format}{%
   \let\nonarrowing = t%
   \nonfillstart
   \gobble
@@ -6219,7 +6289,7 @@ end
 \envdef\flushright{%
   \let\nonarrowing = t%
   \nonfillstart
-  \advance\leftskip by 0pt plus 1fill
+  \advance\leftskip by 0pt plus 1fill\relax
   \gobble
 }
 \let\Eflushright = \afterenvbreak
@@ -6254,6 +6324,8 @@ end
 % we're doing normal filling.  So, when using \aboveenvbreak and
 % \afterenvbreak, temporarily make \parskip 0.
 %
+\makedispenvdef{quotation}{\quotationstart}
+%
 \def\quotationstart{%
   {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
   \parindent=0pt
@@ -6269,17 +6341,6 @@ end
   \parsearg\quotationlabel
 }
 
-\envdef\quotation{%
-  \setnormaldispenv
-  \quotationstart
-}
-
-\envdef\smallquotation{%
-  \setsmalldispenv
-  \quotationstart
-}
-\let\Esmallquotation = \Equotation
-
 % We have retained a nonzero parskip for the environment, since we're
 % doing normal filling.
 %
@@ -6291,6 +6352,7 @@ end
   \fi
   {\parskip=0pt \afterenvbreak}%
 }
+\def\Esmallquotation{\Equotation}
 
 % If we're given an argument, typeset it in bold with a colon after.
 \def\quotationlabel#1{%
@@ -6347,21 +6409,28 @@ end
 
 % Setup for the @verbatim environment
 %
-% Real tab expansion
+% Real tab expansion.
 \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
 %
-\def\starttabbox{\setbox0=\hbox\bgroup}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs.  The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group.  Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset.  Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
 %
 \begingroup
   \catcode`\^^I=\active
   \gdef\tabexpand{%
     \catcode`\^^I=\active
     \def^^I{\leavevmode\egroup
-      \dimen0=\wd0 % the width so far, or since the previous tab
-      \divide\dimen0 by\tabw
-      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
-      \wd0=\dimen0 \box0 \starttabbox
+      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+      \divide\dimen\verbbox by\tabw
+      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
+      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
     }%
   }
 \endgroup
@@ -6370,15 +6439,16 @@ end
 \def\setupverbatim{%
   \let\nonarrowing = t%
   \nonfillstart
-  % Easiest (and conventionally used) font for verbatim
-  \tt
-  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \tt % easiest (and conventionally used) font for verbatim
+  % The \leavevmode here is for blank lines.  Otherwise, we would
+  % never \starttabox and the \egroup would end verbatim mode.
+  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
   \tabexpand
   \setupmarkupstyle{verbatim}%
   % Respect line breaks,
   % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
+  % make each space count.
+  % Must do in this order:
   \obeylines \uncatcodespecials \sepspaces
   \everypar{\starttabbox}%
 }
@@ -6521,7 +6591,7 @@ end
     #1#2 \endheader
     % common ending:
     \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil
+    \advance\rightskip by 0pt plus 1fil\relax
     \endgraf
     \nobreak\vskip -\parskip
     \penalty\defunpenalty  % signal to \startdefun and \dodefunx
@@ -6893,17 +6963,18 @@ end
 
 % Macro bodies are absorbed as an argument in a context where
 % all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
 % Non-ASCII encodings make 8-bit characters active, so un-activate
 % them to avoid their expansion.  Must do this non-globally, to
 % confine the change to the current group.
-
+%
 % It's necessary to have hard CRs when the macro is executed. This is
-% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
 % body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
   \catcode`\"=\other
   \catcode`\+=\other
   \catcode`\<=\other
@@ -6916,13 +6987,13 @@ end
   \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
 }
 
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
   \scanctxt
   \catcode`\\=\other
   \catcode`\^^M=\other
 }
 
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
   \scanctxt
   \catcode`\{=\other
   \catcode`\}=\other
@@ -6930,30 +7001,48 @@ end
   \usembodybackslash
 }
 
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
   \scanctxt
-  \catcode`\\=\other
+  \catcode`\\=0
 }
+% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }.  Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+% 
+% We already have @{ and @}.  For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+% 
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent.  Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
 
 % \mbodybackslash is the definition of \ in @macro bodies.
 % It maps \foo\ => \csname macarg.foo\endcsname => #N
 % where N is the macro parameter number.
 % We define \csname macarg.\endcsname to be \realbackslash, so
 % \\ in macro replacement text gets you a backslash.
-
+%
 {\catcode`@=0 @catcode`@\=@active
  @gdef@usembodybackslash{@let\=@mbodybackslash}
  @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
 }
 \expandafter\def\csname macarg.\endcsname{\realbackslash}
 
+\def\margbackslash#1{\char`\#1 }
+
 \def\macro{\recursivefalse\parsearg\macroxxx}
 \def\rmacro{\recursivetrue\parsearg\macroxxx}
 
 \def\macroxxx#1{%
-  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \getargs{#1}% now \macname is the macname and \argl the arglist
   \ifx\argl\empty       % no arguments
-     \paramno=0%
+     \paramno=0
   \else
      \expandafter\parsemargdef \argl;%
   \fi
@@ -7002,28 +7091,32 @@ end
 % an opening brace, and that opening brace is not consumed.
 \def\getargs#1{\getargsxxx#1{}}
 \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
 \def\getmacargs#1{\def\argl{#1}}
 
 % Parse the optional {params} list.  Set up \paramno and \paramlist
 % so \defmacro knows what to do.  Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% in the params list to be ##N where N is the position in that list.
 % That gets used by \mbodybackslash (above).
-
+%
 % We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX:  let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
 % unexpandable, insert that wherever you need a #, and then redefine
 % it to # just before using the token list produced.
 %
 % The same technique is used to protect \eatspaces till just before
 % the macro is used.
 
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
-        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdef#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \let\xeatspaces\relax
+  \parsemargdefxxx#1,;,%
+}
 \def\parsemargdefxxx#1,{%
   \if#1;\let\next=\relax
   \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1%
+    \advance\paramno by 1
     \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
         {\xeatspaces{\hash\the\paramno}}%
     \edef\paramlist{\paramlist\hash\the\paramno,}%
@@ -7031,7 +7124,7 @@ end
 
 % These two commands read recursive and nonrecursive macro bodies.
 % (They're different since rec and nonrec macros end differently.)
-
+%
 \long\def\parsemacbody#1@end macro%
 {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
 \long\def\parsermacbody#1@end rmacro%
@@ -7042,6 +7135,7 @@ end
 % Much magic with \expandafter here.
 % \xdef is used so that macro definitions will survive the file
 % they're defined in; @include reads the file inside a group.
+%
 \def\defmacro{%
   \let\hash=##% convert placeholders to macro parameter chars
   \ifrecursive
@@ -7105,7 +7199,8 @@ end
 % \braceorline decides whether the next nonwhitespace character is a
 % {.  If so it reads up to the closing }, if not, it reads the whole
 % line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
+% as an argument (by \parsebrace or \parsearg).
+% 
 \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
   \ifx\nchar\bgroup\else
@@ -7115,7 +7210,8 @@ end
 
 % @alias.
 % We need some trickery to remove the optional spaces around the equal
-% sign.  Just make them active and then expand them all to nothing.
+% sign.  Make them active and then expand them all to nothing.
+%
 \def\alias{\parseargusing\obeyspaces\aliasxxx}
 \def\aliasxxx #1{\aliasyyy#1\relax}
 \def\aliasyyy #1=#2\relax{%
@@ -7373,7 +7469,8 @@ end
     \angleleft un\-de\-fined\angleright
     \iflinks
       \ifhavexrefs
-        \message{\linenumber Undefined cross reference `#1'.}%
+        {\toks0 = {#1}% avoid expansion of possibly-complex value
+         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
       \else
         \ifwarnedxrefs\else
           \global\warnedxrefstrue
@@ -7703,7 +7800,7 @@ end
 % #2 is (optional) width, #3 is (optional) height.
 % #4 is (ignored optional) html alt text.
 % #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
 \newif\ifimagevmode
 \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
   \catcode`\^^M = 5     % in case we're inside an example
@@ -8355,8 +8452,8 @@ directory should work if nowhere else does.}
   \gdef^^ea{\ogonek{e}}
   \gdef^^eb{\"e}
   \gdef^^ec{\v e}
-  \gdef^^ed{\'\i}
-  \gdef^^ee{\^\i}
+  \gdef^^ed{\'{\dotless{i}}}
+  \gdef^^ee{\^{\dotless{i}}}
   \gdef^^ef{\v d}
   %
   \gdef^^f0{\dh}
@@ -8915,8 +9012,8 @@ directory should work if nowhere else does.}
 % Prevent underfull vbox error messages.
 \vbadness = 10000
 
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
 
 % Following George Bush, get rid of widows and orphans.
 \widowpenalty=10000
index 7a3a9f00323352569934ad472a5a4b67032e0a07..7b42432b4d1a97348dfbb1cd5e6d53b9c7e83ad7 100644 (file)
@@ -16,7 +16,7 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-/* _GL_WARN_ON_USE(function, "literal string") issues a declaration
+/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
    for FUNCTION which will then trigger a compiler warning containing
    the text of "literal string" anywhere that function is called, if
    supported by the compiler.  If the compiler does not support this
 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
 #  define _GL_WARN_ON_USE(function, message) \
 extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
-
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function.  */
+#  define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function
 # else /* Unsupported.  */
 #  define _GL_WARN_ON_USE(function, message) \
-extern int _gl_warn_on_use
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
+   is like _GL_WARN_ON_USE (function, "string"), except that the function is
+   declared with the given prototype, consisting of return type, parameters,
+   and attributes.
+   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
+   not work in this case.  */
+#ifndef _GL_WARN_ON_USE_CXX
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes \
+     __attribute__ ((__warning__ (msg)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function.  */
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes
+# else /* Unsupported.  */
+#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_EXTERN_C declaration;
+   performs the declaration with C linkage.  */
+#ifndef _GL_WARN_EXTERN_C
+# if defined __cplusplus
+#  define _GL_WARN_EXTERN_C extern "C"
+# else
+#  define _GL_WARN_EXTERN_C extern
 # endif
 #endif
index f55a85d723faa8ee75a46745833aa0d335fde3bf..a7d8c63a33d60bc570e77e3b8f892e46fc7166a1 100644 (file)
 /* Define to make the limit macros in <stdint.h> visible. */
 #undef GL_TRIGGER_STDC_LIMIT_MACROS
 
-/* Define to 1 when using the gnulib module btowc. */
-#undef GNULIB_BTOWC
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module areadlinkat shall be considered present. */
+#undef GNULIB_AREADLINKAT
 
-/* Define to 1 when using the gnulib module canonicalize. */
-#undef GNULIB_CANONICALIZE
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module canonicalize-lgpl shall be considered present. */
+#undef GNULIB_CANONICALIZE_LGPL
 
-/* Define to 1 when using the gnulib module canonicalize_file_name. */
-#undef GNULIB_CANONICALIZE_FILE_NAME
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module close-stream shall be considered present. */
+#undef GNULIB_CLOSE_STREAM
 
-/* Define to 1 when using the gnulib module chown. */
-#undef GNULIB_CHOWN
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module dirent-safer shall be considered present. */
+#undef GNULIB_DIRENT_SAFER
 
-/* Define to 1 when using the gnulib module close. */
-#undef GNULIB_CLOSE
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module dirname shall be considered present. */
+#undef GNULIB_DIRNAME
 
-/* Define to 1 when using the gnulib module close-stream. */
-#undef GNULIB_CLOSE_STREAM
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module fdopendir shall be considered present. */
+#undef GNULIB_FDOPENDIR
 
-/* Define to 1 when using the gnulib module dirent-safer. */
-#undef GNULIB_DIRENT_SAFER
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module fdutimensat shall be considered present. */
+#undef GNULIB_FDUTIMENSAT
 
-/* Define to 1 when using the gnulib module dirfd. */
-#undef GNULIB_DIRFD
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+   whether the gnulib module malloc-gnu shall be considered present. */
+#undef GNULIB_MALLOC_GNU
 
-/* Define to 1 when using the gnulib module dirname. */
-#undef GNULIB_DIRNAME
+/* Define to 1 to add extern declaration of program_invocation_name to argp.h
+   */
+#undef GNULIB_PROGRAM_INVOCATION_NAME
 
-/* Define to 1 when using the gnulib module dup2. */
-#undef GNULIB_DUP2
+/* Define to 1 to add extern declaration of program_invocation_short_name to
+   argp.h */
+#undef GNULIB_PROGRAM_INVOCATION_SHORT_NAME
 
-/* Define to 1 when using the gnulib module environ. */
-#undef GNULIB_ENVIRON
+/* Define to 1 when the gnulib module btowc should be tested. */
+#undef GNULIB_TEST_BTOWC
 
-/* Define to 1 when using the gnulib module fchdir. */
-#undef GNULIB_FCHDIR
+/* Define to 1 when the gnulib module canonicalize_file_name should be tested.
+   */
+#undef GNULIB_TEST_CANONICALIZE_FILE_NAME
 
-/* Define to 1 when using the gnulib module fclose. */
-#undef GNULIB_FCLOSE
+/* Define to 1 when the gnulib module chown should be tested. */
+#undef GNULIB_TEST_CHOWN
 
-/* Define to 1 when using the gnulib module fcntl. */
-#undef GNULIB_FCNTL
+/* Define to 1 when the gnulib module cloexec should be tested. */
+#undef GNULIB_TEST_CLOEXEC
 
-/* Define to 1 when using the gnulib module fdopendir. */
-#undef GNULIB_FDOPENDIR
+/* Define to 1 when the gnulib module close should be tested. */
+#undef GNULIB_TEST_CLOSE
 
-/* Define to 1 when using the gnulib module fseeko. */
-#undef GNULIB_FSEEKO
+/* Define to 1 when the gnulib module dirfd should be tested. */
+#undef GNULIB_TEST_DIRFD
 
-/* Define to 1 when using the gnulib module ftruncate. */
-#undef GNULIB_FTRUNCATE
+/* Define to 1 when the gnulib module dup2 should be tested. */
+#undef GNULIB_TEST_DUP2
 
-/* Define to 1 when using the gnulib module getcwd. */
-#undef GNULIB_GETCWD
+/* Define to 1 when the gnulib module environ should be tested. */
+#undef GNULIB_TEST_ENVIRON
 
-/* Define to 1 when using the gnulib module getdelim. */
-#undef GNULIB_GETDELIM
+/* Define to 1 when the gnulib module fchdir should be tested. */
+#undef GNULIB_TEST_FCHDIR
 
-/* Define to 1 when using the gnulib module getdtablesize. */
-#undef GNULIB_GETDTABLESIZE
+/* Define to 1 when the gnulib module fclose should be tested. */
+#undef GNULIB_TEST_FCLOSE
 
-/* Define to 1 when using the gnulib module getline. */
-#undef GNULIB_GETLINE
+/* Define to 1 when the gnulib module fcntl should be tested. */
+#undef GNULIB_TEST_FCNTL
 
-/* Define to 1 when using the gnulib module getopt-gnu. */
-#undef GNULIB_GETOPT_GNU
+/* Define to 1 when the gnulib module fdopendir should be tested. */
+#undef GNULIB_TEST_FDOPENDIR
 
-/* Define to 1 when using the gnulib module getpagesize. */
-#undef GNULIB_GETPAGESIZE
+/* Define to 1 when the gnulib module fseeko should be tested. */
+#undef GNULIB_TEST_FSEEKO
 
-/* Define to 1 when using the gnulib module gettimeofday. */
-#undef GNULIB_GETTIMEOFDAY
+/* Define to 1 when the gnulib module futimens should be tested. */
+#undef GNULIB_TEST_FUTIMENS
 
-/* Define to 1 when using the gnulib module lchown. */
-#undef GNULIB_LCHOWN
+/* Define to 1 when the gnulib module getcwd should be tested. */
+#undef GNULIB_TEST_GETCWD
 
-/* Define to 1 when using the gnulib module lseek. */
-#undef GNULIB_LSEEK
+/* Define to 1 when the gnulib module getdelim should be tested. */
+#undef GNULIB_TEST_GETDELIM
 
-/* Define to 1 when using the gnulib module lstat. */
-#undef GNULIB_LSTAT
+/* Define to 1 when the gnulib module getdtablesize should be tested. */
+#undef GNULIB_TEST_GETDTABLESIZE
 
-/* Define to indicate the 'malloc' module. */
-#undef GNULIB_MALLOC_GNU
+/* Define to 1 when the gnulib module getline should be tested. */
+#undef GNULIB_TEST_GETLINE
 
-/* Define to 1 when using the gnulib module malloc-posix. */
-#undef GNULIB_MALLOC_POSIX
+/* Define to 1 when the gnulib module getopt-gnu should be tested. */
+#undef GNULIB_TEST_GETOPT_GNU
 
-/* Define to 1 when using the gnulib module mbrtowc. */
-#undef GNULIB_MBRTOWC
+/* Define to 1 when the gnulib module getpagesize should be tested. */
+#undef GNULIB_TEST_GETPAGESIZE
 
-/* Define to 1 when using the gnulib module mbscasecmp. */
-#undef GNULIB_MBSCASECMP
+/* Define to 1 when the gnulib module gettimeofday should be tested. */
+#undef GNULIB_TEST_GETTIMEOFDAY
 
-/* Define to 1 when using the gnulib module mbsinit. */
-#undef GNULIB_MBSINIT
+/* Define to 1 when the gnulib module lchown should be tested. */
+#undef GNULIB_TEST_LCHOWN
 
-/* Define to 1 when using the gnulib module mbsrtowcs. */
-#undef GNULIB_MBSRTOWCS
+/* Define to 1 when the gnulib module link should be tested. */
+#undef GNULIB_TEST_LINK
 
-/* Define to 1 when using the gnulib module memchr. */
-#undef GNULIB_MEMCHR
+/* Define to 1 when the gnulib module linkat should be tested. */
+#undef GNULIB_TEST_LINKAT
 
-/* Define to 1 when using the gnulib module mempcpy. */
-#undef GNULIB_MEMPCPY
+/* Define to 1 when the gnulib module lseek should be tested. */
+#undef GNULIB_TEST_LSEEK
 
-/* Define to 1 when using the gnulib module memrchr. */
-#undef GNULIB_MEMRCHR
+/* Define to 1 when the gnulib module lstat should be tested. */
+#undef GNULIB_TEST_LSTAT
 
-/* Define to 1 when using the gnulib module mkdtemp. */
-#undef GNULIB_MKDTEMP
+/* Define to 1 when the gnulib module malloc-posix should be tested. */
+#undef GNULIB_TEST_MALLOC_POSIX
 
-/* Define to 1 when using the gnulib module mktime. */
-#undef GNULIB_MKTIME
+/* Define to 1 when the gnulib module mbrtowc should be tested. */
+#undef GNULIB_TEST_MBRTOWC
 
-/* Define to 1 when using the gnulib module nl_langinfo. */
-#undef GNULIB_NL_LANGINFO
+/* Define to 1 when the gnulib module mbscasecmp should be tested. */
+#undef GNULIB_TEST_MBSCASECMP
 
-/* Define to 1 when using the gnulib module open. */
-#undef GNULIB_OPEN
+/* Define to 1 when the gnulib module mbsinit should be tested. */
+#undef GNULIB_TEST_MBSINIT
 
-/* Define to 1 to add extern declaration of program_invocation_name to argp.h
-   */
-#undef GNULIB_PROGRAM_INVOCATION_NAME
+/* Define to 1 when the gnulib module mbsrtowcs should be tested. */
+#undef GNULIB_TEST_MBSRTOWCS
 
-/* Define to 1 to add extern declaration of program_invocation_short_name to
-   argp.h */
-#undef GNULIB_PROGRAM_INVOCATION_SHORT_NAME
+/* Define to 1 when the gnulib module memchr should be tested. */
+#undef GNULIB_TEST_MEMCHR
+
+/* Define to 1 when the gnulib module mempcpy should be tested. */
+#undef GNULIB_TEST_MEMPCPY
+
+/* Define to 1 when the gnulib module memrchr should be tested. */
+#undef GNULIB_TEST_MEMRCHR
+
+/* Define to 1 when the gnulib module mkdtemp should be tested. */
+#undef GNULIB_TEST_MKDTEMP
+
+/* Define to 1 when the gnulib module mkfifo should be tested. */
+#undef GNULIB_TEST_MKFIFO
+
+/* Define to 1 when the gnulib module mkfifoat should be tested. */
+#undef GNULIB_TEST_MKFIFOAT
+
+/* Define to 1 when the gnulib module mknod should be tested. */
+#undef GNULIB_TEST_MKNOD
+
+/* Define to 1 when the gnulib module mknodat should be tested. */
+#undef GNULIB_TEST_MKNODAT
+
+/* Define to 1 when the gnulib module mktime should be tested. */
+#undef GNULIB_TEST_MKTIME
+
+/* Define to 1 when the gnulib module nl_langinfo should be tested. */
+#undef GNULIB_TEST_NL_LANGINFO
+
+/* Define to 1 when the gnulib module open should be tested. */
+#undef GNULIB_TEST_OPEN
 
-/* Define to 1 when using the gnulib module rawmemchr. */
-#undef GNULIB_RAWMEMCHR
+/* Define to 1 when the gnulib module rawmemchr should be tested. */
+#undef GNULIB_TEST_RAWMEMCHR
 
-/* Define to 1 when using the gnulib module readlink. */
-#undef GNULIB_READLINK
+/* Define to 1 when the gnulib module readlink should be tested. */
+#undef GNULIB_TEST_READLINK
 
-/* Define to 1 when using the gnulib module realloc-posix. */
-#undef GNULIB_REALLOC_POSIX
+/* Define to 1 when the gnulib module readlinkat should be tested. */
+#undef GNULIB_TEST_READLINKAT
 
-/* Define to 1 when using the gnulib module rmdir. */
-#undef GNULIB_RMDIR
+/* Define to 1 when the gnulib module realloc-posix should be tested. */
+#undef GNULIB_TEST_REALLOC_POSIX
 
-/* Define to 1 when using the gnulib module rpmatch. */
-#undef GNULIB_RPMATCH
+/* Define to 1 when the gnulib module realpath should be tested. */
+#undef GNULIB_TEST_REALPATH
 
-/* Define to 1 when using the gnulib module setenv. */
-#undef GNULIB_SETENV
+/* Define to 1 when the gnulib module rename should be tested. */
+#undef GNULIB_TEST_RENAME
 
-/* Define to 1 when using the gnulib module sleep. */
-#undef GNULIB_SLEEP
+/* Define to 1 when the gnulib module renameat should be tested. */
+#undef GNULIB_TEST_RENAMEAT
 
-/* Define to 1 when using the gnulib module snprintf. */
-#undef GNULIB_SNPRINTF
+/* Define to 1 when the gnulib module rmdir should be tested. */
+#undef GNULIB_TEST_RMDIR
 
-/* Define to 1 when using the gnulib module stat. */
-#undef GNULIB_STAT
+/* Define to 1 when the gnulib module rpmatch should be tested. */
+#undef GNULIB_TEST_RPMATCH
 
-/* Define to 1 when using the gnulib module stpcpy. */
-#undef GNULIB_STPCPY
+/* Define to 1 when the gnulib module setenv should be tested. */
+#undef GNULIB_TEST_SETENV
 
-/* Define to 1 when using the gnulib module strchrnul. */
-#undef GNULIB_STRCHRNUL
+/* Define to 1 when the gnulib module sleep should be tested. */
+#undef GNULIB_TEST_SLEEP
 
-/* Define to 1 when using the gnulib module strdup. */
-#undef GNULIB_STRDUP
+/* Define to 1 when the gnulib module snprintf should be tested. */
+#undef GNULIB_TEST_SNPRINTF
 
-/* Define to 1 when using the gnulib module strerror. */
-#undef GNULIB_STRERROR
+/* Define to 1 when the gnulib module stat should be tested. */
+#undef GNULIB_TEST_STAT
 
-/* Define to 1 when using the gnulib module strndup. */
-#undef GNULIB_STRNDUP
+/* Define to 1 when the gnulib module stpcpy should be tested. */
+#undef GNULIB_TEST_STPCPY
 
-/* Define to 1 when using the gnulib module strnlen. */
-#undef GNULIB_STRNLEN
+/* Define to 1 when the gnulib module strchrnul should be tested. */
+#undef GNULIB_TEST_STRCHRNUL
 
-/* Define to 1 when using the gnulib module strtoll. */
-#undef GNULIB_STRTOLL
+/* Define to 1 when the gnulib module strdup should be tested. */
+#undef GNULIB_TEST_STRDUP
 
-/* Define to 1 when using the gnulib module strtoull. */
-#undef GNULIB_STRTOULL
+/* Define to 1 when the gnulib module strerror should be tested. */
+#undef GNULIB_TEST_STRERROR
 
-/* Define to 1 when using the gnulib module unlink. */
-#undef GNULIB_UNLINK
+/* Define to 1 when the gnulib module strndup should be tested. */
+#undef GNULIB_TEST_STRNDUP
 
-/* Define to 1 when using the gnulib module unsetenv. */
-#undef GNULIB_UNSETENV
+/* Define to 1 when the gnulib module strnlen should be tested. */
+#undef GNULIB_TEST_STRNLEN
 
-/* Define to 1 when using the gnulib module vasprintf. */
-#undef GNULIB_VASPRINTF
+/* Define to 1 when the gnulib module strtoll should be tested. */
+#undef GNULIB_TEST_STRTOLL
 
-/* Define to 1 when using the gnulib module vsnprintf. */
-#undef GNULIB_VSNPRINTF
+/* Define to 1 when the gnulib module strtoull should be tested. */
+#undef GNULIB_TEST_STRTOULL
 
-/* Define to 1 when using the gnulib module wcrtomb. */
-#undef GNULIB_WCRTOMB
+/* Define to 1 when the gnulib module symlink should be tested. */
+#undef GNULIB_TEST_SYMLINK
 
-/* Define to 1 when using the gnulib module wcwidth. */
-#undef GNULIB_WCWIDTH
+/* Define to 1 when the gnulib module symlinkat should be tested. */
+#undef GNULIB_TEST_SYMLINKAT
 
-/* Define to 1 when using the gnulib module write. */
-#undef GNULIB_WRITE
+/* Define to 1 when the gnulib module time_r should be tested. */
+#undef GNULIB_TEST_TIME_R
+
+/* Define to 1 when the gnulib module unlink should be tested. */
+#undef GNULIB_TEST_UNLINK
+
+/* Define to 1 when the gnulib module unsetenv should be tested. */
+#undef GNULIB_TEST_UNSETENV
+
+/* Define to 1 when the gnulib module utimensat should be tested. */
+#undef GNULIB_TEST_UTIMENSAT
+
+/* Define to 1 when the gnulib module vasprintf should be tested. */
+#undef GNULIB_TEST_VASPRINTF
+
+/* Define to 1 when the gnulib module vsnprintf should be tested. */
+#undef GNULIB_TEST_VSNPRINTF
+
+/* Define to 1 when the gnulib module wcrtomb should be tested. */
+#undef GNULIB_TEST_WCRTOMB
+
+/* Define to 1 when the gnulib module wcwidth should be tested. */
+#undef GNULIB_TEST_WCWIDTH
+
+/* Define to 1 when the gnulib module write should be tested. */
+#undef GNULIB_TEST_WRITE
 
 /* Define to the program name of gzip compressor program */
 #undef GZIP_PROGRAM
 /* Define to 1 if you have the `chown' function. */
 #undef HAVE_CHOWN
 
-/* Define to 1 if you have the `chsize' function. */
-#undef HAVE_CHSIZE
-
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
    */
 #undef HAVE_DECL_DIRFD
 
+/* Define to 1 if you have the declaration of `fdopendir', and to 0 if you
+   don't. */
+#undef HAVE_DECL_FDOPENDIR
+
 /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
    don't. */
 #undef HAVE_DECL_FEOF_UNLOCKED
    don't. */
 #undef HAVE_DECL_GETLINE
 
+/* Define to 1 if you have the declaration of `getopt_clip', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETOPT_CLIP
+
 /* Define to 1 if you have the declaration of `getpwuid', and to 0 if you
    don't. */
 #undef HAVE_DECL_GETPWUID
    don't. */
 #undef HAVE_DECL_ISBLANK
 
+/* Define to 1 if you have the declaration of `iswblank', and to 0 if you
+   don't. */
+#undef HAVE_DECL_ISWBLANK
+
 /* Define to 1 if you have the declaration of `memrchr', and to 0 if you
    don't. */
 #undef HAVE_DECL_MEMRCHR
 /* Define to 1 if you have the `fchdir' function. */
 #undef HAVE_FCHDIR
 
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
 /* Define to 1 if you have the `fchmodat' function. */
 #undef HAVE_FCHMODAT
 
 /* Define to 1 if you have the `fsync' function. */
 #undef HAVE_FSYNC
 
-/* Define to 1 if you have the `ftruncate' function. */
-#undef HAVE_FTRUNCATE
-
 /* Define to 1 if you have the `funlockfile' function. */
 #undef HAVE_FUNLOCKFILE
 
 /* Define to 1 if you have the `futimesat' function. */
 #undef HAVE_FUTIMESAT
 
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
 /* Define to 1 if you have the `getdelim' function. */
 #undef HAVE_GETDELIM
 
 /* Define to 1 if you have the `isblank' function. */
 #undef HAVE_ISBLANK
 
+/* Define to 1 if you have the `iswblank' function. */
+#undef HAVE_ISWBLANK
+
 /* Define to 1 if you have the `iswcntrl' function. */
 #undef HAVE_ISWCNTRL
 
 /* Define to 1 if you have the <linewrap.h> header file. */
 #undef HAVE_LINEWRAP_H
 
+/* Define to 1 if you have the `link' function. */
+#undef HAVE_LINK
+
+/* Define to 1 if you have the `linkat' function. */
+#undef HAVE_LINKAT
+
 /* Define to 1 if you have the <linux/fd.h> header file. */
 #undef HAVE_LINUX_FD_H
 
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
 /* Define to 1 if you support file names longer than 14 characters. */
 #undef HAVE_LONG_FILE_NAMES
 
 /* Define to 1 if you have the `lutimes' function. */
 #undef HAVE_LUTIMES
 
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+/* Define to 1 if your system has a GNU libc compatible 'malloc' function, and
    to 0 otherwise. */
-#undef HAVE_MALLOC
+#undef HAVE_MALLOC_GNU
 
 /* Define if the 'malloc' function is POSIX compliant. */
 #undef HAVE_MALLOC_POSIX
 /* Define to 1 if you have the `mkfifo' function. */
 #undef HAVE_MKFIFO
 
+/* Define to 1 if you have the `mkfifoat' function. */
+#undef HAVE_MKFIFOAT
+
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
+/* Define to 1 if you have the `mknodat' function. */
+#undef HAVE_MKNODAT
+
 /* Define to 1 if you have the `mprotect' function. */
 #undef HAVE_MPROTECT
 
 #undef HAVE_OS_H
 
 /* Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
-   setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX is not
-   defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD is defined.
-   */
+   setting errno to ERANGE, ENAMETOOLONG, or ENOENT. */
 #undef HAVE_PARTLY_WORKING_GETCWD
 
 /* Define to 1 if you have the `pathconf' function. */
 /* Define to 1 if getusershell is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_GETUSERSHELL
 
+/* Define to 1 if grantpt is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_GRANTPT
+
 /* Define to 1 if imaxabs is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_IMAXABS
 
 /* Define to 1 if pread is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_PREAD
 
+/* Define to 1 if ptsname is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PTSNAME
+
+/* Define to 1 if pwrite is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_PWRITE
+
 /* Define to 1 if random_r is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_RANDOM_R
 
 /* Define to 1 if strncasecmp is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_STRNCASECMP
 
+/* Define to 1 if strncat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRNCAT
+
 /* Define to 1 if strndup is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_STRNDUP
 
 /* Define to 1 if symlinkat is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_SYMLINKAT
 
+/* Define to 1 if tmpfile is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_TMPFILE
+
+/* Define to 1 if ttyname_r is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_TTYNAME_R
+
 /* Define to 1 if unlink is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_UNLINK
 
 /* Define to 1 if unlinkat is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_UNLINKAT
 
+/* Define to 1 if unlockpt is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_UNLOCKPT
+
 /* Define to 1 if unsetenv is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_UNSETENV
 
 /* Define to 1 if wcwidth is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_WCWIDTH
 
+/* Define to 1 if _Exit is declared even after undefining macros. */
+#undef HAVE_RAW_DECL__EXIT
+
 /* Define to 1 if you have the `readlink' function. */
 #undef HAVE_READLINK
 
+/* Define to 1 if you have the `readlinkat' function. */
+#undef HAVE_READLINKAT
+
 /* Define if the 'realloc' function is POSIX compliant. */
 #undef HAVE_REALLOC_POSIX
 
 /* Define to 1 if you have the `realpath' function. */
 #undef HAVE_REALPATH
 
-/* Define to 1 if you have the `rmdir' function. */
-#undef HAVE_RMDIR
+/* Define to 1 if you have the `renameat' function. */
+#undef HAVE_RENAMEAT
 
 /* Define to 1 if you have the `rpmatch' function. */
 #undef HAVE_RPMATCH
 /* Define to 1 if you have the `snprintf' function. */
 #undef HAVE_SNPRINTF
 
+/* Define if the return value of the snprintf function is the number of of
+   bytes (excluding the terminating NUL) that would have been produced if the
+   buffer had been large enough. */
+#undef HAVE_SNPRINTF_RETVAL_C99
+
 /* Define to 1 if you have the <stdarg.h> header file. */
 #undef HAVE_STDARG_H
 
 /* Define to 1 if you have the `strnlen' function. */
 #undef HAVE_STRNLEN
 
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
 /* Define to 1 if you have the `strtoimax' function. */
 #undef HAVE_STRTOIMAX
 
 /* Define to 1 if you have the `symlink' function. */
 #undef HAVE_SYMLINK
 
+/* Define to 1 if you have the `symlinkat' function. */
+#undef HAVE_SYMLINKAT
+
 /* Define to 1 if you have the <sysexits.h> header file. */
 #undef HAVE_SYSEXITS_H
 
    */
 #undef HAVE_SYS_DIR_H
 
-/* Define to 1 if you have the <sys/filio.h> header file. */
-#undef HAVE_SYS_FILIO_H
-
 /* Define to 1 if you have the <sys/gentape.h> header file. */
 #undef HAVE_SYS_GENTAPE_H
 
 /* Define to 1 if you have the `utimensat' function. */
 #undef HAVE_UTIMENSAT
 
-/* Define to 1 if you have the `utimes' function. */
-#undef HAVE_UTIMES
-
 /* Define to 1 if you have the <utime.h> header file. */
 #undef HAVE_UTIME_H
 
 # define ISSLASH(C) ((C) == '/')
 #endif
 
+/* Define to 1 if linkat fails to recognize a trailing slash. */
+#undef LINKAT_TRAILING_SLASH_BUG
+
+/* Define to 1 if `link(2)' dereferences symbolic links, 0 if it creates hard
+   links to symlinks, and -1 if unknown. */
+#undef LINK_FOLLOWS_SYMLINKS
+
 /* Define to 1 if lseek does not detect pipes. */
 #undef LSEEK_PIPE_BROKEN
 
 /* Define if the mbrtowc function returns a wrong return value. */
 #undef MBRTOWC_RETVAL_BUG
 
+/* Define to 1 if mkfifo does not reject trailing slash */
+#undef MKFIFO_TRAILING_SLASH_BUG
+
+/* Define to 1 if mknod cannot create a fifo without super-user privileges */
+#undef MKNOD_FIFO_BUG
+
 /* Define to mt_model (v.g., for DG/UX), else to mt_type. */
 #undef MTIO_CHECK_FIELD
 
 /* Define to the full path of your rsh, if any. */
 #undef REMOTE_SHELL
 
+/* Define if rename does not work when the destination file exists, as on
+   Cygwin 1.5 or Windows. */
+#undef RENAME_DEST_EXISTS_BUG
+
+/* Define if rename fails to leave hard links alone, as on NetBSD 1.6 or
+   Cygwin 1.5. */
+#undef RENAME_HARD_LINK_BUG
+
+/* Define if rename does not correctly handle slashes on the destination
+   argument, such as on Solaris 10 or NetBSD 1.6. */
+#undef RENAME_TRAILING_SLASH_DEST_BUG
+
+/* Define if rename does not correctly handle slashes on the source argument,
+   such as on Solaris 9 or cygwin 1.5. */
+#undef RENAME_TRAILING_SLASH_SOURCE_BUG
+
 /* Define to 1 if gnulib's fchdir() replacement is used. */
 #undef REPLACE_FCHDIR
 
 /* Define to 1 if unlink (dir) cannot possibly succeed. */
 #undef UNLINK_CANNOT_UNLINK_DIR
 
+/* Define to 1 if unlink() on a parent directory may succeed */
+#undef UNLINK_PARENT_BUG
+
+/* Define to the prefix of C symbols at the assembler and linker level, either
+   an underscore or empty. */
+#undef USER_LABEL_PREFIX
+
 /* Define to 1 if you want getc etc. to use unlocked I/O if available.
    Unlocked I/O can improve performance in unithreaded apps, but it is not
    safe for multithreaded apps. */
 /* Type of major device numbers. */
 #undef major_t
 
-/* 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
 
 /* Define as a signed type of the same size as size_t. */
 #undef ssize_t
 
-/* Define to rpl_strnlen if the replacement function should be used. */
-#undef strnlen
-
 /* Define to `int' if <sys/types.h> doesn't define. */
 #undef uid_t
 
index 07f25273c5b7d5716cd70bba007a4baa63b17fde..391e3d6dbce5c932515ab8bab6ed464260a4ade5 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for GNU tar 1.23.
+# Generated by GNU Autoconf 2.63 for GNU tar 1.24.
 #
 # Report bugs to <bug-tar@gnu.org>.
 #
@@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='GNU tar'
 PACKAGE_TARNAME='tar'
-PACKAGE_VERSION='1.23'
-PACKAGE_STRING='GNU tar 1.23'
+PACKAGE_VERSION='1.24'
+PACKAGE_STRING='GNU tar 1.24'
 PACKAGE_BUGREPORT='bug-tar@gnu.org'
 
 ac_unique_file="src/tar.c"
@@ -680,18 +680,26 @@ PU_RMT_PROG
 LIB_SETSOCKOPT
 LIBGNU_LTLIBDEPS
 LIBGNU_LIBDEPS
+gltests_WITNESS
 REPLACE_ISWCNTRL
 HAVE_WCTYPE_H
 NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
 NEXT_WCTYPE_H
+REPLACE_ISWBLANK
+HAVE_ISWBLANK
 HAVE_ISWCNTRL
 HAVE_WINT_T
 HAVE_WCHAR_H
 NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
 NEXT_WCHAR_H
+LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE
+LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE
+LIBUNISTRING_UNIWIDTH_H
+LIBUNISTRING_UNITYPES_H
 HAVE_UNISTD_H
 NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
 NEXT_UNISTD_H
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC
 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
 TIME_H_DEFINES_STRUCT_TIMESPEC
 NEXT_AS_FIRST_DIRECTIVE_TIME_H
@@ -713,6 +721,7 @@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
 NEXT_STDLIB_H
 NEXT_AS_FIRST_DIRECTIVE_STDIO_H
 NEXT_STDIO_H
+ASM_SYMBOL_PREFIX
 NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
 NEXT_STDDEF_H
 STDDEF_H
@@ -722,10 +731,14 @@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H
 NEXT_STDARG_H
 STDARG_H
 REPLACE_TIMEGM
-REPLACE_STRPTIME
 REPLACE_NANOSLEEP
 REPLACE_MKTIME
 REPLACE_LOCALTIME_R
+HAVE_TIMEGM
+HAVE_STRPTIME
+HAVE_NANOSLEEP
+HAVE_LOCALTIME_R
+GNULIB_TIME_R
 GNULIB_TIMEGM
 GNULIB_STRPTIME
 GNULIB_NANOSLEEP
@@ -733,16 +746,18 @@ GNULIB_MKTIME
 UNDEFINE_STRTOK_R
 REPLACE_STRTOK_R
 REPLACE_STRSIGNAL
+REPLACE_STRNLEN
 REPLACE_STRNDUP
+REPLACE_STRNCAT
 REPLACE_STRERROR
 REPLACE_STRCASESTR
 REPLACE_STRSTR
 REPLACE_STRDUP
+REPLACE_STPNCPY
 REPLACE_MEMMEM
 REPLACE_MEMCHR
 HAVE_STRVERSCMP
 HAVE_DECL_STRSIGNAL
-HAVE_DECL_STRERROR
 HAVE_DECL_STRTOK_R
 HAVE_STRCASESTR
 HAVE_STRSEP
@@ -757,6 +772,7 @@ HAVE_RAWMEMCHR
 HAVE_DECL_MEMRCHR
 HAVE_MEMPCPY
 HAVE_DECL_MEMMEM
+HAVE_MEMCHR
 HAVE_MBSLEN
 GNULIB_STRVERSCMP
 GNULIB_STRSIGNAL
@@ -782,6 +798,7 @@ GNULIB_STRSEP
 GNULIB_STRPBRK
 GNULIB_STRNLEN
 GNULIB_STRNDUP
+GNULIB_STRNCAT
 GNULIB_STRDUP
 GNULIB_STRCHRNUL
 GNULIB_STPNCPY
@@ -796,7 +813,9 @@ LOCALE_ZH_CN
 LOCALE_JA
 LOCALCHARSET_TESTS_ENVIRONMENT
 GLIBC21
+HAVE_LANGINFO_YESEXPR
 HAVE_LANGINFO_ERA
+HAVE_LANGINFO_T_FMT_AMPM
 HAVE_LANGINFO_CODESET
 HAVE_LANGINFO_H
 NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H
@@ -844,6 +863,8 @@ HAVE_SYS_TYPES_H
 HAVE_INTTYPES_H
 HAVE_UNSIGNED_LONG_LONG_INT
 HAVE_LONG_LONG_INT
+HAVE__BOOL
+STDBOOL_H
 NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H
 NEXT_SYS_TIME_H
 REPLACE_GETTIMEOFDAY
@@ -856,8 +877,6 @@ LIBINTL
 HAVE_GETOPT_H
 NEXT_AS_FIRST_DIRECTIVE_GETOPT_H
 NEXT_GETOPT_H
-HAVE__BOOL
-STDBOOL_H
 FNMATCH_H
 FLOAT_H
 NEXT_AS_FIRST_DIRECTIVE_FLOAT_H
@@ -870,6 +889,7 @@ REPLACE_VPRINTF
 REPLACE_VFPRINTF
 REPLACE_VDPRINTF
 REPLACE_VASPRINTF
+REPLACE_TMPFILE
 REPLACE_STDIO_WRITE_FUNCS
 REPLACE_SPRINTF
 REPLACE_SNPRINTF
@@ -896,6 +916,8 @@ REPLACE_DPRINTF
 HAVE_VDPRINTF
 HAVE_VASPRINTF
 HAVE_RENAMEAT
+HAVE_FTELLO
+HAVE_FSEEKO
 HAVE_DPRINTF
 HAVE_DECL_VSNPRINTF
 HAVE_DECL_SNPRINTF
@@ -911,6 +933,7 @@ GNULIB_VFPRINTF_POSIX
 GNULIB_VFPRINTF
 GNULIB_VDPRINTF
 GNULIB_VASPRINTF
+GNULIB_TMPFILE
 GNULIB_STDIO_H_SIGPIPE
 GNULIB_SPRINTF_POSIX
 GNULIB_SNPRINTF
@@ -994,15 +1017,18 @@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
 NEXT_ERRNO_H
 NEXT_AS_FIRST_DIRECTIVE_DIRENT_H
 NEXT_DIRENT_H
+PRAGMA_COLUMNS
 PRAGMA_SYSTEM_HEADER
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE
 INCLUDE_NEXT
 REPLACE_OPENDIR
 REPLACE_FDOPENDIR
+REPLACE_DIRFD
 REPLACE_CLOSEDIR
 HAVE_ALPHASORT
 HAVE_SCANDIR
 HAVE_FDOPENDIR
+HAVE_DECL_FDOPENDIR
 HAVE_DECL_DIRFD
 GNULIB_ALPHASORT
 GNULIB_SCANDIR
@@ -1015,10 +1041,12 @@ REPLACE_WRITE
 REPLACE_USLEEP
 REPLACE_UNLINKAT
 REPLACE_UNLINK
+REPLACE_TTYNAME_R
 REPLACE_SYMLINK
 REPLACE_SLEEP
 REPLACE_RMDIR
 REPLACE_READLINK
+REPLACE_PWRITE
 REPLACE_PREAD
 REPLACE_LSEEK
 REPLACE_LINKAT
@@ -1028,28 +1056,30 @@ REPLACE_GETPAGESIZE
 REPLACE_GETGROUPS
 REPLACE_GETCWD
 REPLACE_FCHOWNAT
-REPLACE_FCHDIR
 REPLACE_DUP2
 REPLACE_DUP
 REPLACE_CLOSE
 REPLACE_CHOWN
-HAVE_USLEEP
-HAVE_UNLINKAT
 HAVE_SYS_PARAM_H
 HAVE_OS_H
+HAVE_DECL_GETUSERSHELL
+HAVE_DECL_GETPAGESIZE
 HAVE_DECL_GETLOGIN_R
 HAVE_DECL_ENVIRON
+HAVE_USLEEP
+HAVE_UNLINKAT
+HAVE_TTYNAME_R
 HAVE_SYMLINKAT
 HAVE_SYMLINK
 HAVE_SLEEP
 HAVE_READLINKAT
 HAVE_READLINK
+HAVE_PWRITE
 HAVE_PREAD
 HAVE_PIPE2
 HAVE_LINKAT
 HAVE_LINK
 HAVE_LCHOWN
-HAVE_GETUSERSHELL
 HAVE_GETPAGESIZE
 HAVE_GETLOGIN
 HAVE_GETHOSTNAME
@@ -1059,6 +1089,7 @@ HAVE_GETDOMAINNAME
 HAVE_FTRUNCATE
 HAVE_FSYNC
 HAVE_FCHOWNAT
+HAVE_FCHDIR
 HAVE_FACCESSAT
 HAVE_EUIDACCESS
 HAVE_DUP3
@@ -1070,12 +1101,14 @@ GNULIB_UNLINKAT
 GNULIB_UNLINK
 GNULIB_UNISTD_H_SIGPIPE
 GNULIB_UNISTD_H_GETOPT
+GNULIB_TTYNAME_R
 GNULIB_SYMLINKAT
 GNULIB_SYMLINK
 GNULIB_SLEEP
 GNULIB_RMDIR
 GNULIB_READLINKAT
 GNULIB_READLINK
+GNULIB_PWRITE
 GNULIB_PREAD
 GNULIB_PIPE2
 GNULIB_LSEEK
@@ -1106,10 +1139,14 @@ REPLACE_UNSETENV
 REPLACE_STRTOD
 REPLACE_SETENV
 REPLACE_REALPATH
+REPLACE_REALLOC
 REPLACE_PUTENV
 REPLACE_MKSTEMP
+REPLACE_MALLOC
 REPLACE_CANONICALIZE_FILE_NAME
+REPLACE_CALLOC
 HAVE_UNSETENV
+HAVE_UNLOCKPT
 HAVE_SYS_LOADAVG_H
 HAVE_STRUCT_RANDOM_DATA
 HAVE_STRTOULL
@@ -1118,19 +1155,22 @@ HAVE_STRTOD
 HAVE_SETENV
 HAVE_RPMATCH
 HAVE_REALPATH
-HAVE_REALLOC_POSIX
 HAVE_RANDOM_R
+HAVE_PTSNAME
 HAVE_MKSTEMPS
+HAVE_MKSTEMP
 HAVE_MKOSTEMPS
 HAVE_MKOSTEMP
 HAVE_MKDTEMP
-HAVE_MALLOC_POSIX
+HAVE_GRANTPT
 HAVE_GETSUBOPT
 HAVE_DECL_GETLOADAVG
 HAVE_CANONICALIZE_FILE_NAME
-HAVE_CALLOC_POSIX
 HAVE_ATOLL
+HAVE__EXIT
 GNULIB_UNSETENV
+GNULIB_UNLOCKPT
+GNULIB_SYSTEM_POSIX
 GNULIB_STRTOULL
 GNULIB_STRTOLL
 GNULIB_STRTOD
@@ -1140,17 +1180,20 @@ GNULIB_REALPATH
 GNULIB_REALLOC_POSIX
 GNULIB_RANDOM_R
 GNULIB_PUTENV
+GNULIB_PTSNAME
 GNULIB_MKSTEMPS
 GNULIB_MKSTEMP
 GNULIB_MKOSTEMPS
 GNULIB_MKOSTEMP
 GNULIB_MKDTEMP
 GNULIB_MALLOC_POSIX
+GNULIB_GRANTPT
 GNULIB_GETSUBOPT
 GNULIB_GETLOADAVG
 GNULIB_CANONICALIZE_FILE_NAME
 GNULIB_CALLOC_POSIX
 GNULIB_ATOLL
+GNULIB__EXIT
 LOCALE_FR
 REPLACE_WCWIDTH
 REPLACE_WCSNRTOMBS
@@ -1876,7 +1919,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU tar 1.23 to adapt to many kinds of systems.
+\`configure' configures GNU tar 1.24 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1946,7 +1989,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU tar 1.23:";;
+     short | recursive ) echo "Configuration of GNU tar 1.24:";;
    esac
   cat <<\_ACEOF
 
@@ -2084,7 +2127,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU tar configure 1.23
+GNU tar configure 1.24
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -2098,7 +2141,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU tar $as_me 1.23, which was
+It was created by GNU tar $as_me 1.24, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2381,10 +2424,8 @@ ac_header_list="$ac_header_list memory.h"
 ac_header_list="$ac_header_list net/errno.h"
 ac_header_list="$ac_header_list sgtty.h"
 ac_header_list="$ac_header_list string.h"
-ac_header_list="$ac_header_list stropts.h"
 ac_header_list="$ac_header_list sys/param.h"
 ac_header_list="$ac_header_list sys/device.h"
-ac_header_list="$ac_header_list sys/filio.h"
 ac_header_list="$ac_header_list sys/gentape.h"
 ac_header_list="$ac_header_list sys/inet.h"
 ac_header_list="$ac_header_list sys/io/trioctl.h"
@@ -2401,6 +2442,8 @@ ac_header_list="$ac_header_list linewrap.h"
 ac_func_list="$ac_func_list pathconf"
 ac_func_list="$ac_func_list btowc"
 ac_func_list="$ac_func_list canonicalize_file_name"
+ac_func_list="$ac_func_list getcwd"
+ac_func_list="$ac_func_list readlink"
 ac_func_list="$ac_func_list realpath"
 ac_func_list="$ac_func_list chown"
 ac_func_list="$ac_func_list fchown"
@@ -2410,11 +2453,11 @@ ac_func_list="$ac_func_list dup2"
 ac_header_list="$ac_header_list errno.h"
 ac_func_list="$ac_func_list fchdir"
 ac_func_list="$ac_func_list fcntl"
+ac_func_list="$ac_func_list mempcpy"
 ac_header_list="$ac_header_list float.h"
 ac_func_list="$ac_func_list isblank"
 ac_func_list="$ac_func_list iswctype"
 ac_func_list="$ac_func_list mbsrtowcs"
-ac_func_list="$ac_func_list mempcpy"
 ac_func_list="$ac_func_list wmemchr"
 ac_func_list="$ac_func_list wmemcpy"
 ac_func_list="$ac_func_list wmempcpy"
@@ -2422,7 +2465,7 @@ ac_header_list="$ac_header_list wctype.h"
 gl_fnmatch_required=GNU
 ac_header_list="$ac_header_list stdio_ext.h"
 ac_func_list="$ac_func_list __fpending"
-ac_func_list="$ac_func_list ftruncate"
+ac_func_list="$ac_func_list futimens"
 ac_func_list="$ac_func_list getdelim"
 ac_func_list="$ac_func_list getdtablesize"
 gl_getopt_required=GNU
@@ -2434,45 +2477,58 @@ ac_header_list="$ac_header_list wchar.h"
 ac_header_list="$ac_header_list inttypes.h"
 ac_header_list="$ac_header_list langinfo.h"
 ac_func_list="$ac_func_list lchmod"
+ac_func_list="$ac_func_list link"
+ac_func_list="$ac_func_list linkat"
+ac_func_list="$ac_func_list symlink"
 ac_func_list="$ac_func_list lstat"
 ac_func_list="$ac_func_list mbsinit"
 ac_func_list="$ac_func_list mbrtowc"
 ac_header_list="$ac_header_list sys/mman.h"
 ac_func_list="$ac_func_list mprotect"
+ac_func_list="$ac_func_list memchr"
+ac_func_list="$ac_func_list mkfifo"
+ac_func_list="$ac_func_list mkfifoat"
+ac_func_list="$ac_func_list mknodat"
+ac_func_list="$ac_func_list mknod"
 ac_func_list="$ac_func_list alarm"
 ac_func_list="$ac_func_list nl_langinfo"
-ac_func_list="$ac_func_list readlink"
+ac_header_list="$ac_header_list priv.h"
+ac_func_list="$ac_func_list readlinkat"
 ac_func_list="$ac_func_list wcscoll"
+ac_func_list="$ac_func_list renameat"
 ac_func_list="$ac_func_list setenv"
 ac_func_list="$ac_func_list sleep"
 ac_header_list="$ac_header_list stdarg.h"
 ac_header_list="$ac_header_list stddef.h"
 ac_header_list="$ac_header_list stdio.h"
 ac_header_list="$ac_header_list stdlib.h"
+ac_func_list="$ac_func_list strdup"
 ac_header_list="$ac_header_list sys/socket.h"
 ac_header_list="$ac_header_list strings.h"
 ac_func_list="$ac_func_list strndup"
+ac_func_list="$ac_func_list symlinkat"
 ac_header_list="$ac_header_list sys/stat.h"
 ac_header_list="$ac_header_list sysexits.h"
 ac_header_list="$ac_header_list time.h"
+ac_func_list="$ac_func_list localtime_r"
 ac_func_list="$ac_func_list pipe"
-ac_header_list="$ac_header_list priv.h"
 ac_header_list="$ac_header_list utime.h"
 ac_func_list="$ac_func_list futimes"
 ac_func_list="$ac_func_list futimesat"
-ac_func_list="$ac_func_list futimens"
 ac_func_list="$ac_func_list utimensat"
 ac_func_list="$ac_func_list lutimes"
 ac_func_list="$ac_func_list vasnprintf"
 ac_func_list="$ac_func_list wcrtomb"
 ac_func_list="$ac_func_list iswcntrl"
+ac_func_list="$ac_func_list iswblank"
 ac_func_list="$ac_func_list wcwidth"
 ac_header_list="$ac_header_list netdb.h"
 ac_header_list="$ac_header_list sys/wait.h"
 ac_header_list="$ac_header_list pwd.h"
 ac_header_list="$ac_header_list grp.h"
-ac_func_list="$ac_func_list mkfifo"
 ac_func_list="$ac_func_list setlocale"
+ac_func_list="$ac_func_list fchmod"
+ac_func_list="$ac_func_list fsync"
 gt_needs="$gt_needs need-formatstring-macros"
 # Check that the precious variables saved in the cache have kept the same
 # value.
@@ -3063,7 +3119,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='tar'
- VERSION='1.23'
+ VERSION='1.24'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -6028,9 +6084,206 @@ esac
 
 
 
-
-
-
+  # Code from module alloca:
+  # Code from module alloca-opt:
+  # Code from module areadlink:
+  # Code from module areadlinkat:
+  # Code from module arg-nonnull:
+  # Code from module argmatch:
+  # Code from module argp:
+  # Code from module argp-version-etc:
+  # Code from module backupfile:
+  # Code from module bitrotate:
+  # Code from module btowc:
+  # Code from module c++defs:
+  # Code from module c-ctype:
+  # Code from module canonicalize-lgpl:
+  # Code from module chdir-long:
+  # Code from module chown:
+  # Code from module clock-time:
+  # Code from module cloexec:
+  # Code from module close:
+  # Code from module close-hook:
+  # Code from module close-stream:
+  # Code from module closeout:
+  # Code from module configmake:
+  # Code from module d-ino:
+  # Code from module dirent:
+  # Code from module dirent-safer:
+  # Code from module dirfd:
+  # Code from module dirname:
+  # Code from module dirname-lgpl:
+  # Code from module double-slash-root:
+  # Code from module dup2:
+  # Code from module environ:
+  # Code from module errno:
+  # Code from module error:
+  # Code from module exclude:
+  # Code from module exitfail:
+  # Code from module extensions:
+
+  # Code from module fchdir:
+  # Code from module fclose:
+  # Code from module fcntl:
+  # Code from module fcntl-h:
+  # Code from module fdopendir:
+  # Code from module fdutimensat:
+  # Code from module fileblocks:
+  # Code from module filenamecat-lgpl:
+  # Code from module float:
+  # Code from module fnmatch:
+  # Code from module fnmatch-gnu:
+  # Code from module fpending:
+  # Code from module fseeko:
+
+  # Code from module full-write:
+  # Code from module futimens:
+  # Code from module getcwd:
+  # Code from module getdelim:
+  # Code from module getdtablesize:
+  # Code from module getline:
+  # Code from module getopt-gnu:
+  # Code from module getopt-posix:
+  # Code from module getpagesize:
+  # Code from module gettext:
+  # Code from module gettext-h:
+  # Code from module gettime:
+  # Code from module gettimeofday:
+  # Code from module gitlog-to-changelog:
+  # Code from module hash:
+  # Code from module havelib:
+  # Code from module human:
+  # Code from module include_next:
+  # Code from module inline:
+  # Code from module intprops:
+  # Code from module inttostr:
+  # Code from module inttypes:
+  # Code from module langinfo:
+  # Code from module lchown:
+  # Code from module link:
+  # Code from module link-follow:
+  # Code from module linkat:
+  # Code from module localcharset:
+  # Code from module lseek:
+  # Code from module lstat:
+  # Code from module malloc-gnu:
+  # Code from module malloc-posix:
+  # Code from module malloca:
+  # Code from module mbchar:
+  # Code from module mbrtowc:
+  # Code from module mbscasecmp:
+  # Code from module mbsinit:
+  # Code from module mbsrtowcs:
+  # Code from module mbuiter:
+  # Code from module memchr:
+  # Code from module mempcpy:
+  # Code from module memrchr:
+  # Code from module mkdir:
+  # Code from module mkdtemp:
+  # Code from module mkfifo:
+  # Code from module mkfifoat:
+  # Code from module mknod:
+  # Code from module mktime:
+  # Code from module modechange:
+  # Code from module multiarch:
+  # Code from module nl_langinfo:
+  # Code from module obstack:
+  # Code from module open:
+  # Code from module openat:
+  # Code from module openat-die:
+  # Code from module parse-datetime:
+  # Code from module pathmax:
+  # Code from module priv-set:
+  # Code from module progname:
+  # Code from module quote:
+  # Code from module quotearg:
+  # Code from module quotearg-simple:
+  # Code from module rawmemchr:
+  # Code from module readlink:
+  # Code from module readlinkat:
+  # Code from module realloc-posix:
+  # Code from module regex:
+  # Code from module rename:
+  # Code from module renameat:
+  # Code from module rmdir:
+  # Code from module rpmatch:
+  # Code from module safe-read:
+  # Code from module safe-write:
+  # Code from module same-inode:
+  # Code from module save-cwd:
+  # Code from module savedir:
+  # Code from module setenv:
+  # Code from module size_max:
+  # Code from module sleep:
+  # Code from module snprintf:
+  # Code from module ssize_t:
+  # Code from module stat:
+  # Code from module stat-macros:
+  # Code from module stat-time:
+  # Code from module stdarg:
+
+  # Code from module stdbool:
+  # Code from module stddef:
+  # Code from module stdint:
+  # Code from module stdio:
+  # Code from module stdlib:
+  # Code from module stpcpy:
+  # Code from module strcase:
+  # Code from module strchrnul:
+  # Code from module strdup-posix:
+  # Code from module streq:
+  # Code from module strerror:
+  # Code from module string:
+  # Code from module strings:
+  # Code from module strndup:
+  # Code from module strnlen:
+  # Code from module strnlen1:
+  # Code from module strtoimax:
+  # Code from module strtol:
+  # Code from module strtoll:
+  # Code from module strtoul:
+  # Code from module strtoull:
+  # Code from module strtoumax:
+  # Code from module symlink:
+  # Code from module symlinkat:
+  # Code from module sys_stat:
+  # Code from module sys_time:
+  # Code from module sysexits:
+  # Code from module tempname:
+  # Code from module time:
+  # Code from module time_r:
+  # Code from module timespec:
+  # Code from module unistd:
+  # Code from module unistd-safer:
+  # Code from module unitypes:
+  # Code from module uniwidth/base:
+  # Code from module uniwidth/width:
+  # Code from module unlink:
+  # Code from module unlinkdir:
+  # Code from module unlocked-io:
+  # Code from module unsetenv:
+  # Code from module utimens:
+  # Code from module utimensat:
+  # Code from module vasnprintf:
+  # Code from module vasprintf:
+  # Code from module verify:
+  # Code from module version-etc:
+  # Code from module version-etc-fsf:
+  # Code from module vsnprintf:
+  # Code from module warn-on-use:
+  # Code from module wchar:
+  # Code from module wcrtomb:
+  # Code from module wctype:
+  # Code from module wcwidth:
+  # Code from module write:
+  # Code from module xalloc:
+  # Code from module xalloc-die:
+  # Code from module xgetcwd:
+  # Code from module xsize:
+  # Code from module xstrndup:
+  # Code from module xstrtol:
+  # Code from module xstrtoumax:
+  # Code from module xvasprintf:
 
 
 # Check whether --enable-largefile was given.
@@ -6766,14 +7019,6 @@ done
 
 
 
-
-
-
-
-
-
-
-
 
 
 
@@ -8768,7 +9013,7 @@ int
 main ()
 {
 int x = sizeof (ssize_t *) + sizeof (ssize_t);
-        return !x;
+            return !x;
   ;
   return 0;
 }
@@ -8819,6 +9064,8 @@ _ACEOF
 
 
 
+          LIBC_FATAL_STDERR_=1
+  export LIBC_FATAL_STDERR_
 
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
@@ -9216,16 +9463,16 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 typedef int * int_ptr;
-        int foo (int_ptr $ac_kw ip) {
-        return ip[0];
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
        }
 int
 main ()
 {
 int s[1];
-        int * $ac_kw t = s;
-        t[0] = 0;
-        return foo(t)
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)
   ;
   return 0;
 }
@@ -10845,11 +11092,14 @@ int main () {
      is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
      On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
      succeeds but then nl_langinfo(CODESET) is "646". In this situation,
-     some unit tests fail.  */
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
 #if HAVE_LANGINFO_CODESET
   {
     const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
       return 1;
   }
 #endif
@@ -10921,6 +11171,10 @@ $as_echo "$gt_cv_locale_fr" >&6; }
 
 
 
+
+
+
+
   { $as_echo "$as_me:$LINENO: checking whether // is distinct from /" >&5
 $as_echo_n "checking whether // is distinct from /... " >&6; }
 if test "${gl_cv_double_slash_root+set}" = set; then
@@ -11052,17 +11306,41 @@ _ACEOF
   fi
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  GNULIB__EXIT=0;
   GNULIB_ATOLL=0;
   GNULIB_CALLOC_POSIX=0;
   GNULIB_CANONICALIZE_FILE_NAME=0;
   GNULIB_GETLOADAVG=0;
   GNULIB_GETSUBOPT=0;
+  GNULIB_GRANTPT=0;
   GNULIB_MALLOC_POSIX=0;
   GNULIB_MKDTEMP=0;
   GNULIB_MKOSTEMP=0;
   GNULIB_MKOSTEMPS=0;
   GNULIB_MKSTEMP=0;
   GNULIB_MKSTEMPS=0;
+  GNULIB_PTSNAME=0;
   GNULIB_PUTENV=0;
   GNULIB_RANDOM_R=0;
   GNULIB_REALLOC_POSIX=0;
@@ -11072,19 +11350,22 @@ _ACEOF
   GNULIB_STRTOD=0;
   GNULIB_STRTOLL=0;
   GNULIB_STRTOULL=0;
+  GNULIB_SYSTEM_POSIX=0;
+  GNULIB_UNLOCKPT=0;
   GNULIB_UNSETENV=0;
-    HAVE_ATOLL=1;
-  HAVE_CALLOC_POSIX=1;
+    HAVE__EXIT=1;
+  HAVE_ATOLL=1;
   HAVE_CANONICALIZE_FILE_NAME=1;
   HAVE_DECL_GETLOADAVG=1;
   HAVE_GETSUBOPT=1;
-  HAVE_MALLOC_POSIX=1;
+  HAVE_GRANTPT=1;
   HAVE_MKDTEMP=1;
   HAVE_MKOSTEMP=1;
   HAVE_MKOSTEMPS=1;
+  HAVE_MKSTEMP=1;
   HAVE_MKSTEMPS=1;
+  HAVE_PTSNAME=1;
   HAVE_RANDOM_R=1;
-  HAVE_REALLOC_POSIX=1;
   HAVE_REALPATH=1;
   HAVE_RPMATCH=1;
   HAVE_SETENV=1;
@@ -11093,10 +11374,14 @@ _ACEOF
   HAVE_STRTOULL=1;
   HAVE_STRUCT_RANDOM_DATA=1;
   HAVE_SYS_LOADAVG_H=0;
+  HAVE_UNLOCKPT=1;
   HAVE_UNSETENV=1;
+  REPLACE_CALLOC=0;
   REPLACE_CANONICALIZE_FILE_NAME=0;
+  REPLACE_MALLOC=0;
   REPLACE_MKSTEMP=0;
   REPLACE_PUTENV=0;
+  REPLACE_REALLOC=0;
   REPLACE_REALPATH=0;
   REPLACE_SETENV=0;
   REPLACE_STRTOD=0;
@@ -11129,12 +11414,14 @@ _ACEOF
   GNULIB_LSEEK=0;
   GNULIB_PIPE2=0;
   GNULIB_PREAD=0;
+  GNULIB_PWRITE=0;
   GNULIB_READLINK=0;
   GNULIB_READLINKAT=0;
   GNULIB_RMDIR=0;
   GNULIB_SLEEP=0;
   GNULIB_SYMLINK=0;
   GNULIB_SYMLINKAT=0;
+  GNULIB_TTYNAME_R=0;
   GNULIB_UNISTD_H_GETOPT=0;
   GNULIB_UNISTD_H_SIGPIPE=0;
   GNULIB_UNLINK=0;
@@ -11146,6 +11433,7 @@ _ACEOF
   HAVE_DUP3=1;
   HAVE_EUIDACCESS=1;
   HAVE_FACCESSAT=1;
+  HAVE_FCHDIR=1;
   HAVE_FCHOWNAT=1;
   HAVE_FSYNC=1;
   HAVE_FTRUNCATE=1;
@@ -11155,28 +11443,30 @@ _ACEOF
   HAVE_GETHOSTNAME=1;
   HAVE_GETLOGIN=1;
   HAVE_GETPAGESIZE=1;
-  HAVE_GETUSERSHELL=1;
   HAVE_LCHOWN=1;
   HAVE_LINK=1;
   HAVE_LINKAT=1;
   HAVE_PIPE2=1;
   HAVE_PREAD=1;
+  HAVE_PWRITE=1;
   HAVE_READLINK=1;
   HAVE_READLINKAT=1;
   HAVE_SLEEP=1;
   HAVE_SYMLINK=1;
   HAVE_SYMLINKAT=1;
+  HAVE_TTYNAME_R=1;
+  HAVE_UNLINKAT=1;
+  HAVE_USLEEP=1;
   HAVE_DECL_ENVIRON=1;
   HAVE_DECL_GETLOGIN_R=1;
+  HAVE_DECL_GETPAGESIZE=1;
+  HAVE_DECL_GETUSERSHELL=1;
   HAVE_OS_H=0;
   HAVE_SYS_PARAM_H=0;
-  HAVE_UNLINKAT=1;
-  HAVE_USLEEP=1;
   REPLACE_CHOWN=0;
   REPLACE_CLOSE=0;
   REPLACE_DUP=0;
   REPLACE_DUP2=0;
-  REPLACE_FCHDIR=0;
   REPLACE_FCHOWNAT=0;
   REPLACE_GETCWD=0;
   REPLACE_GETGROUPS=0;
@@ -11186,10 +11476,12 @@ _ACEOF
   REPLACE_LINKAT=0;
   REPLACE_LSEEK=0;
   REPLACE_PREAD=0;
+  REPLACE_PWRITE=0;
   REPLACE_READLINK=0;
   REPLACE_RMDIR=0;
   REPLACE_SLEEP=0;
   REPLACE_SYMLINK=0;
+  REPLACE_TTYNAME_R=0;
   REPLACE_UNLINK=0;
   REPLACE_UNLINKAT=0;
   REPLACE_USLEEP=0;
@@ -11588,7 +11880,7 @@ _ACEOF
 
     fi
 
-            { $as_echo "$as_me:$LINENO: checking whether chown honors trailing slash" >&5
+                { $as_echo "$as_me:$LINENO: checking whether chown honors trailing slash" >&5
 $as_echo_n "checking whether chown honors trailing slash... " >&6; }
 if test "${gl_cv_func_chown_slash_works+set}" = set; then
   $as_echo_n "(cached) " >&6
@@ -11792,10 +12084,12 @@ _ACEOF
   GNULIB_SCANDIR=0;
   GNULIB_ALPHASORT=0;
     HAVE_DECL_DIRFD=1;
+  HAVE_DECL_FDOPENDIR=1;
   HAVE_FDOPENDIR=1;
   HAVE_SCANDIR=1;
   HAVE_ALPHASORT=1;
   REPLACE_CLOSEDIR=0;
+  REPLACE_DIRFD=0;
   REPLACE_FDOPENDIR=0;
   REPLACE_OPENDIR=0;
 
@@ -11921,6 +12215,41 @@ $as_echo "$gl_cv_have_include_next" >&6; }
 
 
 
+  { $as_echo "$as_me:$LINENO: checking whether system header files limit the line length" >&5
+$as_echo_n "checking whether system header files limit the line length... " >&6; }
+if test "${gl_cv_pragma_columns+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#ifdef __TANDEM
+choke me
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "choke me" >/dev/null 2>&1; then
+  gl_cv_pragma_columns=yes
+else
+  gl_cv_pragma_columns=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_pragma_columns" >&5
+$as_echo "$gl_cv_pragma_columns" >&6; }
+  if test $gl_cv_pragma_columns = yes; then
+    PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+  else
+    PRAGMA_COLUMNS=
+  fi
+
 
 
 
@@ -11982,7 +12311,7 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <unistd.h>
-      extern struct { int foo; } environ;
+           extern struct { int foo; } environ;
 int
 main ()
 {
@@ -12080,6 +12409,9 @@ booboo
 #if !defined ESTALE
 booboo
 #endif
+#if !defined EDQUOT
+booboo
+#endif
 #if !defined ECANCELED
 booboo
 #endif
@@ -13871,6 +14203,7 @@ _ACEOF
   GNULIB_SNPRINTF=0;
   GNULIB_SPRINTF_POSIX=0;
   GNULIB_STDIO_H_SIGPIPE=0;
+  GNULIB_TMPFILE=0;
   GNULIB_VASPRINTF=0;
   GNULIB_VDPRINTF=0;
   GNULIB_VFPRINTF=0;
@@ -13886,6 +14219,8 @@ _ACEOF
   HAVE_DECL_SNPRINTF=1;
   HAVE_DECL_VSNPRINTF=1;
   HAVE_DPRINTF=1;
+  HAVE_FSEEKO=1;
+  HAVE_FTELLO=1;
   HAVE_RENAMEAT=1;
   HAVE_VASPRINTF=1;
   HAVE_VDPRINTF=1;
@@ -13912,6 +14247,7 @@ _ACEOF
   REPLACE_SNPRINTF=0;
   REPLACE_SPRINTF=0;
   REPLACE_STDIO_WRITE_FUNCS=0;
+  REPLACE_TMPFILE=0;
   REPLACE_VASPRINTF=0;
   REPLACE_VDPRINTF=0;
   REPLACE_VFPRINTF=0;
@@ -14053,6 +14389,8 @@ _ACEOF
 
 
 
+
+
    { $as_echo "$as_me:$LINENO: checking for mbstate_t" >&5
 $as_echo_n "checking for mbstate_t... " >&6; }
 if test "${ac_cv_type_mbstate_t+set}" = set; then
@@ -14137,6 +14475,68 @@ _ACEOF
 
 
 
+
+
+
+
+  { $as_echo "$as_me:$LINENO: checking for fseeko" >&5
+$as_echo_n "checking for fseeko... " >&6; }
+if test "${gl_cv_func_fseeko+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+
+int
+main ()
+{
+fseeko (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  gl_cv_func_fseeko=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_fseeko=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fseeko" >&5
+$as_echo "$gl_cv_func_fseeko" >&6; }
 
 
     { $as_echo "$as_me:$LINENO: checking whether stdin defaults to large file offsets" >&5
@@ -14366,163 +14766,11 @@ _ACEOF
 fi
 
 
-{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
-$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if test "${ac_cv_header_stdbool_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-          #include <stdbool.h>
-          #ifndef bool
-           "error: bool is not defined"
-          #endif
-          #ifndef false
-           "error: false is not defined"
-          #endif
-          #if false
-           "error: false is not 0"
-          #endif
-          #ifndef true
-           "error: true is not defined"
-          #endif
-          #if true != 1
-           "error: true is not 1"
-          #endif
-          #ifndef __bool_true_false_are_defined
-           "error: __bool_true_false_are_defined is not defined"
-          #endif
-
-          struct s { _Bool s: 1; _Bool t; } s;
-
-          char a[true == 1 ? 1 : -1];
-          char b[false == 0 ? 1 : -1];
-          char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-          char d[(bool) 0.5 == true ? 1 : -1];
-          bool e = &s;
-          char f[(_Bool) 0.0 == false ? 1 : -1];
-          char g[true];
-          char h[sizeof (_Bool)];
-          char i[sizeof s.t];
-          enum { j = false, k = true, l = false * true, m = true * 256 };
-          _Bool n[m];
-          char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-          char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-          #if defined __xlc__ || defined __GNUC__
-           /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
-              reported by James Lemley on 2005-10-05; see
-              http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
-              This test is not quite right, since xlc is allowed to
-              reject this program, as the initializer for xlcbug is
-              not one of the forms that C requires support for.
-              However, doing the test right would require a run-time
-              test, and that would make cross-compilation harder.
-              Let us hope that IBM fixes the xlc bug, and also adds
-              support for this kind of constant expression.  In the
-              meantime, this test will reject xlc, which is OK, since
-              our stdbool.h substitute should suffice.  We also test
-              this with GCC, where it should work, to detect more
-              quickly whether someone messes up the test in the
-              future.  */
-           char digs[] = "0123456789";
-           int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
-          #endif
-          /* Catch a bug in an HP-UX C compiler.  See
-             http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-             http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-           */
-          _Bool q = true;
-          _Bool *pq = &q;
-
-int
-main ()
-{
-
-          *pq |= q;
-          *pq |= ! q;
-          /* Refer to every declared value, to avoid compiler optimizations.  */
-          return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-                  + !m + !n + !o + !p + !q + !pq);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdbool_h=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_header_stdbool_h=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
-$as_echo "$ac_cv_header_stdbool_h" >&6; }
-   { $as_echo "$as_me:$LINENO: checking for _Bool" >&5
-$as_echo_n "checking for _Bool... " >&6; }
-if test "${ac_cv_type__Bool+set}" = set; then
+{ $as_echo "$as_me:$LINENO: checking whether getdelim is declared" >&5
+$as_echo_n "checking whether getdelim is declared... " >&6; }
+if test "${ac_cv_have_decl_getdelim+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  ac_cv_type__Bool=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (_Bool))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -14533,8 +14781,10 @@ $ac_includes_default
 int
 main ()
 {
-if (sizeof ((_Bool)))
-         return 0;
+#ifndef getdelim
+  (void) getdelim;
+#endif
+
   ;
   return 0;
 }
@@ -14557,72 +14807,41 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type__Bool=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_have_decl_getdelim=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+       ac_cv_have_decl_getdelim=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
-$as_echo "$ac_cv_type__Bool" >&6; }
-if test "x$ac_cv_type__Bool" = x""yes; then
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getdelim" >&5
+$as_echo "$ac_cv_have_decl_getdelim" >&6; }
+if test "x$ac_cv_have_decl_getdelim" = x""yes; then
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+#define HAVE_DECL_GETDELIM 1
 _ACEOF
 
 
-fi
-
-   if test $ac_cv_header_stdbool_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_STDBOOL_H 1
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDELIM 0
 _ACEOF
 
-   fi
-
-
-
-  # Define two additional variables used in the Makefile substitution.
-
-  if test "$ac_cv_header_stdbool_h" = yes; then
-    STDBOOL_H=''
-  else
-    STDBOOL_H='stdbool.h'
-  fi
-
-
-  if test "$ac_cv_type__Bool" = yes; then
-    HAVE__BOOL=1
-  else
-    HAVE__BOOL=0
-  fi
-
 
+fi
 
 
 
 
-  # getdate.y works with bison only.
-  : ${YACC='bison -y'}
 
 
-  { $as_echo "$as_me:$LINENO: checking for compound literals" >&5
-$as_echo_n "checking for compound literals... " >&6; }
-if test "${gl_cv_compound_literals+set}" = set; then
+{ $as_echo "$as_me:$LINENO: checking whether getline is declared" >&5
+$as_echo_n "checking whether getline is declared... " >&6; }
+if test "${ac_cv_have_decl_getline+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -14631,315 +14850,14 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-struct s { int i, j; };
+$ac_includes_default
 int
 main ()
 {
-struct s t = (struct s) { 3, 4 };
-        if (t.i != 0) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  gl_cv_compound_literals=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       gl_cv_compound_literals=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_compound_literals" >&5
-$as_echo "$gl_cv_compound_literals" >&6; }
-  if test $gl_cv_compound_literals = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_COMPOUND_LITERALS 1
-_ACEOF
-
-  fi
-
-{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if test "${ac_cv_struct_tm+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <time.h>
-
-int
-main ()
-{
-struct tm tm;
-                                    int *p = &tm.tm_sec;
-                                    return !p;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_struct_tm=time.h
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_struct_tm=sys/time.h
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
-$as_echo "$ac_cv_struct_tm" >&6; }
-if test $ac_cv_struct_tm = sys/time.h; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TM_IN_SYS_TIME 1
-_ACEOF
-
-fi
-
-
- { $as_echo "$as_me:$LINENO: checking for struct tm.tm_gmtoff" >&5
-$as_echo_n "checking for struct tm.tm_gmtoff... " >&6; }
-if test "${ac_cv_member_struct_tm_tm_gmtoff+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <time.h>
-
-int
-main ()
-{
-static struct tm ac_aggr;
-if (ac_aggr.tm_gmtoff)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_member_struct_tm_tm_gmtoff=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <time.h>
-
-int
-main ()
-{
-static struct tm ac_aggr;
-if (sizeof ac_aggr.tm_gmtoff)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_member_struct_tm_tm_gmtoff=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_member_struct_tm_tm_gmtoff=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_gmtoff" >&5
-$as_echo "$ac_cv_member_struct_tm_tm_gmtoff" >&6; }
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TM_GMTOFF 1
-_ACEOF
-
-fi
-
-
-{ $as_echo "$as_me:$LINENO: checking whether getdelim is declared" >&5
-$as_echo_n "checking whether getdelim is declared... " >&6; }
-if test "${ac_cv_have_decl_getdelim+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-#ifndef getdelim
-  (void) getdelim;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_decl_getdelim=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_have_decl_getdelim=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getdelim" >&5
-$as_echo "$ac_cv_have_decl_getdelim" >&6; }
-if test "x$ac_cv_have_decl_getdelim" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETDELIM 1
-_ACEOF
-
-
-else
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETDELIM 0
-_ACEOF
-
-
-fi
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking whether getline is declared" >&5
-$as_echo_n "checking whether getline is declared... " >&6; }
-if test "${ac_cv_have_decl_getline+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-#ifndef getline
-  (void) getline;
-#endif
-
+#ifndef getline
+  (void) getline;
+#endif
+
   ;
   return 0;
 }
@@ -15335,7 +15253,7 @@ done
 
   fi
 
-          if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+              if test -z "$gl_replace_getopt"; then
     { $as_echo "$as_me:$LINENO: checking whether optreset is declared" >&5
 $as_echo_n "checking whether optreset is declared... " >&6; }
 if test "${ac_cv_have_decl_optreset+set}" = set; then
@@ -15402,13 +15320,83 @@ else
 #define HAVE_DECL_OPTRESET 0
 _ACEOF
 
+{ $as_echo "$as_me:$LINENO: checking whether getopt_clip is declared" >&5
+$as_echo_n "checking whether getopt_clip is declared... " >&6; }
+if test "${ac_cv_have_decl_getopt_clip+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <getopt.h>
+
+int
+main ()
+{
+#ifndef getopt_clip
+  (void) getopt_clip;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getopt_clip=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getopt_clip=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getopt_clip" >&5
+$as_echo "$ac_cv_have_decl_getopt_clip" >&6; }
+if test "x$ac_cv_have_decl_getopt_clip" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETOPT_CLIP 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETOPT_CLIP 0
+_ACEOF
+
+
+fi
+
+
 
 fi
 
 
   fi
 
-            if test -z "$gl_replace_getopt"; then
+                    if test -z "$gl_replace_getopt"; then
     { $as_echo "$as_me:$LINENO: checking whether getopt is POSIX compatible" >&5
 $as_echo_n "checking whether getopt is POSIX compatible... " >&6; }
 if test "${gl_cv_func_getopt_posix+set}" = set; then
@@ -15417,8 +15405,9 @@ else
 
                 if test "$cross_compiling" = yes; then
   case "$host_os" in
-             mingw*) gl_cv_func_getopt_posix="guessing no";;
-             *)      gl_cv_func_getopt_posix="guessing yes";;
+             mingw*)         gl_cv_func_getopt_posix="guessing no";;
+             darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
+             *)              gl_cv_func_getopt_posix="guessing yes";;
            esac
 
 else
@@ -15433,7 +15422,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 #include <stdlib.h>
 #include <string.h>
 
-#if !HAVE_DECL_OPTRESET
+#if !HAVE_DECL_OPTRESET && !HAVE_DECL_GETOPT_CLIP
 # define OPTIND_MIN 0
 #else
 # define OPTIND_MIN 1
@@ -15501,6 +15490,20 @@ main ()
     if (!(optind == 1))
       return 12;
   }
+  /* Detect MacOS 10.5, AIX 7.1 bug.  */
+  {
+    char *argv[3] = { "program", "-ab", NULL };
+    optind = OPTIND_MIN;
+    opterr = 0;
+    if (getopt (2, argv, "ab:") != 'a')
+      return 13;
+    if (getopt (2, argv, "ab:") != '?')
+      return 14;
+    if (optopt != 'b')
+      return 15;
+    if (optind != 2)
+      return 16;
+  }
 
   return 0;
 }
@@ -15561,7 +15564,14 @@ else
        # optstring is necessary for programs like m4 that have POSIX-mandated
        # semantics for supporting options interspersed with files.
        # Also, since getopt_long is a GNU extension, we require optind=0.
-       gl_had_POSIXLY_CORRECT=${POSIXLY_CORRECT:+yes}
+       # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
+       # so take care to revert to the correct (non-)export state.
+       gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+       case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+         xx) gl_had_POSIXLY_CORRECT=exported ;;
+         x)  gl_had_POSIXLY_CORRECT=yes      ;;
+         *)  gl_had_POSIXLY_CORRECT=         ;;
+       esac
        POSIXLY_CORRECT=1
        export POSIXLY_CORRECT
        if test "$cross_compiling" = yes; then
@@ -15623,6 +15633,15 @@ main ()
                if (getopt (3, argv, "-p") != 'p')
                  return 7;
              }
+             /* This code fails on glibc 2.11.  */
+             {
+               char *argv[] = { "program", "-b", "-a", NULL };
+               optind = opterr = 0;
+               if (getopt (3, argv, "+:a:b") != 'b')
+                 return 8;
+               if (getopt (3, argv, "+:a:b") != ':')
+                 return 9;
+             }
              return 0;
 
   ;
@@ -15665,9 +15684,11 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
 fi
 
 
-       if test "$gl_had_POSIXLY_CORRECT" != yes; then
-         $as_unset POSIXLY_CORRECT || test "${POSIXLY_CORRECT+set}" != set || { POSIXLY_CORRECT=; export POSIXLY_CORRECT; }
-       fi
+       case $gl_had_POSIXLY_CORRECT in
+         exported) ;;
+         yes) $as_unset POSIXLY_CORRECT || test "${POSIXLY_CORRECT+set}" != set || { POSIXLY_CORRECT=; export POSIXLY_CORRECT; }; POSIXLY_CORRECT=1 ;;
+         *) $as_unset POSIXLY_CORRECT || test "${POSIXLY_CORRECT+set}" != set || { POSIXLY_CORRECT=; export POSIXLY_CORRECT; } ;;
+       esac
 
 fi
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_getopt_gnu" >&5
@@ -15732,6 +15753,9 @@ fi
 
 
 
+
+
+
   GNULIB_GETTIMEOFDAY=0;
     HAVE_GETTIMEOFDAY=1;
   HAVE_STRUCT_TIMEVAL=1;
 
 
 
+{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+             #include <stdbool.h>
+             #ifndef bool
+              "error: bool is not defined"
+             #endif
+             #ifndef false
+              "error: false is not defined"
+             #endif
+             #if false
+              "error: false is not 0"
+             #endif
+             #ifndef true
+              "error: true is not defined"
+             #endif
+             #if true != 1
+              "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
+              "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
+
+int
+main ()
+{
+
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdbool_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_header_stdbool_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+   { $as_echo "$as_me:$LINENO: checking for _Bool" >&5
+$as_echo_n "checking for _Bool... " >&6; }
+if test "${ac_cv_type__Bool+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_type__Bool=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof (_Bool))
+       return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if (sizeof ((_Bool)))
+         return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type__Bool=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+$as_echo "$ac_cv_type__Bool" >&6; }
+if test "x$ac_cv_type__Bool" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+   if test $ac_cv_header_stdbool_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+   fi
+
+
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+
+
 
   { $as_echo "$as_me:$LINENO: checking for long long int" >&5
 $as_echo_n "checking for long long int... " >&6; }
@@ -18164,6 +18418,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <inttypes.h>
 #ifdef PRId32
 char *p = PRId32;
 
 
 
-    { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
-if test "${ac_cv_gnu_library_2_1+set}" = set; then
+
+
+  { $as_echo "$as_me:$LINENO: checking whether lstat correctly handles trailing slash" >&5
+$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
+if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  rm -f conftest.sym conftest.file
+     echo >conftest.file
+     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+       if test "$cross_compiling" = yes; then
+  # When cross-compiling, be pessimistic so we will end up using the
+          # replacement version of lstat that checks for trailing slashes and
+          # calls lstat a second time when necessary.
+          ac_cv_func_lstat_dereferences_slashed_symlink=no
+
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18530,44 +18797,101 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+              /* Linux will dereference the symlink and fail, as required by
+                 POSIX.  That is better in the sense that it means we will not
+                 have to compile and use the lstat wrapper.  */
+              return lstat ("conftest.sym/", &sbuf) == 0;
 
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-
+  ;
+  return 0;
+}
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "Lucky GNU user" >/dev/null 2>&1; then
-  ac_cv_gnu_library_2_1=yes
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_lstat_dereferences_slashed_symlink=yes
 else
-  ac_cv_gnu_library_2_1=no
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest*
 
 
+     else
+       # If the 'ln -s' command failed, then we probably don't even
+       # have an lstat function.
+       ac_cv_func_lstat_dereferences_slashed_symlink=no
+     fi
+     rm -f conftest.sym conftest.file
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
+$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
+  test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
 
-    GLIBC21="$ac_cv_gnu_library_2_1"
+cat >>confdefs.h <<_ACEOF
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+_ACEOF
 
+  if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
 
 
 
-{ $as_echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5
-$as_echo_n "checking whether lstat dereferences a symlink specified with a trailing slash... " >&6; }
-if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
+
+  fi
+
+
+
+
+
+    { $as_echo "$as_me:$LINENO: checking whether unlink honors trailing slashes" >&5
+$as_echo_n "checking whether unlink honors trailing slashes... " >&6; }
+if test "${gl_cv_func_unlink_honors_slashes+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  rm -f conftest.sym conftest.file
-echo >conftest.file
-if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_lstat_dereferences_slashed_symlink=no
+  touch conftest.file
+     # Assume that if we have lstat, we can also check symlinks.
+     if test $ac_cv_func_lstat = yes; then
+       ln -s conftest.file conftest.lnk
+     fi
+     if test "$cross_compiling" = yes; then
+  gl_cv_func_unlink_honors_slashes="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -18575,15 +18899,17 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+#include <unistd.h>
+           #include <errno.h>
+
 int
 main ()
 {
-struct stat sbuf;
-     /* Linux will dereference the symlink and fail.
-       That is better in the sense that it means we will not
-       have to compile and use the lstat wrapper.  */
-     return lstat ("conftest.sym/", &sbuf) == 0;
+if (!unlink ("conftest.file/") || errno != ENOTDIR) return 1;
+#if HAVE_LSTAT
+      if (!unlink ("conftest.lnk/") || errno != ENOTDIR) return 2;
+#endif
+
   ;
   return 0;
 }
@@ -18610,51 +18936,635 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_func_lstat_dereferences_slashed_symlink=yes
+  gl_cv_func_unlink_honors_slashes=yes
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-ac_cv_func_lstat_dereferences_slashed_symlink=no
+gl_cv_func_unlink_honors_slashes=no
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
+     rm -f conftest.file conftest.lnk
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_unlink_honors_slashes" >&5
+$as_echo "$gl_cv_func_unlink_honors_slashes" >&6; }
+      { $as_echo "$as_me:$LINENO: checking whether unlink of a parent directory fails is it should" >&5
+$as_echo_n "checking whether unlink of a parent directory fails is it should... " >&6; }
+if test "${gl_cv_func_unlink_parent_fails+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case "$host_os" in
+       darwin*)
+                                                      if {
+              # Use the mktemp program if available. If not available, hide the error
+              # message.
+              tmp=`(umask 077 && mktemp -d /tmp/gtXXXXXX) 2>/dev/null` &&
+              test -n "$tmp" && test -d "$tmp"
+            } ||
+            {
+              # Use a simple mkdir command. It is guaranteed to fail if the directory
+              # already exists.  $RANDOM is bash specific and expands to empty in shells
+              # other than bash, ksh and zsh.  Its use does not increase security;
+              # rather, it minimizes the probability of failure in a very cluttered /tmp
+              # directory.
+              tmp=/tmp/gt$$-$RANDOM
+              (umask 077 && mkdir "$tmp")
+            }; then
+           mkdir "$tmp/subdir"
+           GL_SUBDIR_FOR_UNLINK="$tmp/subdir"
+           export GL_SUBDIR_FOR_UNLINK
+           if test "$cross_compiling" = yes; then
+  gl_cv_func_unlink_parent_fails="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+                #include <stdlib.h>
+                #include <unistd.h>
+                int main ()
+                {
+                  if (chdir (getenv ("GL_SUBDIR_FOR_UNLINK")) != 0)
+                    return 1;
+                  return unlink ("..") == 0;
+                }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_unlink_parent_fails=yes
 else
-  # If the `ln -s' command failed, then we probably don't even
-  # have an lstat function.
-  ac_cv_func_lstat_dereferences_slashed_symlink=no
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_unlink_parent_fails=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest.sym conftest.file
+
+
+           unset GL_SUBDIR_FOR_UNLINK
+           rm -rf "$tmp"
+         else
+           gl_cv_func_unlink_parent_fails="guessing no"
+         fi
+         ;;
+       *)
+         gl_cv_func_unlink_parent_fails="guessing yes"
+         ;;
+     esac
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
-$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_unlink_parent_fails" >&5
+$as_echo "$gl_cv_func_unlink_parent_fails" >&6; }
+  case "$gl_cv_func_unlink_parent_fails" in
+    *no)
 
-test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+cat >>confdefs.h <<\_ACEOF
+#define UNLINK_PARENT_BUG 1
+_ACEOF
 
-cat >>confdefs.h <<_ACEOF
-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+      ;;
+  esac
+  if test "$gl_cv_func_unlink_honors_slashes" != yes \
+     || { case "$gl_cv_func_unlink_parent_fails" in
+            *yes) false;;
+            *no) true;;
+          esac
+        }; then
+    REPLACE_UNLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS unlink.$ac_objext"
+
+  fi
+
+
+
+  GNULIB_OPENAT=1
+
+
+  GNULIB_FCHMODAT=1
+  GNULIB_FSTATAT=1
+  GNULIB_MKDIRAT=1
+
+
+  GNULIB_FCHOWNAT=1
+  GNULIB_UNLINKAT=1
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in fchmodat fstatat mkdirat openat unlinkat
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
 
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
 
-if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
 
+#undef $ac_func
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
 
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       eval "$as_ac_var=no"
+fi
 
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
 
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
 
+fi
+done
+
+
+
+
+  case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in
+  yes+yes)
+    # GNU/Hurd has unlinkat, but it has the same bug as unlink.
+    if test $REPLACE_UNLINK = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext"
+
+      REPLACE_UNLINKAT=1
+    fi ;;
+  yes+*)
+    # Solaris 9 has *at functions, but uniformly mishandles trailing
+    # slash in all of them.
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS openat.$ac_objext"
+
+    REPLACE_OPENAT=1
 
-  gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
 
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext"
+
+    REPLACE_FSTATAT=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext"
+
+    REPLACE_UNLINKAT=1
+    ;;
+  *)
+    HAVE_OPENAT=0
+    HAVE_UNLINKAT=0 # No known system with unlinkat but not openat
+    HAVE_FSTATAT=0 # No known system with fstatat but not openat
+
+
+
+  :
+;;
+  esac
+  if test $ac_cv_func_fchmodat != yes; then
+    HAVE_FCHMODAT=0
+  fi
+  if test $ac_cv_func_mkdirat != yes; then
+    HAVE_MKDIRAT=0
+  fi
+
+
+  { $as_echo "$as_me:$LINENO: checking for fchownat" >&5
+$as_echo_n "checking for fchownat... " >&6; }
+if test "${ac_cv_func_fchownat+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define fchownat to an innocuous variant, in case <limits.h> declares fchownat.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define fchownat innocuous_fchownat
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char fchownat (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef fchownat
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fchownat ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_fchownat || defined __stub___fchownat
+choke me
+#endif
+
+int
+main ()
+{
+return fchownat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_fchownat=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_fchownat=no
 fi
 
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fchownat" >&5
+$as_echo "$ac_cv_func_fchownat" >&6; }
+if test "x$ac_cv_func_fchownat" = x""yes; then
+
+  { $as_echo "$as_me:$LINENO: checking whether fchownat works with AT_SYMLINK_NOFOLLOW" >&5
+$as_echo_n "checking whether fchownat works with AT_SYMLINK_NOFOLLOW... " >&6; }
+if test "${gl_cv_func_fchownat_nofollow_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+     gl_dangle=conftest.dangle
+     # Remove any remnants of a previous test.
+     rm -f $gl_dangle
+     # Arrange for deletion of the temporary file this test creates.
+     ac_clean_files="$ac_clean_files $gl_dangle"
+     ln -s conftest.no-such $gl_dangle
+     if test "$cross_compiling" = yes; then
+  gl_cv_func_fchownat_nofollow_works=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+int
+main ()
+{
+  return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
+                    AT_SYMLINK_NOFOLLOW) != 0
+          && errno == ENOENT);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_fchownat_nofollow_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_fchownat_nofollow_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fchownat_nofollow_works" >&5
+$as_echo "$gl_cv_func_fchownat_nofollow_works" >&6; }
+  if test $gl_cv_func_fchownat_nofollow_works = no; then
+  REPLACE_FCHOWNAT=1
+
+cat >>confdefs.h <<\_ACEOF
+#define FCHOWNAT_NOFOLLOW_BUG 1
+_ACEOF
+
+
+fi
+
+
+     if test $REPLACE_CHOWN = 1; then
+       REPLACE_FCHOWNAT=1
+     fi
+else
+  HAVE_FCHOWNAT=0
+fi
+
+  if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext"
+
+  fi
+
+
+
+
+
+
+
+    { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
+$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
+if test "${ac_cv_gnu_library_2_1+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+  Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky GNU user" >/dev/null 2>&1; then
+  ac_cv_gnu_library_2_1=yes
+else
+  ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+    GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+
 
   { $as_echo "$as_me:$LINENO: checking whether malloc, realloc, calloc are POSIX compliant" >&5
 $as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; }
@@ -18673,8 +19583,8 @@ int
 main ()
 {
 #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-         choke me
-         #endif
+             choke me
+             #endif
 
   ;
   return 0;
@@ -18983,11 +19893,14 @@ int main ()
      is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
      On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
      succeeds but then nl_langinfo(CODESET) is "646". In this situation,
-     some unit tests fail.  */
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
 #if HAVE_LANGINFO_CODESET
   {
     const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
       return 1;
   }
 #endif
@@ -19002,7 +19915,7 @@ int main ()
   if (MB_CUR_MAX == 1)
     return 1;
   /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
-     This excludes the UTF-8 encoding.  */
+     This excludes the UTF-8 encoding (except on MirBSD).  */
   t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
   if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
   for (p = buf; *p != '\0'; p++)
@@ -19098,11 +20011,14 @@ int main ()
      is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
      On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
      succeeds but then nl_langinfo(CODESET) is "646". In this situation,
-     some unit tests fail.  */
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
 #if HAVE_LANGINFO_CODESET
   {
     const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
       return 1;
   }
 #endif
@@ -19113,7 +20029,7 @@ int main ()
   if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
 #endif
   /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
-     This excludes the UTF-8 encoding.  */
+     This excludes the UTF-8 encoding (except on MirBSD).  */
   t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
   if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
   for (p = buf; *p != '\0'; p++)
@@ -19272,6 +20188,7 @@ $as_echo "$gt_cv_locale_fr_utf8" >&6; }
   GNULIB_STPNCPY=0;
   GNULIB_STRCHRNUL=0;
   GNULIB_STRDUP=0;
+  GNULIB_STRNCAT=0;
   GNULIB_STRNDUP=0;
   GNULIB_STRNLEN=0;
   GNULIB_STRPBRK=0;
@@ -19297,7 +20214,8 @@ $as_echo "$gt_cv_locale_fr_utf8" >&6; }
   GNULIB_STRSIGNAL=0;
   GNULIB_STRVERSCMP=0;
   HAVE_MBSLEN=0;
-    HAVE_DECL_MEMMEM=1;
+    HAVE_MEMCHR=1;
+  HAVE_DECL_MEMMEM=1;
   HAVE_MEMPCPY=1;
   HAVE_DECL_MEMRCHR=1;
   HAVE_RAWMEMCHR=1;
@@ -19311,16 +20229,18 @@ $as_echo "$gt_cv_locale_fr_utf8" >&6; }
   HAVE_STRSEP=1;
   HAVE_STRCASESTR=1;
   HAVE_DECL_STRTOK_R=1;
-  HAVE_DECL_STRERROR=1;
   HAVE_DECL_STRSIGNAL=1;
   HAVE_STRVERSCMP=1;
   REPLACE_MEMCHR=0;
   REPLACE_MEMMEM=0;
+  REPLACE_STPNCPY=0;
   REPLACE_STRDUP=0;
   REPLACE_STRSTR=0;
   REPLACE_STRCASESTR=0;
   REPLACE_STRERROR=0;
+  REPLACE_STRNCAT=0;
   REPLACE_STRNDUP=0;
+  REPLACE_STRNLEN=0;
   REPLACE_STRSIGNAL=0;
   REPLACE_STRTOK_R=0;
   UNDEFINE_STRTOK_R=0;
@@ -19404,6 +20324,8 @@ _ACEOF
 
 
 
+
+
   # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
   # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
   # irrelevant for anonymous mappings.
@@ -19579,271 +20501,6 @@ _ACEOF
 
 
 
-
-
-
-
-for ac_func in memchr
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
-
-fi
-done
-
-
-  if test $ac_cv_func_memchr = no; then
-
-
-for ac_header in bp-sym.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## ------------------------------ ##
-## Report this to bug-tar@gnu.org ##
-## ------------------------------ ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-    REPLACE_MEMCHR=1
-  fi
 
   if test $ac_cv_func_memchr = yes; then
     # Detect platform-specific bugs in some versions of glibc:
@@ -19910,6 +20567,8 @@ main ()
       strcpy (fence - 9, "12345678");
       if (memchr (fence - 9, 0, 79) != fence - 1)
         return 2;
+      if (memchr (fence - 1, 0, 3) != fence - 1)
+        return 3;
     }
   return 0;
 
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_memchr_works" >&5
 $as_echo "$gl_cv_func_memchr_works" >&6; }
     if test "$gl_cv_func_memchr_works" != yes; then
+      REPLACE_MEMCHR=1
+    fi
+  else
+    HAVE_MEMCHR=0
+  fi
+  if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext"
+
 
 
 for ac_header in bp-sym.h
 done
 
 
-      REPLACE_MEMCHR=1
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext"
-
-    fi
   fi
 
 { $as_echo "$as_me:$LINENO: checking whether memrchr is declared" >&5
@@ -20165,64 +20828,192 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  ac_cv_have_decl_memrchr=yes
+  ac_cv_have_decl_memrchr=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_memrchr=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_memrchr" >&5
+$as_echo "$ac_cv_have_decl_memrchr" >&6; }
+if test "x$ac_cv_have_decl_memrchr" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MEMRCHR 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MEMRCHR 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+  GNULIB_MKTIME=0;
+  GNULIB_NANOSLEEP=0;
+  GNULIB_STRPTIME=0;
+  GNULIB_TIMEGM=0;
+  GNULIB_TIME_R=0;
+    HAVE_LOCALTIME_R=1;
+  HAVE_NANOSLEEP=1;
+  HAVE_STRPTIME=1;
+  HAVE_TIMEGM=1;
+        REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
+  REPLACE_MKTIME=GNULIB_PORTCHECK;
+  REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
+  REPLACE_TIMEGM=GNULIB_PORTCHECK;
+
+
+
+
+
+
+  # parse-datetime.y works with bison only.
+  : ${YACC='bison -y'}
+
+
+  { $as_echo "$as_me:$LINENO: checking for compound literals" >&5
+$as_echo_n "checking for compound literals... " >&6; }
+if test "${gl_cv_compound_literals+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+struct s { int i, j; };
+int
+main ()
+{
+struct s t = (struct s) { 3, 4 };
+        if (t.i != 0) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_compound_literals=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_have_decl_memrchr=no
+       gl_cv_compound_literals=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_memrchr" >&5
-$as_echo "$ac_cv_have_decl_memrchr" >&6; }
-if test "x$ac_cv_have_decl_memrchr" = x""yes; then
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_compound_literals" >&5
+$as_echo "$gl_cv_compound_literals" >&6; }
+  if test $gl_cv_compound_literals = yes; then
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MEMRCHR 1
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_COMPOUND_LITERALS 1
 _ACEOF
 
+  fi
 
+{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
+$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test "${ac_cv_struct_tm+set}" = set; then
+  $as_echo_n "(cached) " >&6
 else
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MEMRCHR 0
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <time.h>
 
+int
+main ()
+{
+struct tm tm;
+                                    int *p = &tm.tm_sec;
+                                    return !p;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_struct_tm=time.h
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_cv_struct_tm=sys/time.h
 fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
+$as_echo "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
 
+cat >>confdefs.h <<\_ACEOF
+#define TM_IN_SYS_TIME 1
+_ACEOF
 
-  GNULIB_MKTIME=0;
-  GNULIB_NANOSLEEP=0;
-  GNULIB_STRPTIME=0;
-  GNULIB_TIMEGM=0;
-        REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
-  REPLACE_MKTIME=GNULIB_PORTCHECK;
-  REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
-  REPLACE_STRPTIME=GNULIB_PORTCHECK;
-  REPLACE_TIMEGM=GNULIB_PORTCHECK;
-
-
-
-
-
-
+fi
 
 
   { $as_echo "$as_me:$LINENO: checking whether unlink honors trailing slashes" >&5
-$as_echo_n "checking whether unlink honors trailing slashes... " >&6; }
-if test "${gl_cv_func_unlink_works+set}" = set; then
{ $as_echo "$as_me:$LINENO: checking for struct tm.tm_gmtoff" >&5
+$as_echo_n "checking for struct tm.tm_gmtoff... " >&6; }
+if test "${ac_cv_member_struct_tm_tm_gmtoff+set}" = set; then
   $as_echo_n "(cached) " >&6
-else
-  touch conftest.file
-     # Assume that if we have lstat, we can also check symlinks.
-     if test $ac_cv_func_lstat = yes; then
-       ln -s conftest.file conftest.lnk
-     fi
-     if test "$cross_compiling" = yes; then
-  gl_cv_func_unlink_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -20230,74 +21021,104 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <unistd.h>
-           #include <errno.h>
+#include <time.h>
 
 int
 main ()
 {
-if (!unlink ("conftest.file/") || errno != ENOTDIR) return 1;
-#if HAVE_LSTAT
-      if (!unlink ("conftest.lnk/") || errno != ENOTDIR) return 2;
-#endif
-
+static struct tm ac_aggr;
+if (ac_aggr.tm_gmtoff)
+return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
+  (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_tm_tm_gmtoff=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <time.h>
+
+int
+main ()
+{
+static struct tm ac_aggr;
+if (sizeof ac_aggr.tm_gmtoff)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
+  (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  gl_cv_func_unlink_works=yes
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_tm_tm_gmtoff=yes
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-gl_cv_func_unlink_works=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+       ac_cv_member_struct_tm_tm_gmtoff=no
 fi
 
-
-     rm -f conftest.file conftest.lnk
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_unlink_works" >&5
-$as_echo "$gl_cv_func_unlink_works" >&6; }
-  if test x"$gl_cv_func_unlink_works" != xyes; then
-    REPLACE_UNLINK=1
-
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_gmtoff" >&5
+$as_echo "$ac_cv_member_struct_tm_tm_gmtoff" >&6; }
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TM_GMTOFF 1
+_ACEOF
 
+fi
 
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS unlink.$ac_objext"
 
-  fi
 
 
 
@@ -20333,6 +21154,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 
        #include <stdlib.h>
        #include <errno.h>
+       #include <string.h>
 
 int
 main ()
@@ -20754,7 +21576,7 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <stddef.h>
-       wchar_t foo = (wchar_t)'\0';
+            wchar_t foo = (wchar_t)'\0';
 int
 main ()
 {
@@ -20804,6 +21626,48 @@ _ACEOF
 
 
 
+        { $as_echo "$as_me:$LINENO: checking whether C symbols are prefixed with underscore at the linker level" >&5
+$as_echo_n "checking whether C symbols are prefixed with underscore at the linker level... " >&6; }
+if test "${gl_cv_prog_as_underscore+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" int foo (void);
+#endif
+int foo(void) { return 0; }
+EOF
+     # Look for the assembly language name in the .s file.
+     { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null 2>&1
+     if grep _foo conftest.s >/dev/null ; then
+       gl_cv_prog_as_underscore=yes
+     else
+       gl_cv_prog_as_underscore=no
+     fi
+     rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_prog_as_underscore" >&5
+$as_echo "$gl_cv_prog_as_underscore" >&6; }
+  if test $gl_cv_prog_as_underscore = yes; then
+    USER_LABEL_PREFIX=_
+  else
+    USER_LABEL_PREFIX=
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define USER_LABEL_PREFIX $USER_LABEL_PREFIX
+_ACEOF
+
+  ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
+
+
+
 
 
 
@@ -20811,6 +21675,8 @@ _ACEOF
     HAVE_STRCASECMP=1;
   HAVE_DECL_STRNCASECMP=1;
 
+
+
 { $as_echo "$as_me:$LINENO: checking whether strdup is declared" >&5
 $as_echo_n "checking whether strdup is declared... " >&6; }
 if test "${ac_cv_have_decl_strdup+set}" = set; then
@@ -21315,7 +22181,8 @@ $as_echo "$gl_cv_next_string_h" >&6; }
 
 
 
-  for gl_func in memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup     strndup strnlen strpbrk strsep strcasestr strtok_r strsignal strverscmp; do
+
+  for gl_func in memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup      strncat strndup strnlen strpbrk strsep strcasestr strtok_r strsignal      strverscmp; do
     as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
     { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
@@ -21676,6 +22543,8 @@ fi
 
 
 
+
+
   { $as_echo "$as_me:$LINENO: checking for struct timespec in <time.h>" >&5
 $as_echo_n "checking for struct timespec in <time.h>... " >&6; }
 if test "${gl_cv_sys_struct_timespec_in_time_h+set}" = set; then
@@ -21730,6 +22599,7 @@ $as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; }
 
   TIME_H_DEFINES_STRUCT_TIMESPEC=0
   SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
   if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
     TIME_H_DEFINES_STRUCT_TIMESPEC=1
   else
 $as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; }
     if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
       SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+    else
+      { $as_echo "$as_me:$LINENO: checking for struct timespec in <pthread.h>" >&5
+$as_echo_n "checking for struct timespec in <pthread.h>... " >&6; }
+if test "${gl_cv_sys_struct_timespec_in_pthread_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <pthread.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_sys_struct_timespec_in_pthread_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_sys_struct_timespec_in_pthread_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_sys_struct_timespec_in_pthread_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; }
+      if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
+        PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+      fi
     fi
   fi
 
@@ -21805,6 +22730,7 @@ $as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; }
 
 
 
+
      if test $gl_cv_have_include_next = yes; then
        gl_cv_next_time_h='<'time.h'>'
      else
@@ -21863,6 +22789,35 @@ $as_echo "$gl_cv_next_time_h" >&6; }
 
 
 
+
+
+
+
+
+gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+
+
+  if test "$HAVE_LIBUNISTRING" = yes; then
+    LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
+    LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
+    LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
+  fi
+
+
   { $as_echo "$as_me:$LINENO: checking whether the utimes function works" >&5
 $as_echo_n "checking whether the utimes function works... " >&6; }
 if test "${gl_cv_func_working_utimes+set}" = set; then
@@ -22066,8 +23021,6 @@ _ACEOF
 
 
 
-
-
   { $as_echo "$as_me:$LINENO: checking for wint_t" >&5
 $as_echo_n "checking for wint_t... " >&6; }
 if test "${gt_cv_c_wint_t+set}" = set; then
@@ -22088,7 +23041,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 #include <stdio.h>
 #include <time.h>
 #include <wchar.h>
-       wint_t foo = (wchar_t)'\0';
+            wint_t foo = (wchar_t)'\0';
 int
 main ()
 {
@@ -22147,8 +23100,10 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <sys/types.h>
 #include <inttypes.h>
+
 int
 main ()
 {
@@ -22208,7 +23163,7 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <stdint.h>
+            #include <stdint.h>
 int
 main ()
 {
@@ -22337,6 +23292,107 @@ _ACEOF
 
 
 
+     { $as_echo "$as_me:$LINENO: checking whether snprintf returns a byte count as in C99" >&5
+$as_echo_n "checking whether snprintf returns a byte count as in C99... " >&6; }
+if test "${gl_cv_func_snprintf_retval_c99+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      if test "$cross_compiling" = yes; then
+
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4]*)        gl_cv_func_snprintf_retval_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
+           darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5]*)      gl_cv_func_snprintf_retval_c99="guessing no";;
+           solaris*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
+           aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
+         esac
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  strcpy (buf, "ABCDEF");
+  if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
+    return 1;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_snprintf_retval_c99=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_snprintf_retval_c99=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_snprintf_retval_c99" >&5
+$as_echo "$gl_cv_func_snprintf_retval_c99" >&6; }
+
+
+
+
+
 
 
 
 
 
 
+  case "$gl_cv_func_snprintf_retval_c99" in
+    *yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SNPRINTF_RETVAL_C99 1
+_ACEOF
+
+      ;;
+  esac
+
 { $as_echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
 $as_echo_n "checking whether vsnprintf is declared... " >&6; }
 if test "${ac_cv_have_decl_vsnprintf+set}" = set; then
 
 
 
+{ $as_echo "$as_me:$LINENO: checking whether iswblank is declared" >&5
+$as_echo_n "checking whether iswblank is declared... " >&6; }
+if test "${ac_cv_have_decl_iswblank+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef iswblank
+  (void) iswblank;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_iswblank=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_iswblank=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_iswblank" >&5
+$as_echo "$ac_cv_have_decl_iswblank" >&6; }
+if test "x$ac_cv_have_decl_iswblank" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISWBLANK 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISWBLANK 0
+_ACEOF
+
+
+fi
+
+
+
+
 
    if false; then
   GL_COND_LIBTOOL_TRUE=
@@ -22604,6 +23741,7 @@ fi
   gl_cond_libtool=false
   gl_libdeps=
   gl_ltlibdeps=
+  gl_m4_base='m4'
 
 
 
@@ -22614,6 +23752,8 @@ fi
 
 
   gl_source_base='gnu'
+  # Code from module alloca:
+  # Code from module alloca-opt:
 
 
 
@@ -22670,6 +23810,17 @@ _ACEOF
   fi
 
 
+  # Code from module areadlink:
+  # Code from module areadlinkat:
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_AREADLINKAT 1
+_ACEOF
+
+
+  # Code from module arg-nonnull:
+  # Code from module argmatch:
 
 
 
@@ -22682,6 +23833,7 @@ _ACEOF
   gl_LIBOBJS="$gl_LIBOBJS argmatch.$ac_objext"
 
 
+  # Code from module argp:
 
 
 
@@ -22878,7 +24030,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
- program_invocation_name = "test";
+program_invocation_name = "test";
   ;
   return 0;
 }
@@ -22909,13 +24061,13 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_PROGRAM_INVOCATION_NAME 1
 _ACEOF
 
-                 { $as_echo "$as_me:$LINENO: result: yes" >&5
+                  { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-        { $as_echo "$as_me:$LINENO: result: no" >&5
+       { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -22935,7 +24087,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 int
 main ()
 {
- program_invocation_short_name = "test";
+program_invocation_short_name = "test";
   ;
   return 0;
 }
@@ -22966,13 +24118,13 @@ cat >>confdefs.h <<\_ACEOF
 #define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1
 _ACEOF
 
-                 { $as_echo "$as_me:$LINENO: result: yes" >&5
+                  { $as_echo "$as_me:$LINENO: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-        { $as_echo "$as_me:$LINENO: result: no" >&5
+       { $as_echo "$as_me:$LINENO: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
@@ -23057,6 +24209,8 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 
   XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=argp_failure:4:c-format"
 
+  # Code from module argp-version-etc:
+  # Code from module backupfile:
 
 
 
@@ -23079,7 +24233,9 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 
 
 
+  # Code from module bitrotate:
 
+  # Code from module btowc:
 
 
 
@@ -23097,7 +24253,82 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 
 
 
-         { $as_echo "$as_me:$LINENO: checking whether btowc(EOF) is correct" >&5
+
+        { $as_echo "$as_me:$LINENO: checking whether btowc(0) is correct" >&5
+$as_echo_n "checking whether btowc(0) is correct... " >&6; }
+if test "${gl_cv_func_btowc_nul+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        if test "$cross_compiling" = yes; then
+
+           case "$host_os" in
+                      # Guess no on Cygwin.
+             cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
+                      # Guess yes otherwise.
+             *)       gl_cv_func_btowc_nul="guessing yes" ;;
+           esac
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (btowc ('\0') != 0)
+    return 1;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_btowc_nul=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_btowc_nul=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_btowc_nul" >&5
+$as_echo "$gl_cv_func_btowc_nul" >&6; }
+
+        { $as_echo "$as_me:$LINENO: checking whether btowc(EOF) is correct" >&5
 $as_echo_n "checking whether btowc(EOF) is correct... " >&6; }
 if test "${gl_cv_func_btowc_eof+set}" = set; then
   $as_echo_n "(cached) " >&6
 fi
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_btowc_eof" >&5
 $as_echo "$gl_cv_func_btowc_eof" >&6; }
+
+    case "$gl_cv_func_btowc_nul" in
+      *yes) ;;
+      *) REPLACE_BTOWC=1 ;;
+    esac
     case "$gl_cv_func_btowc_eof" in
       *yes) ;;
       *) REPLACE_BTOWC=1 ;;
@@ -23201,17 +24437,24 @@ $as_echo "$gl_cv_func_btowc_eof" >&6; }
 
 
 
+
   GNULIB_BTOWC=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_BTOWC 1
+#define GNULIB_TEST_BTOWC 1
 _ACEOF
 
 
 
+  # Code from module c++defs:
+  # Code from module c-ctype:
+  # Code from module canonicalize-lgpl:
 
 
+  if test $ac_cv_func_canonicalize_file_name = no; then
+    HAVE_CANONICALIZE_FILE_NAME=0
 
 
 
@@ -23219,9 +24462,15 @@ _ACEOF
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS canonicalize.$ac_objext"
 
+  gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext"
 
+    if test $ac_cv_func_realpath = no; then
+      HAVE_REALPATH=0
+    elif test "$gl_cv_func_realpath_works" != yes; then
+      REPLACE_REALPATH=1
+    fi
+  elif test "$gl_cv_func_realpath_works" != yes; then
 
 
 
@@ -23230,31 +24479,46 @@ _ACEOF
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext"
 
-  if test $ac_cv_func_canonicalize_file_name = no; then
-    HAVE_CANONICALIZE_FILE_NAME=0
-  elif test "$gl_cv_func_realpath_works" != yes; then
+    REPLACE_REALPATH=1
     REPLACE_CANONICALIZE_FILE_NAME=1
   fi
 
 
 
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_CANONICALIZE 1
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_CANONICALIZE_LGPL 1
 _ACEOF
 
 
 
 
+
   GNULIB_CANONICALIZE_FILE_NAME=1
 
 
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_CANONICALIZE_FILE_NAME 1
+_ACEOF
+
+
+
+
+
+
+  GNULIB_REALPATH=1
+
+
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_CANONICALIZE_FILE_NAME 1
+#define GNULIB_TEST_REALPATH 1
 _ACEOF
 
 
 
+  # Code from module chdir-long:
 
   { $as_echo "$as_me:$LINENO: checking whether this system has an arbitrary file name length limit" >&5
 $as_echo_n "checking whether this system has an arbitrary file name length limit... " >&6; }
@@ -23302,18 +24566,22 @@ $as_echo "$gl_cv_have_arbitrary_file_name_length_limit" >&6; }
 
   fi
 
+  # Code from module chown:
+
 
 
 
   GNULIB_CHOWN=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_CHOWN 1
+#define GNULIB_TEST_CHOWN 1
 _ACEOF
 
 
 
+  # Code from module clock-time:
 
 
 
@@ -23518,6 +24786,28 @@ done
 
   LIBS=$gl_saved_libs
 
+  # Code from module cloexec:
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS cloexec.$ac_objext"
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_CLOEXEC 1
+_ACEOF
+
+
+  # Code from module close:
+
 
 
 
@@ -23526,12 +24816,15 @@ done
   GNULIB_CLOSE=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_CLOSE 1
+#define GNULIB_TEST_CLOSE 1
 _ACEOF
 
 
 
+  # Code from module close-hook:
+  # Code from module close-stream:
 
 
 
@@ -23548,11 +24841,12 @@ _ACEOF
 
 
 
-cat >>confdefs.h <<\_ACEOF
+cat >>confdefs.h <<_ACEOF
 #define GNULIB_CLOSE_STREAM 1
 _ACEOF
 
 
+  # Code from module closeout:
 
 
 
@@ -23567,6 +24861,8 @@ _ACEOF
 
     :
 
+  # Code from module configmake:
+  # Code from module d-ino:
   { $as_echo "$as_me:$LINENO: checking for d_ino member in directory struct" >&5
 $as_echo_n "checking for d_ino member in directory struct... " >&6; }
 if test "${gl_cv_struct_dirent_d_ino+set}" = set; then
@@ -23649,6 +24945,7 @@ _ACEOF
    fi
 
 
+  # Code from module dirent:
 
 
 
@@ -23789,6 +25086,7 @@ fi
       done
 
 
+  # Code from module dirent-safer:
 
 
 
 
 
 
-cat >>confdefs.h <<\_ACEOF
+cat >>confdefs.h <<_ACEOF
 #define GNULIB_DIRENT_SAFER 1
 _ACEOF
 
 
+  # Code from module dirfd:
 
 
 
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_dirfd_macro" >&5
 $as_echo "$gl_cv_func_dirfd_macro" >&6; }
 
-  # Use the replacement only if we have no function, macro,
-  # or declaration with that name.
-  if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$gl_cv_func_dirfd_macro \
-      = no,no,no; then
-
-
-
-
-
-
-
-
-
-for ac_func in dirfd
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
+  # Use the replacement only if we have no function or macro with that name.
+  if test $ac_cv_func_dirfd,$gl_cv_func_dirfd_macro = no,no; then
+    if test $ac_cv_have_decl_dirfd = yes; then
+      # If the system declares dirfd already, let's declare rpl_dirfd instead.
+      REPLACE_DIRFD=1
+    fi
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
-fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
-else
 
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
 
-fi
-done
 
+  gl_LIBOBJS="$gl_LIBOBJS dirfd.$ac_objext"
 
     { $as_echo "$as_me:$LINENO: checking how to get the file descriptor associated with an open DIR*" >&5
 $as_echo_n "checking how to get the file descriptor associated with an open DIR*... " >&6; }
@@ -24228,15 +25425,18 @@ _ACEOF
 
 
 
+
   GNULIB_DIRFD=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_DIRFD 1
+#define GNULIB_TEST_DIRFD 1
 _ACEOF
 
 
 
+  # Code from module dirname:
 
 
 
@@ -24262,11 +25462,12 @@ _ACEOF
 
 
 
-cat >>confdefs.h <<\_ACEOF
+cat >>confdefs.h <<_ACEOF
 #define GNULIB_DIRNAME 1
 _ACEOF
 
 
+  # Code from module dirname-lgpl:
 
 
 
@@ -24303,6 +25504,7 @@ _ACEOF
 
 
 
+  # Code from module double-slash-root:
 
 
   { $as_echo "$as_me:$LINENO: checking whether // is distinct from /" >&5
@@ -24344,6 +25546,7 @@ _ACEOF
 
   fi
 
+  # Code from module dup2:
 
 
 
@@ -24474,27 +25677,35 @@ $as_echo "$gl_cv_func_dup2_works" >&6; }
 
 
 
+
   GNULIB_DUP2=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_DUP2 1
+#define GNULIB_TEST_DUP2 1
 _ACEOF
 
 
 
+  # Code from module environ:
+
 
 
 
   GNULIB_ENVIRON=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_ENVIRON 1
+#define GNULIB_TEST_ENVIRON 1
 _ACEOF
 
 
 
+  # Code from module errno:
+
+  # Code from module error:
 
 
 
@@ -24509,7 +25720,7 @@ _ACEOF
 
 
 
-{ $as_echo "$as_me:$LINENO: checking for error_at_line" >&5
+  { $as_echo "$as_me:$LINENO: checking for error_at_line" >&5
 $as_echo_n "checking for error_at_line... " >&6; }
 if test "${ac_cv_lib_error_at_line+set}" = set; then
   $as_echo_n "(cached) " >&6
@@ -24564,7 +25775,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
 fi
 { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5
 $as_echo "$ac_cv_lib_error_at_line" >&6; }
-if test $ac_cv_lib_error_at_line = no; then
+  if test $ac_cv_lib_error_at_line = no; then
 
 
 
@@ -24575,7 +25786,7 @@ if test $ac_cv_lib_error_at_line = no; then
 
   gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -24591,6 +25802,7 @@ fi
 
   XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format"
 
+  # Code from module exclude:
 
 
 
@@ -24603,6 +25815,9 @@ fi
   gl_LIBOBJS="$gl_LIBOBJS exclude.$ac_objext"
 
 
+  # Code from module exitfail:
+  # Code from module extensions:
+  # Code from module fchdir:
 
 
 
@@ -24614,7 +25829,7 @@ fi
 
 
   if test $ac_cv_func_fchdir = no; then
-    REPLACE_FCHDIR=1
+    HAVE_FCHDIR=0
 
 
 
@@ -24799,15 +26014,19 @@ _ACEOF
 
 
 
+
   GNULIB_FCHDIR=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_FCHDIR 1
+#define GNULIB_TEST_FCHDIR 1
 _ACEOF
 
 
 
+  # Code from module fclose:
+
 
 
 
@@ -24815,12 +26034,14 @@ _ACEOF
   GNULIB_FCLOSE=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_FCLOSE 1
+#define GNULIB_TEST_FCLOSE 1
 _ACEOF
 
 
 
+  # Code from module fcntl:
 
 
 
@@ -25041,139 +26262,212 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_func_fcntl_f_dupfd_cloexec=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  gl_cv_func_fcntl_f_dupfd_cloexec=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_fcntl_f_dupfd_cloexec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fcntl_f_dupfd_cloexec" >&5
+$as_echo "$gl_cv_func_fcntl_f_dupfd_cloexec" >&6; }
+    if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_fcntl = no; then
+    HAVE_FCNTL=0
+  else
+    REPLACE_FCNTL=1
+  fi
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS fcntl.$ac_objext"
+
+
+          fi
+  fi
+
+
+
+
+  GNULIB_FCNTL=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_FCNTL 1
+_ACEOF
+
+
+
+  # Code from module fcntl-h:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_fcntl_h='<'fcntl.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <fcntl.h>" >&5
+$as_echo_n "checking absolute name of <fcntl.h>... " >&6; }
+if test "${gl_cv_next_fcntl_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+          if test $ac_cv_header_fcntl_h = yes; then
+            cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <fcntl.h>
+
+_ACEOF
+                                                                                                case "$host_os" in
+              aix*) gl_absname_cpp="$ac_cpp -C" ;;
+              *)    gl_absname_cpp="$ac_cpp" ;;
+            esac
+                                                gl_cv_next_fcntl_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+               sed -n '\#/fcntl.h#{
+                 s#.*"\(.*/fcntl.h\)".*#\1#
+                 s#^/[^/]#//&#
+                 p
+                 q
+               }'`'"'
+          else
+            gl_cv_next_fcntl_h='<'fcntl.h'>'
+          fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_fcntl_h" >&5
+$as_echo "$gl_cv_next_fcntl_h" >&6; }
+     fi
+     NEXT_FCNTL_H=$gl_cv_next_fcntl_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'fcntl.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_fcntl_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_FCNTL_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+  for gl_func in fcntl openat; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <fcntl.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_gl_Symbol=yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_func_fcntl_f_dupfd_cloexec=no
+       eval "$as_gl_Symbol=no"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fcntl_f_dupfd_cloexec" >&5
-$as_echo "$gl_cv_func_fcntl_f_dupfd_cloexec" >&6; }
-    if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then
-
-
-
-
-
-
-
-
-  if test $ac_cv_func_fcntl = no; then
-    HAVE_FCNTL=0
-  else
-    REPLACE_FCNTL=1
-  fi
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS fcntl.$ac_objext"
-
-
-          fi
-  fi
-
-
-
-  GNULIB_FCNTL=1
-
-
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_FCNTL 1
-_ACEOF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_fcntl_h='<'fcntl.h'>'
-     else
-       { $as_echo "$as_me:$LINENO: checking absolute name of <fcntl.h>" >&5
-$as_echo_n "checking absolute name of <fcntl.h>... " >&6; }
-if test "${gl_cv_next_fcntl_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-
-          if test $ac_cv_header_fcntl_h = yes; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <fcntl.h>
-
+ac_res=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     as_val=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
 _ACEOF
-                                                                                                case "$host_os" in
-              aix*) gl_absname_cpp="$ac_cpp -C" ;;
-              *)    gl_absname_cpp="$ac_cpp" ;;
-            esac
-                                                gl_cv_next_fcntl_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-               sed -n '\#/fcntl.h#{
-                 s#.*"\(.*/fcntl.h\)".*#\1#
-                 s#^/[^/]#//&#
-                 p
-                 q
-               }'`'"'
-          else
-            gl_cv_next_fcntl_h='<'fcntl.h'>'
-          fi
 
+                     eval ac_cv_have_decl_$gl_func=yes
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_fcntl_h" >&5
-$as_echo "$gl_cv_next_fcntl_h" >&6; }
-     fi
-     NEXT_FCNTL_H=$gl_cv_next_fcntl_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'fcntl.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_fcntl_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_FCNTL_H=$gl_next_as_first_directive
-
-
 
+      done
 
 
+  # Code from module fdopendir:
 
 
-  for gl_func in fcntl openat; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+    { $as_echo "$as_me:$LINENO: checking whether fdopendir is declared" >&5
+$as_echo_n "checking whether fdopendir is declared... " >&6; }
+if test "${ac_cv_have_decl_fdopendir+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -25182,13 +26476,17 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <fcntl.h>
+
+#include <dirent.h>
+
 
 int
 main ()
 {
-#undef $gl_func
-  (void) $gl_func;
+#ifndef fdopendir
+  (void) fdopendir;
+#endif
+
   ;
   return 0;
 }
@@ -25211,33 +26509,32 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  eval "$as_gl_Symbol=yes"
+  ac_cv_have_decl_fdopendir=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_gl_Symbol=no"
+       ac_cv_have_decl_fdopendir=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_gl_Symbol'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-     as_val=`eval 'as_val=${'$as_gl_Symbol'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
-_ACEOF
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fdopendir" >&5
+$as_echo "$ac_cv_have_decl_fdopendir" >&6; }
+if test "x$ac_cv_have_decl_fdopendir" = x""yes; then
 
-                     eval ac_cv_have_decl_$gl_func=yes
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FDOPENDIR 1
+_ACEOF
 
-      done
 
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FDOPENDIR 0
+_ACEOF
 
+HAVE_DECL_FDOPENDIR=0
+fi
 
 
 
@@ -25289,6 +26586,9 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 #include <dirent.h>
 #include <fcntl.h>
+#if !HAVE_DECL_FDOPENDIR
+extern DIR *fdopendir (int);
+#endif
 
 int
 main ()
@@ -25359,16 +26659,34 @@ $as_echo "$gl_cv_func_fdopendir_works" >&6; }
 
 
 
+
   GNULIB_FDOPENDIR=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_FDOPENDIR 1
+_ACEOF
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
 #define GNULIB_FDOPENDIR 1
 _ACEOF
 
 
+  # Code from module fdutimensat:
 
 
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_FDUTIMENSAT 1
+_ACEOF
+
+
+  # Code from module fileblocks:
+
   { $as_echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5
 $as_echo_n "checking for struct stat.st_blocks... " >&6; }
 if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then
 
   fi
 
+  # Code from module filenamecat-lgpl:
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS filenamecat-lgpl.$ac_objext"
+
+
+
+
+
+
+
+
+
+  # Code from module float:
 
 
 
   FLOAT_H=
   case "$host_os" in
-    beos* | openbsd*)
+    beos* | openbsd* | mirbsd*)
       FLOAT_H=float.h
 
 
@@ -25574,13 +26913,16 @@ $as_echo "$gl_cv_next_float_h" >&6; }
   esac
 
 
+  # Code from module fnmatch:
 
 
 
 
 
   FNMATCH_H=
-  gl_fnmatch_required_lowercase=`echo $gl_fnmatch_required | tr 'A-Z' 'a-z'`
+  gl_fnmatch_required_lowercase=`
+    echo $gl_fnmatch_required | tr '[A-Z]' '[a-z]'
+  `
   gl_fnmatch_cache_var="gl_cv_func_fnmatch_${gl_fnmatch_required_lowercase}"
   { $as_echo "$as_me:$LINENO: checking for working $gl_fnmatch_required fnmatch" >&5
 $as_echo_n "checking for working $gl_fnmatch_required fnmatch... " >&6; }
   fi
 
 
+  # Code from module fnmatch-gnu:
 
 
 
 
 
+  # Code from module fpending:
 
 
 
@@ -26026,75 +27370,40 @@ _ACEOF
 
   fi
 
+  # Code from module fseeko:
 
 
 
 
 
+  if test $gl_cv_func_fseeko = no; then
+    HAVE_FSEEKO=0
 
 
-  { $as_echo "$as_me:$LINENO: checking for fseeko" >&5
-$as_echo_n "checking for fseeko... " >&6; }
-if test "${gl_cv_func_fseeko+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
 
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdio.h>
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
+
+
 
-int
-main ()
-{
-fseeko (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  gl_cv_func_fseeko=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_func_fseeko=no
-fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fseeko" >&5
-$as_echo "$gl_cv_func_fseeko" >&6; }
-  if test $gl_cv_func_fseeko = no \
-      || test $gl_cv_var_stdin_large_offset = no; then
 
 
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
+
+
+
+  else
+    if test $gl_cv_var_stdin_large_offset = no; then
+
+
+
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
 
 
 
@@ -26102,25 +27411,29 @@ $as_echo "$gl_cv_func_fseeko" >&6; }
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
 
+  gl_LIBOBJS="$gl_LIBOBJS fseeko.$ac_objext"
 
-  REPLACE_FSEEKO=1
 
 
+    fi
   fi
 
 
 
+
   GNULIB_FSEEKO=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_FSEEKO 1
+#define GNULIB_TEST_FSEEKO 1
 _ACEOF
 
 
 
+  # Code from module full-write:
+  # Code from module futimens:
 
 
 
@@ -26130,9 +27443,8 @@ _ACEOF
 
 
 
-  if test $ac_cv_func_ftruncate = no; then
-    HAVE_FTRUNCATE=0
-
+  if test $ac_cv_func_futimens = no; then
+    HAVE_FUTIMENS=0
 
 
 
@@ -26140,17 +27452,17 @@ _ACEOF
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS ftruncate.$ac_objext"
 
+  gl_LIBOBJS="$gl_LIBOBJS futimens.$ac_objext"
 
-
-for ac_func in chsize
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  else
+    { $as_echo "$as_me:$LINENO: checking whether futimens works" >&5
+$as_echo_n "checking whether futimens works... " >&6; }
+if test "${gl_cv_func_futimens_works+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  gl_cv_func_futimens_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -26158,54 +27470,87 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+int
+main ()
+{
+struct timespec ts[2] = { { 1, UTIME_OMIT }, { 1, UTIME_NOW } };
+      int fd = creat ("conftest.file", 0600);
+      struct stat st;
+      if (fd < 0) return 1;
+      errno = 0;
+      if (futimens (AT_FDCWD, NULL) == 0) return 2;
+      if (errno != EBADF) return 3;
+      if (futimens (fd, ts)) return 4;
+      sleep (1);
+      ts[0].tv_nsec = UTIME_NOW;
+      ts[1].tv_nsec = UTIME_OMIT;
+      if (futimens (fd, ts)) return 5;
+      if (fstat (fd, &st)) return 6;
+      if (st.st_ctime < st.st_atime) return 7;
 
-#undef $ac_func
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
+#ifdef __linux__
+/* The Linux kernel added futimens in 2.6.22, but has bugs with UTIME_OMIT
+   in several file systems as recently as 2.6.32.  Always replace futimens
+   to support older kernels.  */
 choke me
 #endif
 
 int
 main ()
 {
-return $ac_func ();
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -26214,75 +27559,62 @@ $as_echo "$ac_try_echo") >&5
   (exit $ac_status); } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+       } && test -s conftest.$ac_objext; then
+  gl_cv_func_futimens_works=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
+       gl_cv_func_futimens_works="needs runtime check"
 fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_futimens_works=no
+fi
 rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
+
+      rm -f conftest.file
 fi
-done
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_futimens_works" >&5
+$as_echo "$gl_cv_func_futimens_works" >&6; }
+    if test "$gl_cv_func_futimens_works" != yes; then
+      REPLACE_FUTIMENS=1
 
 
-    case "$host_os" in
-      mingw*)
-        # Yes, we know mingw lacks ftruncate.
-        ;;
-      *)
-        # If someone lacks ftruncate, make configure fail, and request
-        # a bug report to inform us about it.
-        if test x"$SKIP_FTRUNCATE_CHECK" != xyes; then
-          { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: Your system lacks the ftruncate function.
-              Please report this, along with the output of \"uname -a\", to the
-              bug-coreutils@gnu.org mailing list.  To continue past this point,
-              rerun configure with SKIP_FTRUNCATE_CHECK=yes.
-              E.g., ./configure SKIP_FTRUNCATE_CHECK=yes
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: Your system lacks the ftruncate function.
-              Please report this, along with the output of \"uname -a\", to the
-              bug-coreutils@gnu.org mailing list.  To continue past this point,
-              rerun configure with SKIP_FTRUNCATE_CHECK=yes.
-              E.g., ./configure SKIP_FTRUNCATE_CHECK=yes
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-        fi
-    esac
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS futimens.$ac_objext"
+
+    fi
   fi
 
 
 
-  GNULIB_FTRUNCATE=1
+
+  GNULIB_FUTIMENS=1
+
 
 
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_FTRUNCATE 1
+#define GNULIB_TEST_FUTIMENS 1
 _ACEOF
 
 
 
+  # Code from module getcwd:
 
 
 
@@ -26596,468 +27928,44 @@ $as_echo "$ac_try_echo") >&5
         test "$cross_compiling" = yes ||
         $as_test_x conftest$ac_exeext
        }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  { $as_echo "$as_me:$LINENO: checking whether getcwd aborts when 4k < cwd_length < 16k" >&5
-$as_echo_n "checking whether getcwd aborts when 4k < cwd_length < 16k... " >&6; }
-if test "${gl_cv_func_getcwd_abort_bug+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  # Remove any remnants of a previous test.
-     rm -rf confdir-14B---
-     # Arrange for deletion of the temporary directory this test creates.
-     ac_clean_files="$ac_clean_files confdir-14B---"
-     if test "$cross_compiling" = yes; then
-  gl_cv_func_getcwd_abort_bug=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <limits.h>
-#include <string.h>
-#include <sys/stat.h>
-
-/* Don't get link errors because mkdir is redefined to rpl_mkdir.  */
-#undef mkdir
-
-#ifndef S_IRWXU
-# define S_IRWXU 0700
-#endif
-
-/* FIXME: skip the run-test altogether on systems without getpagesize.  */
-#if ! HAVE_GETPAGESIZE
-# define getpagesize() 0
-#endif
-
-/* This size is chosen to be larger than PATH_MAX (4k), yet smaller than
-   the 16kB pagesize on ia64 linux.  Those conditions make the code below
-   trigger a bug in glibc's getcwd implementation before 2.4.90-10.  */
-#define TARGET_LEN (5 * 1024)
-
-int
-main ()
-{
-  char const *dir_name = "confdir-14B---";
-  char *cwd;
-  size_t initial_cwd_len;
-  int fail = 0;
-  size_t desired_depth;
-  size_t d;
-
-  /* The bug is triggered when PATH_MAX < getpagesize (), so skip
-     this relative expensive and invasive test if that's not true.  */
-  if (getpagesize () <= PATH_MAX)
-    return 0;
-
-  cwd = getcwd (NULL, 0);
-  if (cwd == NULL)
-    return 0;
-
-  initial_cwd_len = strlen (cwd);
-  free (cwd);
-  desired_depth = ((TARGET_LEN - 1 - initial_cwd_len)
-                   / (1 + strlen (dir_name)));
-  for (d = 0; d < desired_depth; d++)
-    {
-      if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0)
-        {
-          fail = 3; /* Unable to construct deep hierarchy.  */
-          break;
-        }
-    }
-
-  /* If libc has the bug in question, this invocation of getcwd
-     results in a failed assertion.  */
-  cwd = getcwd (NULL, 0);
-  if (cwd == NULL)
-    fail = 4; /* getcwd failed.  This is ok, and expected.  */
-  free (cwd);
-
-  /* Call rmdir first, in case the above chdir failed.  */
-  rmdir (dir_name);
-  while (0 < d--)
-    {
-      if (chdir ("..") < 0)
-        break;
-      rmdir (dir_name);
-    }
-
-  return 0;
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  gl_cv_func_getcwd_abort_bug=no
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-gl_cv_func_getcwd_abort_bug=yes
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getcwd_abort_bug" >&5
-$as_echo "$gl_cv_func_getcwd_abort_bug" >&6; }
-  if test $gl_cv_func_getcwd_abort_bug = yes; then
-  gl_abort_bug=yes
-fi
-
-;;
-  esac
-
-  case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in
-  *yes,yes,no) ;;
-  *)
-    REPLACE_GETCWD=1
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS getcwd.$ac_objext"
-
-
-
-
-  :
-;;
-  esac
-
-
-
-  GNULIB_GETCWD=1
-
-
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETCWD 1
-_ACEOF
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5
-$as_echo_n "checking for struct tm.tm_zone... " >&6; }
-if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_cv_struct_tm>
-
-
-int
-main ()
-{
-static struct tm ac_aggr;
-if (ac_aggr.tm_zone)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_member_struct_tm_tm_zone=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_cv_struct_tm>
-
-
-int
-main ()
-{
-static struct tm ac_aggr;
-if (sizeof ac_aggr.tm_zone)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_member_struct_tm_tm_zone=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_member_struct_tm_tm_zone=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5
-$as_echo "$ac_cv_member_struct_tm_tm_zone" >&6; }
-if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM_TM_ZONE 1
-_ACEOF
-
-
-fi
-
-if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TM_ZONE 1
-_ACEOF
-
-else
-  { $as_echo "$as_me:$LINENO: checking whether tzname is declared" >&5
-$as_echo_n "checking whether tzname is declared... " >&6; }
-if test "${ac_cv_have_decl_tzname+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <time.h>
-
-int
-main ()
-{
-#ifndef tzname
-  (void) tzname;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_decl_tzname=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_have_decl_tzname=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5
-$as_echo "$ac_cv_have_decl_tzname" >&6; }
-if test "x$ac_cv_have_decl_tzname" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TZNAME 1
-_ACEOF
-
-
-else
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TZNAME 0
-_ACEOF
-
-
-fi
-
-
-  { $as_echo "$as_me:$LINENO: checking for tzname" >&5
-$as_echo_n "checking for tzname... " >&6; }
-if test "${ac_cv_var_tzname+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <time.h>
-#if !HAVE_DECL_TZNAME
-extern char *tzname[];
-#endif
-
-int
-main ()
-{
-return tzname[0][0];
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_var_tzname=yes
+  eval "$as_ac_var=yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_var_tzname=no
+       eval "$as_ac_var=no"
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5
-$as_echo "$ac_cv_var_tzname" >&6; }
-  if test $ac_cv_var_tzname = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TZNAME 1
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
-  fi
 fi
+done
 
-
-
+  { $as_echo "$as_me:$LINENO: checking whether getcwd aborts when 4k < cwd_length < 16k" >&5
+$as_echo_n "checking whether getcwd aborts when 4k < cwd_length < 16k... " >&6; }
+if test "${gl_cv_func_getcwd_abort_bug+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # Remove any remnants of a previous test.
+     rm -rf confdir-14B---
+     # Arrange for deletion of the temporary directory this test creates.
+     ac_clean_files="$ac_clean_files confdir-14B---"
+     if test "$cross_compiling" = yes; then
+  gl_cv_func_getcwd_abort_bug=yes
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -27065,52 +27973,166 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-#include <time.h> /* for time_t */
-#include <limits.h> /* for CHAR_BIT, LONG_MIN, LONG_MAX */
-#define TYPE_MINIMUM(t) \
-  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
-#define TYPE_MAXIMUM(t) \
-  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
-typedef int verify_min[2 * (LONG_MIN <= TYPE_MINIMUM (time_t)) - 1];
-typedef int verify_max[2 * (TYPE_MAXIMUM (time_t) <= LONG_MAX) - 1];
+#include <stdlib.h>
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+
+/* Don't get link errors because mkdir is redefined to rpl_mkdir.  */
+#undef mkdir
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* FIXME: skip the run-test altogether on systems without getpagesize.  */
+#if ! HAVE_GETPAGESIZE
+# define getpagesize() 0
+#endif
+
+/* This size is chosen to be larger than PATH_MAX (4k), yet smaller than
+   the 16kB pagesize on ia64 linux.  Those conditions make the code below
+   trigger a bug in glibc's getcwd implementation before 2.4.90-10.  */
+#define TARGET_LEN (5 * 1024)
+
+int
+main ()
+{
+  char const *dir_name = "confdir-14B---";
+  char *cwd;
+  size_t initial_cwd_len;
+  int fail = 0;
+  size_t desired_depth;
+  size_t d;
+
+  /* The bug is triggered when PATH_MAX < getpagesize (), so skip
+     this relative expensive and invasive test if that's not true.  */
+  if (getpagesize () <= PATH_MAX)
+    return 0;
+
+  cwd = getcwd (NULL, 0);
+  if (cwd == NULL)
+    return 0;
+
+  initial_cwd_len = strlen (cwd);
+  free (cwd);
+  desired_depth = ((TARGET_LEN - 1 - initial_cwd_len)
+                   / (1 + strlen (dir_name)));
+  for (d = 0; d < desired_depth; d++)
+    {
+      if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0)
+        {
+          fail = 3; /* Unable to construct deep hierarchy.  */
+          break;
+        }
+    }
+
+  /* If libc has the bug in question, this invocation of getcwd
+     results in a failed assertion.  */
+  cwd = getcwd (NULL, 0);
+  if (cwd == NULL)
+    fail = 4; /* getcwd failed.  This is ok, and expected.  */
+  free (cwd);
+
+  /* Call rmdir first, in case the above chdir failed.  */
+  rmdir (dir_name);
+  while (0 < d--)
+    {
+      if (chdir ("..") < 0)
+        break;
+      rmdir (dir_name);
+    }
+
+  return 0;
+}
 
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_T_FITS_IN_LONG_INT 1
-_ACEOF
-
-
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_getcwd_abort_bug=no
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
+( exit $ac_status )
+gl_cv_func_getcwd_abort_bug=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
 
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getcwd_abort_bug" >&5
+$as_echo "$gl_cv_func_getcwd_abort_bug" >&6; }
+  if test $gl_cv_func_getcwd_abort_bug = yes; then
+  gl_abort_bug=yes
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+;;
+  esac
+
+  case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in
+  *yes,yes,no) ;;
+  *)
+    REPLACE_GETCWD=1
+
+
+
+
 
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS getcwd.$ac_objext"
+
+
+
+
+  :
+;;
+  esac
+
+
+
+
+  GNULIB_GETCWD=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_GETCWD 1
+_ACEOF
+
+
+
+  # Code from module getdelim:
+
+
+
 
 
 
 
 
 
+
   GNULIB_GETDELIM=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETDELIM 1
+#define GNULIB_TEST_GETDELIM 1
 _ACEOF
 
 
 
+  # Code from module getdtablesize:
 
 
 
@@ -27464,15 +28489,18 @@ _ACEOF
 
 
 
+
   GNULIB_GETDTABLESIZE=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETDTABLESIZE 1
+#define GNULIB_TEST_GETDTABLESIZE 1
 _ACEOF
 
 
 
+  # Code from module getline:
 
 
 
 
 
 
+
   GNULIB_GETLINE=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETLINE 1
+#define GNULIB_TEST_GETLINE 1
 _ACEOF
 
 
 
+  # Code from module getopt-gnu:
 
 
 
@@ -28046,10 +29077,11 @@ _ACEOF
 
 
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETOPT_GNU 1
+#define GNULIB_TEST_GETOPT_GNU 1
 _ACEOF
 
 
+  # Code from module getopt-posix:
 
 
 
@@ -28100,6 +29132,7 @@ fi
 
 
 
+  # Code from module getpagesize:
 
 
 
@@ -28530,21 +29563,85 @@ done
 
       ;;
   esac
+      { $as_echo "$as_me:$LINENO: checking whether getpagesize is declared" >&5
+$as_echo_n "checking whether getpagesize is declared... " >&6; }
+if test "${ac_cv_have_decl_getpagesize+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getpagesize
+  (void) getpagesize;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_getpagesize=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_getpagesize=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getpagesize" >&5
+$as_echo "$ac_cv_have_decl_getpagesize" >&6; }
+if test "x$ac_cv_have_decl_getpagesize" = x""yes; then
+  :
+else
+  HAVE_DECL_GETPAGESIZE=0
+fi
+
+
 
 
 
   GNULIB_GETPAGESIZE=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETPAGESIZE 1
+#define GNULIB_TEST_GETPAGESIZE 1
 _ACEOF
 
 
 
+  # Code from module gettext:
 
+  # Code from module gettext-h:
 
 
+  # Code from module gettime:
 
 
 
@@ -28568,6 +29665,7 @@ _ACEOF
 
 
 
+  # Code from module gettimeofday:
 
 
 
@@ -29594,15 +30692,19 @@ _ACEOF
 
 
 
+
   GNULIB_GETTIMEOFDAY=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_GETTIMEOFDAY 1
+#define GNULIB_TEST_GETTIMEOFDAY 1
 _ACEOF
 
 
 
+  # Code from module gitlog-to-changelog:
+  # Code from module hash:
 
 
 
@@ -29617,6 +30719,8 @@ _ACEOF
 
 
 
+  # Code from module havelib:
+  # Code from module human:
 
 
 
@@ -29631,6 +30735,8 @@ _ACEOF
 
     :
 
+  # Code from module include_next:
+  # Code from module inline:
 
 
   { $as_echo "$as_me:$LINENO: checking whether the compiler generally respects inline" >&5
@@ -29677,68 +30783,29 @@ $as_echo "$ac_try_echo") >&5
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   gl_cv_c_inline_effective=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       gl_cv_c_inline_effective=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-     fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_c_inline_effective" >&5
-$as_echo "$gl_cv_c_inline_effective" >&6; }
-  if test $gl_cv_c_inline_effective = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INLINE 1
-_ACEOF
-
-  fi
-
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS imaxtostr.$ac_objext"
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS offtostr.$ac_objext"
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS umaxtostr.$ac_objext"
-
-
-
-
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       gl_cv_c_inline_effective=no
+fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
 
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_c_inline_effective" >&5
+$as_echo "$gl_cv_c_inline_effective" >&6; }
+  if test $gl_cv_c_inline_effective = yes; then
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INLINE 1
+_ACEOF
 
-  gl_LIBOBJS="$gl_LIBOBJS uinttostr.$ac_objext"
+  fi
 
+  # Code from module intprops:
+  # Code from module inttostr:
 
 
 
@@ -29749,6 +30816,7 @@ _ACEOF
   :
   :
 
+  # Code from module inttypes:
 
 
 
@@ -30149,30 +31217,532 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes
+  gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5
+$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; }
+  if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then
+    INT32_MAX_LT_INTMAX_MAX=1;
+  else
+    INT32_MAX_LT_INTMAX_MAX=0;
+  fi
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+  { $as_echo "$as_me:$LINENO: checking whether INT64_MAX == LONG_MAX" >&5
+$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; }
+if test "${gl_cv_test_INT64_MAX_EQ_LONG_MAX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined INT64_MAX
+             #define CONDITION (INT64_MAX == LONG_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (long long int) == sizeof (long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_test_INT64_MAX_EQ_LONG_MAX=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5
+$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; }
+  if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then
+    INT64_MAX_EQ_LONG_MAX=1;
+  else
+    INT64_MAX_EQ_LONG_MAX=0;
+  fi
+
+
+  else
+    INT64_MAX_EQ_LONG_MAX=-1
+  fi
+
+  { $as_echo "$as_me:$LINENO: checking whether UINT32_MAX < UINTMAX_MAX" >&5
+$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; }
+if test "${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined UINT32_MAX && defined UINTMAX_MAX
+             #define CONDITION (UINT32_MAX < UINTMAX_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5
+$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; }
+  if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then
+    UINT32_MAX_LT_UINTMAX_MAX=1;
+  else
+    UINT32_MAX_LT_UINTMAX_MAX=0;
+  fi
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+  { $as_echo "$as_me:$LINENO: checking whether UINT64_MAX == ULONG_MAX" >&5
+$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; }
+if test "${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Work also in C++ mode.  */
+            #define __STDC_LIMIT_MACROS 1
+
+            /* Work if build is not clean.  */
+            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+            #include <limits.h>
+            #if HAVE_STDINT_H
+             #include <stdint.h>
+            #endif
+
+            #if defined UINT64_MAX
+             #define CONDITION (UINT64_MAX == ULONG_MAX)
+            #elif HAVE_LONG_LONG_INT
+             #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
+            #else
+             #define CONDITION 0
+            #endif
+            int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5
+$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
+  if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then
+    UINT64_MAX_EQ_ULONG_MAX=1;
+  else
+    UINT64_MAX_EQ_ULONG_MAX=0;
+  fi
+
+
+  else
+    UINT64_MAX_EQ_ULONG_MAX=-1
+  fi
+
+
+
+
+
+
+  for gl_func in imaxabs imaxdiv strtoimax strtoumax; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <inttypes.h>
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_gl_Symbol=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_gl_Symbol=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     as_val=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
+
+      done
+
+
+  # Code from module langinfo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_langinfo_h='<'langinfo.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <langinfo.h>" >&5
+$as_echo_n "checking absolute name of <langinfo.h>... " >&6; }
+if test "${gl_cv_next_langinfo_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+          if test $ac_cv_header_langinfo_h = yes; then
+            cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <langinfo.h>
+
+_ACEOF
+                                                                                                case "$host_os" in
+              aix*) gl_absname_cpp="$ac_cpp -C" ;;
+              *)    gl_absname_cpp="$ac_cpp" ;;
+            esac
+                                                gl_cv_next_langinfo_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+               sed -n '\#/langinfo.h#{
+                 s#.*"\(.*/langinfo.h\)".*#\1#
+                 s#^/[^/]#//&#
+                 p
+                 q
+               }'`'"'
+          else
+            gl_cv_next_langinfo_h='<'langinfo.h'>'
+          fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_langinfo_h" >&5
+$as_echo "$gl_cv_next_langinfo_h" >&6; }
+     fi
+     NEXT_LANGINFO_H=$gl_cv_next_langinfo_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'langinfo.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_langinfo_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H=$gl_next_as_first_directive
+
+
+
+
+    HAVE_LANGINFO_CODESET=0
+  HAVE_LANGINFO_T_FMT_AMPM=0
+  HAVE_LANGINFO_ERA=0
+  HAVE_LANGINFO_YESEXPR=0
+
+
+
+
+
+
+  if test $ac_cv_header_langinfo_h = yes; then
+    HAVE_LANGINFO_H=1
+            { $as_echo "$as_me:$LINENO: checking whether langinfo.h defines CODESET" >&5
+$as_echo_n "checking whether langinfo.h defines CODESET... " >&6; }
+if test "${gl_cv_header_langinfo_codeset+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <langinfo.h>
+int a = CODESET;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_header_langinfo_codeset=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_header_langinfo_codeset=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_langinfo_codeset" >&5
+$as_echo "$gl_cv_header_langinfo_codeset" >&6; }
+    if test $gl_cv_header_langinfo_codeset = yes; then
+      HAVE_LANGINFO_CODESET=1
+    fi
+    { $as_echo "$as_me:$LINENO: checking whether langinfo.h defines T_FMT_AMPM" >&5
+$as_echo_n "checking whether langinfo.h defines T_FMT_AMPM... " >&6; }
+if test "${gl_cv_header_langinfo_t_fmt_ampm+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <langinfo.h>
+int a = T_FMT_AMPM;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_header_langinfo_t_fmt_ampm=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no
+       gl_cv_header_langinfo_t_fmt_ampm=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5
-$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; }
-  if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then
-    INT32_MAX_LT_INTMAX_MAX=1;
-  else
-    INT32_MAX_LT_INTMAX_MAX=0;
-  fi
-
-
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
 
-  { $as_echo "$as_me:$LINENO: checking whether INT64_MAX == LONG_MAX" >&5
-$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; }
-if test "${gl_cv_test_INT64_MAX_EQ_LONG_MAX+set}" = set; then
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_langinfo_t_fmt_ampm" >&5
+$as_echo "$gl_cv_header_langinfo_t_fmt_ampm" >&6; }
+    if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then
+      HAVE_LANGINFO_T_FMT_AMPM=1
+    fi
+    { $as_echo "$as_me:$LINENO: checking whether langinfo.h defines ERA" >&5
+$as_echo_n "checking whether langinfo.h defines ERA... " >&6; }
+if test "${gl_cv_header_langinfo_era+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -30181,25 +31751,9 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
+#include <langinfo.h>
+int a = ERA;
 
-            #if defined INT64_MAX
-             #define CONDITION (INT64_MAX == LONG_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (long long int) == sizeof (long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
 int
 main ()
 {
@@ -30226,32 +31780,25 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes
+  gl_cv_header_langinfo_era=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_test_INT64_MAX_EQ_LONG_MAX=no
+       gl_cv_header_langinfo_era=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5
-$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; }
-  if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then
-    INT64_MAX_EQ_LONG_MAX=1;
-  else
-    INT64_MAX_EQ_LONG_MAX=0;
-  fi
 
-
-  else
-    INT64_MAX_EQ_LONG_MAX=-1
-  fi
-
-  { $as_echo "$as_me:$LINENO: checking whether UINT32_MAX < UINTMAX_MAX" >&5
-$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; }
-if test "${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+set}" = set; then
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_langinfo_era" >&5
+$as_echo "$gl_cv_header_langinfo_era" >&6; }
+    if test $gl_cv_header_langinfo_era = yes; then
+      HAVE_LANGINFO_ERA=1
+    fi
+    { $as_echo "$as_me:$LINENO: checking whether langinfo.h defines YESEXPR" >&5
+$as_echo_n "checking whether langinfo.h defines YESEXPR... " >&6; }
+if test "${gl_cv_header_langinfo_yesexpr+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -30260,25 +31807,9 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
+#include <langinfo.h>
+int a = YESEXPR;
 
-            #if defined UINT32_MAX && defined UINTMAX_MAX
-             #define CONDITION (UINT32_MAX < UINTMAX_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
 int
 main ()
 {
@@ -30305,30 +31836,38 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes
+  gl_cv_header_langinfo_yesexpr=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no
+       gl_cv_header_langinfo_yesexpr=no
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5
-$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; }
-  if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then
-    UINT32_MAX_LT_UINTMAX_MAX=1;
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_langinfo_yesexpr" >&5
+$as_echo "$gl_cv_header_langinfo_yesexpr" >&6; }
+    if test $gl_cv_header_langinfo_yesexpr = yes; then
+      HAVE_LANGINFO_YESEXPR=1
+    fi
   else
-    UINT32_MAX_LT_UINTMAX_MAX=0;
+    HAVE_LANGINFO_H=0
   fi
 
 
-  if test $APPLE_UNIVERSAL_BUILD = 0; then
 
-  { $as_echo "$as_me:$LINENO: checking whether UINT64_MAX == ULONG_MAX" >&5
-$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; }
-if test "${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+set}" = set; then
+
+
+
+
+
+  for gl_func in nl_langinfo; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -30337,29 +31876,13 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Work also in C++ mode.  */
-            #define __STDC_LIMIT_MACROS 1
-
-            /* Work if build is not clean.  */
-            #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-
-            #include <limits.h>
-            #if HAVE_STDINT_H
-             #include <stdint.h>
-            #endif
+#include <langinfo.h>
 
-            #if defined UINT64_MAX
-             #define CONDITION (UINT64_MAX == ULONG_MAX)
-            #elif HAVE_LONG_LONG_INT
-             #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
-            #else
-             #define CONDITION 0
-            #endif
-            int test[CONDITION ? 1 : -1];
 int
 main ()
 {
-
+#undef $gl_func
+  (void) $gl_func;
   ;
   return 0;
 }
@@ -30382,39 +31905,58 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes
+  eval "$as_gl_Symbol=yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no
+       eval "$as_gl_Symbol=no"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5
-$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
-  if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then
-    UINT64_MAX_EQ_ULONG_MAX=1;
-  else
-    UINT64_MAX_EQ_ULONG_MAX=0;
-  fi
+ac_res=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     as_val=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
 
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
 
-  else
-    UINT64_MAX_EQ_ULONG_MAX=-1
-  fi
+      done
 
 
+  # Code from module lchown:
 
 
 
 
-  for gl_func in imaxabs imaxdiv strtoimax strtoumax; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in lchown
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -30423,26 +31965,54 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <inttypes.h>
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
 
 int
 main ()
 {
-#undef $gl_func
-  (void) $gl_func;
+return $ac_func ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -30451,35 +32021,45 @@ $as_echo "$ac_try_echo") >&5
   (exit $ac_status); } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_gl_Symbol=yes"
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_gl_Symbol=no"
+       eval "$as_ac_var=no"
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_gl_Symbol'}
+ac_res=`eval 'as_val=${'$as_ac_var'}
                 $as_echo "$as_val"'`
               { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-     as_val=`eval 'as_val=${'$as_gl_Symbol'}
+as_val=`eval 'as_val=${'$as_ac_var'}
                 $as_echo "$as_val"'`
    if test "x$as_val" = x""yes; then
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
-                     eval ac_cv_have_decl_$gl_func=yes
-fi
+else
 
-      done
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
 
+fi
+done
 
 
+  if test $ac_cv_func_lchown = no; then
+    HAVE_LCHOWN=0
+  elif test "$gl_cv_func_chown_slash_works" != yes \
+      || test "$gl_cv_func_chown_ctime_works" != yes; then
 
 
 
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS lchown.$ac_objext"
 
+    REPLACE_LCHOWN=1
+  fi
 
 
 
 
+  GNULIB_LCHOWN=1
 
 
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_langinfo_h='<'langinfo.h'>'
-     else
-       { $as_echo "$as_me:$LINENO: checking absolute name of <langinfo.h>" >&5
-$as_echo_n "checking absolute name of <langinfo.h>... " >&6; }
-if test "${gl_cv_next_langinfo_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
 
-          if test $ac_cv_header_langinfo_h = yes; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_LCHOWN 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <langinfo.h>
 
-_ACEOF
-                                                                                                case "$host_os" in
-              aix*) gl_absname_cpp="$ac_cpp -C" ;;
-              *)    gl_absname_cpp="$ac_cpp" ;;
-            esac
-                                                gl_cv_next_langinfo_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-               sed -n '\#/langinfo.h#{
-                 s#.*"\(.*/langinfo.h\)".*#\1#
-                 s#^/[^/]#//&#
-                 p
-                 q
-               }'`'"'
-          else
-            gl_cv_next_langinfo_h='<'langinfo.h'>'
-          fi
 
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_langinfo_h" >&5
-$as_echo "$gl_cv_next_langinfo_h" >&6; }
-     fi
-     NEXT_LANGINFO_H=$gl_cv_next_langinfo_h
 
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'langinfo.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_langinfo_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H=$gl_next_as_first_directive
+  # Code from module link:
 
 
 
 
-    HAVE_LANGINFO_CODESET=0
-  HAVE_LANGINFO_ERA=0
 
 
 
 
+  if test $ac_cv_func_link = no; then
+    HAVE_LINK=0
 
 
-  if test $ac_cv_header_langinfo_h = yes; then
-    HAVE_LANGINFO_H=1
-            { $as_echo "$as_me:$LINENO: checking whether langinfo.h defines CODESET" >&5
-$as_echo_n "checking whether langinfo.h defines CODESET... " >&6; }
-if test "${gl_cv_header_langinfo_codeset+set}" = set; then
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS link.$ac_objext"
+
+  else
+    { $as_echo "$as_me:$LINENO: checking whether link handles trailing slash correctly" >&5
+$as_echo_n "checking whether link handles trailing slash correctly... " >&6; }
+if test "${gl_cv_func_link_works+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  touch conftest.a
+       # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.a conftest.lnk
+       fi
+       if test "$cross_compiling" = yes; then
+  gl_cv_func_link_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -30568,69 +32127,275 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <langinfo.h>
-int a = CODESET;
+#include <unistd.h>
 
 int
 main ()
 {
+if (!link ("conftest.a", "conftest.b/")) return 1;
+#if HAVE_LSTAT
+      if (!link ("conftest.lnk/", "conftest.b")) return 2;
+#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  gl_cv_header_langinfo_codeset=yes
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_link_works=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_header_langinfo_codeset=no
+( exit $ac_status )
+gl_cv_func_link_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+       rm -f conftest.a conftest.b conftest.lnk
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_langinfo_codeset" >&5
-$as_echo "$gl_cv_header_langinfo_codeset" >&6; }
-    if test $gl_cv_header_langinfo_codeset = yes; then
-      HAVE_LANGINFO_CODESET=1
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_link_works" >&5
+$as_echo "$gl_cv_func_link_works" >&6; }
+    if test "$gl_cv_func_link_works" != yes; then
+      REPLACE_LINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS link.$ac_objext"
+
     fi
-    { $as_echo "$as_me:$LINENO: checking whether langinfo.h defines ERA" >&5
-$as_echo_n "checking whether langinfo.h defines ERA... " >&6; }
-if test "${gl_cv_header_langinfo_era+set}" = set; then
+  fi
+
+
+
+
+  GNULIB_LINK=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_LINK 1
+_ACEOF
+
+
+
+  # Code from module link-follow:
+
+
+
+
+
+
+          gl_link_follows_symlinks=0 # assume GNU behavior
+  if test $ac_cv_func_readlink = yes; then
+    { $as_echo "$as_me:$LINENO: checking whether link(2) dereferences a symlink" >&5
+$as_echo_n "checking whether link(2) dereferences a symlink... " >&6; }
+if test "${gl_cv_func_link_follows_symlink+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
+
+      # Create a regular file.
+      echo > conftest.file
+      if test "$cross_compiling" = yes; then
+          gl_cv_func_link_follows_symlink=unknown
+else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <langinfo.h>
-int a = ERA;
+
+#       include <sys/types.h>
+#       include <sys/stat.h>
+#       include <unistd.h>
+#       include <stdlib.h>
+
+#       define SAME_INODE(Stat_buf_1, Stat_buf_2) \
+          ((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
+           && (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
+
+        int
+        main ()
+        {
+          const char *file = "conftest.file";
+          const char *sym = "conftest.sym";
+          const char *hard = "conftest.hard";
+          struct stat sb_file, sb_hard;
+
+          /* Create a symlink to the regular file. */
+          if (symlink (file, sym))
+            return 2;
+
+          /* Create a hard link to that symlink.  */
+          if (link (sym, hard))
+            return 3;
+
+          if (lstat (hard, &sb_hard))
+            return 4;
+          if (lstat (file, &sb_file))
+            return 5;
+
+          /* If the dev/inode of hard and file are the same, then
+             the link call followed the symlink.  */
+          return SAME_INODE (sb_hard, sb_file) ? 1 : 0;
+        }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_link_follows_symlink=no
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+        gl_cv_func_link_follows_symlink=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      rm -f conftest.file conftest.sym conftest.hard
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_link_follows_symlink" >&5
+$as_echo "$gl_cv_func_link_follows_symlink" >&6; }
+    case $gl_cv_func_link_follows_symlink in
+      yes) gl_link_follows_symlinks=1 ;;
+      no) ;; # already defaulted to 0
+      *) gl_link_follows_symlinks=-1 ;;
+    esac
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define LINK_FOLLOWS_SYMLINKS $gl_link_follows_symlinks
+_ACEOF
+
+
+  # Code from module linkat:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_linkat = no; then
+    HAVE_LINKAT=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS linkat.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS at-func2.$ac_objext"
+
+  else
+    { $as_echo "$as_me:$LINENO: checking whether linkat(,AT_SYMLINK_FOLLOW) works" >&5
+$as_echo_n "checking whether linkat(,AT_SYMLINK_FOLLOW) works... " >&6; }
+if test "${gl_cv_func_linkat_follow+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  rm -rf conftest.f1 conftest.f2
+       touch conftest.f1
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#include <unistd.h>
+#ifdef __linux__
+/* Linux added linkat in 2.6.16, but did not add AT_SYMLINK_FOLLOW
+   until 2.6.18.  Always replace linkat to support older kernels.  */
+choke me
+#endif
 
 int
 main ()
 {
-
+return linkat (AT_FDCWD, "conftest.f1", AT_FDCWD, "conftest.f2",
+                    AT_SYMLINK_FOLLOW);
   ;
   return 0;
 }
@@ -30653,37 +32418,32 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_header_langinfo_era=yes
+  gl_cv_func_linkat_follow=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_header_langinfo_era=no
+       gl_cv_func_linkat_follow="need runtime check"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+       rm -rf conftest.f1 conftest.f2
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_langinfo_era" >&5
-$as_echo "$gl_cv_header_langinfo_era" >&6; }
-    if test $gl_cv_header_langinfo_era = yes; then
-      HAVE_LANGINFO_ERA=1
-    fi
-  else
-    HAVE_LANGINFO_H=0
-  fi
-
-
-
-
-
-
-  for gl_func in nl_langinfo; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_linkat_follow" >&5
+$as_echo "$gl_cv_func_linkat_follow" >&6; }
+    { $as_echo "$as_me:$LINENO: checking whether linkat handles trailing slash correctly" >&5
+$as_echo_n "checking whether linkat handles trailing slash correctly... " >&6; }
+if test "${gl_cv_func_linkat_slash+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  rm -rf conftest.a conftest.b conftest.c conftest.d
+       if test "$cross_compiling" = yes; then
+  # Guess yes on glibc systems, no otherwise.
+          case "$host_os" in
+            *-gnu*) gl_cv_func_linkat_slash="guessing yes";;
+            *)      gl_cv_func_linkat_slash="guessing no";;
+          esac
+
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -30691,213 +32451,122 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <langinfo.h>
+#include <unistd.h>
+              #include <fcntl.h>
+              #include <errno.h>
+              #include <stdio.h>
 
 int
 main ()
 {
-#undef $gl_func
-  (void) $gl_func;
+int fd;
+              int err;
+              int ret;
+              /* Create a regular file.  */
+              fd = open ("conftest.a", O_CREAT | O_EXCL | O_WRONLY, 0600);
+              if (fd < 0)
+                return 1;
+              if (write (fd, "hello", 5) < 5)
+                return 2;
+              if (close (fd) < 0)
+                return 3;
+              /* Test whether hard links are supported on the current
+                 device.  */
+              if (linkat (AT_FDCWD, "conftest.a", AT_FDCWD, "conftest.b",
+                          AT_SYMLINK_FOLLOW) < 0)
+                return 0;
+              /* Test whether a trailing "/" is treated like "/.".  */
+              if (linkat (AT_FDCWD, "conftest.a/", AT_FDCWD, "conftest.c",
+                          AT_SYMLINK_FOLLOW) == 0)
+                return 4;
+              if (linkat (AT_FDCWD, "conftest.a", AT_FDCWD, "conftest.d/",
+                          AT_SYMLINK_FOLLOW) == 0)
+                return 5;
+              return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_gl_Symbol=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_gl_Symbol=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_gl_Symbol'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-     as_val=`eval 'as_val=${'$as_gl_Symbol'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
-_ACEOF
-
-                     eval ac_cv_have_decl_$gl_func=yes
-fi
-
-      done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in lchown
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_try") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+  (exit $ac_status); }; }; then
+  gl_cv_func_linkat_slash=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
+( exit $ac_status )
+gl_cv_func_linkat_slash=no
 fi
-
 rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
-else
-
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
 
+       rm -rf conftest.a conftest.b conftest.c conftest.d
 fi
-done
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_linkat_slash" >&5
+$as_echo "$gl_cv_func_linkat_slash" >&6; }
+    case "$gl_cv_func_linkat_slash" in
+      *yes) gl_linkat_slash_bug=0 ;;
+      *)    gl_linkat_slash_bug=1 ;;
+    esac
+    if test "$gl_cv_func_linkat_follow" != yes \
+       || test $gl_linkat_slash_bug = 1; then
+      REPLACE_LINKAT=1
 
 
-  if test $ac_cv_func_lchown = no; then
-    HAVE_LCHOWN=0
-  elif test "$gl_cv_func_chown_slash_works" != yes \
-      || test "$gl_cv_func_chown_ctime_works" != yes; then
 
 
 
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS linkat.$ac_objext"
 
 
-  gl_LIBOBJS="$gl_LIBOBJS lchown.$ac_objext"
+cat >>confdefs.h <<_ACEOF
+#define LINKAT_TRAILING_SLASH_BUG $gl_linkat_slash_bug
+_ACEOF
 
-    REPLACE_LCHOWN=1
+    fi
   fi
 
 
 
-  GNULIB_LCHOWN=1
+
+  GNULIB_LINKAT=1
+
 
 
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_LCHOWN 1
+#define GNULIB_TEST_LINKAT 1
 _ACEOF
 
 
 
+  # Code from module localcharset:
 
 
 
@@ -30911,6 +32580,7 @@ _ACEOF
 
   LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
 
+  # Code from module lseek:
 
 
 
@@ -30921,14 +32591,24 @@ if test "${gl_cv_func_lseek_pipe+set}" = set; then
 else
   if test $cross_compiling = no; then
        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
 #include <sys/types.h> /* for off_t */
 #include <stdio.h> /* for SEEK_CUR */
 #include <unistd.h>
-int main ()
+int
+main ()
 {
+
   /* Exit with success only if stdin is seekable.  */
   return lseek (0, (off_t)0, SEEK_CUR) < 0;
+
+  ;
+  return 0;
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
@@ -30972,6 +32652,11 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
      else
        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
 #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__
 /* mingw and BeOS mistakenly return 0 when trying to seek on pipes.  */
@@ -31033,15 +32718,18 @@ _ACEOF
 
 
 
+
   GNULIB_LSEEK=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_LSEEK 1
+#define GNULIB_TEST_LSEEK 1
 _ACEOF
 
 
 
+  # Code from module lstat:
 
 
 
@@ -31063,15 +32751,20 @@ _ACEOF
 
 
 
+
   GNULIB_LSTAT=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_LSTAT 1
+#define GNULIB_TEST_LSTAT 1
 _ACEOF
 
 
 
+  # Code from module malloc-gnu:
+
+
 
 for ac_header in stdlib.h
 do
@@ -31293,12 +32986,12 @@ $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
 if test $ac_cv_func_malloc_0_nonnull = yes; then
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 1
+#define HAVE_MALLOC_GNU 1
 _ACEOF
 
 else
   cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 0
+#define HAVE_MALLOC_GNU 0
 _ACEOF
 
 
@@ -31309,26 +33002,28 @@ _ACEOF
 
 
 
+
   gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
 
+  REPLACE_MALLOC=1
 
-cat >>confdefs.h <<\_ACEOF
-#define malloc rpl_malloc
-_ACEOF
 
 fi
 
 
 
 
-cat >>confdefs.h <<\_ACEOF
+
+cat >>confdefs.h <<_ACEOF
 #define GNULIB_MALLOC_GNU 1
 _ACEOF
 
 
+  # Code from module malloc-posix:
+
+
 
   if test $gl_cv_func_malloc_posix = yes; then
-    HAVE_MALLOC_POSIX=1
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_MALLOC_POSIX 1
@@ -31343,9 +33038,11 @@ _ACEOF
 
 
 
+
   gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
 
-    HAVE_MALLOC_POSIX=0
+  REPLACE_MALLOC=1
+
   fi
 
 
@@ -31354,20 +33051,24 @@ _ACEOF
   GNULIB_MALLOC_POSIX=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MALLOC_POSIX 1
+#define GNULIB_TEST_MALLOC_POSIX 1
 _ACEOF
 
 
 
+  # Code from module malloca:
 
 
 
 
+  # Code from module mbchar:
 
 
 
 
+  # Code from module mbrtowc:
 
 
 
@@ -31399,10 +33100,10 @@ if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
 else
 
                   case "$host_os" in
-              # Guess no on AIX and OSF/1.
-        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
-              # Guess yes otherwise.
-        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
       esac
       if test $LOCALE_JA != none; then
         if test "$cross_compiling" = yes; then
@@ -31585,9 +33286,7 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   fi
 
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_MBRTOWC=1
-  fi
+
 
 
 
@@ -31596,8 +33295,10 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   if test $ac_cv_func_mbrtowc = no; then
     HAVE_MBRTOWC=0
-  fi
-  if test $HAVE_MBRTOWC != 0 && test $REPLACE_MBRTOWC != 1; then
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBRTOWC=1
+    else
 
 
 
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc_nul_retval" >&5
 $as_echo "$gl_cv_func_mbrtowc_nul_retval" >&6; }
 
-    case "$gl_cv_func_mbrtowc_null_arg" in
-      *yes) ;;
-      *)
+      case "$gl_cv_func_mbrtowc_null_arg" in
+        *yes) ;;
+        *)
 cat >>confdefs.h <<\_ACEOF
 #define MBRTOWC_NULL_ARG_BUG 1
 _ACEOF
 
-         REPLACE_MBRTOWC=1
-         ;;
-    esac
-    case "$gl_cv_func_mbrtowc_retval" in
-      *yes) ;;
-      *)
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_retval" in
+        *yes) ;;
+        *)
 cat >>confdefs.h <<\_ACEOF
 #define MBRTOWC_RETVAL_BUG 1
 _ACEOF
 
-         REPLACE_MBRTOWC=1
-         ;;
-    esac
-    case "$gl_cv_func_mbrtowc_nul_retval" in
-      *yes) ;;
-      *)
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_nul_retval" in
+        *yes) ;;
+        *)
 cat >>confdefs.h <<\_ACEOF
 #define MBRTOWC_NUL_RETVAL_BUG 1
 _ACEOF
 
-         REPLACE_MBRTOWC=1
-         ;;
-    esac
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+    fi
   fi
   if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
 
@@ -31932,26 +33634,32 @@ _ACEOF
 
 
 
+
   GNULIB_MBRTOWC=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MBRTOWC 1
+#define GNULIB_TEST_MBRTOWC 1
 _ACEOF
 
 
 
+  # Code from module mbscasecmp:
+
 
 
   GNULIB_MBSCASECMP=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MBSCASECMP 1
+#define GNULIB_TEST_MBSCASECMP 1
 _ACEOF
 
 
 
+  # Code from module mbsinit:
 
 
 
@@ -31983,10 +33691,10 @@ if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
 else
 
                   case "$host_os" in
-              # Guess no on AIX and OSF/1.
-        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
-              # Guess yes otherwise.
-        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
       esac
       if test $LOCALE_JA != none; then
         if test "$cross_compiling" = yes; then
@@ -32169,9 +33877,7 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   fi
 
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_MBSINIT=1
-  fi
+
 
 
 
@@ -32180,6 +33886,10 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   if test $ac_cv_func_mbsinit = no; then
     HAVE_MBSINIT=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBSINIT=1
+    fi
   fi
   if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
 
@@ -32202,15 +33912,18 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
 
 
+
   GNULIB_MBSINIT=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MBSINIT 1
+#define GNULIB_TEST_MBSINIT 1
 _ACEOF
 
 
 
+  # Code from module mbsrtowcs:
 
 
 
@@ -32242,10 +33955,10 @@ if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
 else
 
                   case "$host_os" in
-              # Guess no on AIX and OSF/1.
-        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
-              # Guess yes otherwise.
-        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
       esac
       if test $LOCALE_JA != none; then
         if test "$cross_compiling" = yes; then
@@ -32428,9 +34141,7 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   fi
 
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_MBSRTOWCS=1
-  fi
+
 
 
 
@@ -32439,8 +34150,10 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   if test $ac_cv_func_mbsrtowcs = no; then
     HAVE_MBSRTOWCS=0
-  fi
-  if test $HAVE_MBSRTOWCS != 0 && test $REPLACE_MBSRTOWCS != 1; then
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBSRTOWCS=1
+    else
 
 
 
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbsrtowcs_works" >&5
 $as_echo "$gl_cv_func_mbsrtowcs_works" >&6; }
 
-    case "$gl_cv_func_mbsrtowcs_works" in
-      *yes) ;;
-      *) REPLACE_MBSRTOWCS=1 ;;
-    esac
+      case "$gl_cv_func_mbsrtowcs_works" in
+        *yes) ;;
+        *) REPLACE_MBSRTOWCS=1 ;;
+      esac
+    fi
   fi
   if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then
 
@@ -32599,33 +34313,40 @@ $as_echo "$gl_cv_func_mbsrtowcs_works" >&6; }
 
 
 
+
   GNULIB_MBSRTOWCS=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MBSRTOWCS 1
+#define GNULIB_TEST_MBSRTOWCS 1
 _ACEOF
 
 
 
+  # Code from module mbuiter:
 
 
 
 
   :
 
+  # Code from module memchr:
+
 
 
 
   GNULIB_MEMCHR=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MEMCHR 1
+#define GNULIB_TEST_MEMCHR 1
 _ACEOF
 
 
 
+  # Code from module mempcpy:
 
 
 
@@ -32755,15 +34476,18 @@ done
 
 
 
+
   GNULIB_MEMPCPY=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MEMPCPY 1
+#define GNULIB_TEST_MEMPCPY 1
 _ACEOF
 
 
 
+  # Code from module memrchr:
 
 
 
@@ -32896,15 +34620,18 @@ done
 
 
 
+
   GNULIB_MEMRCHR=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MEMRCHR 1
+#define GNULIB_TEST_MEMRCHR 1
 _ACEOF
 
 
 
+  # Code from module mkdir:
 
 
 
@@ -33083,6 +34810,7 @@ _ACEOF
 
   fi
 
+  # Code from module mkdtemp:
 
 
 
@@ -33142,12 +34870,333 @@ choke me
 int
 main ()
 {
-return $ac_func ();
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_mkdtemp = no; then
+    HAVE_MKDTEMP=0
+    :
+
+  fi
+
+
+
+
+  GNULIB_MKDTEMP=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_MKDTEMP 1
+_ACEOF
+
+
+
+  # Code from module mkfifo:
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mkfifo = no; then
+    HAVE_MKFIFO=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mkfifo.$ac_objext"
+
+  else
+
+
+
+
+
+
+    { $as_echo "$as_me:$LINENO: checking whether mkfifo rejects trailing slashes" >&5
+$as_echo_n "checking whether mkfifo rejects trailing slashes... " >&6; }
+if test "${gl_cv_func_mkfifo_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.tmp conftest.lnk
+       fi
+       if test "$cross_compiling" = yes; then
+  gl_cv_func_mkfifo_works="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/stat.h>
+
+int
+main ()
+{
+if (!mkfifo ("conftest.tmp/", 0600)) return 1;
+#if HAVE_LSTAT
+      if (!mkfifo ("conftest.lnk/", 0600)) return 2;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mkfifo_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mkfifo_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+       rm -f conftest.tmp conftest.lnk
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mkfifo_works" >&5
+$as_echo "$gl_cv_func_mkfifo_works" >&6; }
+    if test "$gl_cv_func_mkfifo_works" != yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MKFIFO_TRAILING_SLASH_BUG 1
+_ACEOF
+
+      REPLACE_MKFIFO=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mkfifo.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_MKFIFO=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_MKFIFO 1
+_ACEOF
+
+
+
+  # Code from module mkfifoat:
+
+
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mkfifoat = no; then
+    # No known system has mkfifoat but not mknodat
+    HAVE_MKFIFOAT=0
+    HAVE_MKNODAT=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mkfifoat.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mknodat.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_MKFIFOAT=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_MKFIFOAT 1
+_ACEOF
+
+
+
+
+
+
+  GNULIB_MKNODAT=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_MKNODAT 1
+_ACEOF
+
+
+
+  # Code from module mknod:
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_mknod = no; then
+    HAVE_MKNOD=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS mknod.$ac_objext"
+
+  else
+        { $as_echo "$as_me:$LINENO: checking whether mknod can create fifo without root privileges" >&5
+$as_echo_n "checking whether mknod can create fifo without root privileges... " >&6; }
+if test "${gl_cv_func_mknod_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  gl_cv_func_mknod_works="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/stat.h>
+             #include <unistd.h>
+
+int
+main ()
+{
+/* Indeterminate for super-user, assume no.  Why are you running
+         configure as root, anyway?  */
+      if (!geteuid ()) return 99;
+      if (mknod ("conftest.fifo", S_IFIFO | 0600, 0)) return 2;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
 if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -33155,67 +35204,83 @@ case "(($ac_try" in
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_mknod_works=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
+( exit $ac_status )
+if test $? == 99 && test x"$FORCE_UNSAFE_CONFIGURE" = x; then
+            { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+          fi
+          gl_cv_func_mknod_works=no
 fi
-
 rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+
+
+       rm -f conftest.fifo
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mknod_works" >&5
+$as_echo "$gl_cv_func_mknod_works" >&6; }
+    if test "$gl_cv_func_mknod_works" != yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MKNOD_FIFO_BUG 1
 _ACEOF
 
-else
+    fi
+        if test $REPLACE_MKFIFO = 1 || test "$gl_cv_func_mknod_works" != yes; then
+      REPLACE_MKNOD=1
+
+
+
 
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
 
-fi
-done
 
 
-  if test $ac_cv_func_mkdtemp = no; then
-    HAVE_MKDTEMP=0
-    :
 
+  gl_LIBOBJS="$gl_LIBOBJS mknod.$ac_objext"
+
+    fi
   fi
 
 
 
-  GNULIB_MKDTEMP=1
+
+  GNULIB_MKNOD=1
+
 
 
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MKDTEMP 1
+#define GNULIB_TEST_MKNOD 1
 _ACEOF
 
 
 
+  # Code from module mktime:
 
 
 
 
 
 
+
   GNULIB_MKTIME=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_MKTIME 1
+#define GNULIB_TEST_MKTIME 1
 _ACEOF
 
 
 
+  # Code from module modechange:
 
 
 
@@ -33517,60 +35585,534 @@ _ACEOF
   gl_LIBOBJS="$gl_LIBOBJS modechange.$ac_objext"
 
 
+  # Code from module multiarch:
+
+  # Code from module nl_langinfo:
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_nl_langinfo = yes; then
+    if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1; then
+      :
+    else
+      REPLACE_NL_LANGINFO=1
+
+cat >>confdefs.h <<\_ACEOF
+#define REPLACE_NL_LANGINFO 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS nl_langinfo.$ac_objext"
+
+    fi
+  else
+    HAVE_NL_LANGINFO=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS nl_langinfo.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_NL_LANGINFO=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_NL_LANGINFO 1
+_ACEOF
+
+
+
+  # Code from module obstack:
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for obstacks" >&5
+$as_echo_n "checking for obstacks... " >&6; }
+if test "${ac_cv_func_obstack+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+                     #include "obstack.h"
+int
+main ()
+{
+struct obstack mem;
+                      #define obstack_chunk_alloc malloc
+                      #define obstack_chunk_free free
+                      obstack_init (&mem);
+                      obstack_free (&mem, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_obstack=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_obstack=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_obstack" >&5
+$as_echo "$ac_cv_func_obstack" >&6; }
+if test $ac_cv_func_obstack = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_OBSTACK 1
+_ACEOF
+
+else
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS obstack.$ac_objext"
+
+fi
+
+    # Code from module open:
+
+
+  case "$host_os" in
+    mingw* | pw*)
+
+
+  REPLACE_OPEN=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS open.$ac_objext"
+
+
+
+
+  :
+
+
+      ;;
+    *)
+
+
+
+
+
+
+      { $as_echo "$as_me:$LINENO: checking whether open recognizes a trailing slash" >&5
+$as_echo_n "checking whether open recognizes a trailing slash... " >&6; }
+if test "${gl_cv_func_open_slash+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # Assume that if we have lstat, we can also check symlinks.
+          if test $ac_cv_func_lstat = yes; then
+            touch conftest.tmp
+            ln -s conftest.tmp conftest.lnk
+          fi
+          if test "$cross_compiling" = yes; then
+
+             case "$host_os" in
+               freebsd* | aix* | hpux* | solaris2.[0-9]*)
+                 gl_cv_func_open_slash="guessing no" ;;
+               *)
+                 gl_cv_func_open_slash="guessing yes" ;;
+             esac
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+int main ()
+{
+#if HAVE_LSTAT
+  if (open ("conftest.lnk/", O_RDONLY) != -1) return 2;
+#endif
+  return open ("conftest.sl/", O_CREAT, 0600) >= 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_open_slash=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_open_slash=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+          rm -f conftest.sl conftest.tmp conftest.lnk
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_open_slash" >&5
+$as_echo "$gl_cv_func_open_slash" >&6; }
+      case "$gl_cv_func_open_slash" in
+        *no)
+
+cat >>confdefs.h <<\_ACEOF
+#define OPEN_TRAILING_SLASH_BUG 1
+_ACEOF
+
+
+
+  REPLACE_OPEN=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS open.$ac_objext"
+
+
+
+
+  :
+
+
+          ;;
+      esac
+      ;;
+  esac
+
+
+
+
+  GNULIB_OPEN=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_OPEN 1
+_ACEOF
+
+
+
+  # Code from module openat:
+
+
+  GNULIB_OPENAT=1
+
+
+  GNULIB_FCHMODAT=1
+  GNULIB_FSTATAT=1
+  GNULIB_MKDIRAT=1
+
+
+  GNULIB_FCHOWNAT=1
+  GNULIB_UNLINKAT=1
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in fchmodat fstatat mkdirat openat unlinkat
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       eval "$as_ac_var=no"
+fi
 
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
 
+else
 
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
 
+fi
+done
 
 
 
 
+  case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in
+  yes+yes)
+    # GNU/Hurd has unlinkat, but it has the same bug as unlink.
+    if test $REPLACE_UNLINK = 1; then
 
-  if test $ac_cv_func_nl_langinfo = yes; then
-    if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1; then
-      :
-    else
-      REPLACE_NL_LANGINFO=1
 
-cat >>confdefs.h <<\_ACEOF
-#define REPLACE_NL_LANGINFO 1
-_ACEOF
 
 
 
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext"
 
+      REPLACE_UNLINKAT=1
+    fi ;;
+  yes+*)
+    # Solaris 9 has *at functions, but uniformly mishandles trailing
+    # slash in all of them.
 
 
-  gl_LIBOBJS="$gl_LIBOBJS nl_langinfo.$ac_objext"
 
-    fi
-  else
-    HAVE_NL_LANGINFO=0
 
 
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS openat.$ac_objext"
 
+    REPLACE_OPENAT=1
 
 
-  gl_LIBOBJS="$gl_LIBOBJS nl_langinfo.$ac_objext"
 
-  fi
 
 
 
-  GNULIB_NL_LANGINFO=1
 
 
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_NL_LANGINFO 1
-_ACEOF
+  gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext"
 
+    REPLACE_FSTATAT=1
 
 
 
@@ -33579,15 +36121,31 @@ _ACEOF
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext"
 
+    REPLACE_UNLINKAT=1
+    ;;
+  *)
+    HAVE_OPENAT=0
+    HAVE_UNLINKAT=0 # No known system with unlinkat but not openat
+    HAVE_FSTATAT=0 # No known system with fstatat but not openat
 
 
 
+  :
+;;
+  esac
+  if test $ac_cv_func_fchmodat != yes; then
+    HAVE_FCHMODAT=0
+  fi
+  if test $ac_cv_func_mkdirat != yes; then
+    HAVE_MKDIRAT=0
+  fi
 
 
-{ $as_echo "$as_me:$LINENO: checking for obstacks" >&5
-$as_echo_n "checking for obstacks... " >&6; }
-if test "${ac_cv_func_obstack+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for fchownat" >&5
+$as_echo_n "checking for fchownat... " >&6; }
+if test "${ac_cv_func_fchownat+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -33596,16 +36154,41 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
-                     #include "obstack.h"
+/* Define fchownat to an innocuous variant, in case <limits.h> declares fchownat.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define fchownat innocuous_fchownat
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char fchownat (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef fchownat
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fchownat ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_fchownat || defined __stub___fchownat
+choke me
+#endif
+
 int
 main ()
 {
-struct obstack mem;
-                      #define obstack_chunk_alloc malloc
-                      #define obstack_chunk_free free
-                      obstack_init (&mem);
-                      obstack_free (&mem, 0);
+return fchownat ();
   ;
   return 0;
 }
@@ -33631,89 +36214,36 @@ $as_echo "$ac_try_echo") >&5
         test "$cross_compiling" = yes ||
         $as_test_x conftest$ac_exeext
        }; then
-  ac_cv_func_obstack=yes
+  ac_cv_func_fchownat=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_func_obstack=no
+       ac_cv_func_fchownat=no
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_obstack" >&5
-$as_echo "$ac_cv_func_obstack" >&6; }
-if test $ac_cv_func_obstack = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_OBSTACK 1
-_ACEOF
-
-else
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS obstack.$ac_objext"
-
-fi
-
-
-
-  case "$host_os" in
-    mingw* | pw*)
-
-
-  REPLACE_OPEN=1
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS open.$ac_objext"
-
-
-
-
-  :
-
-
-      ;;
-    *)
-
-
-
-
-
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fchownat" >&5
+$as_echo "$ac_cv_func_fchownat" >&6; }
+if test "x$ac_cv_func_fchownat" = x""yes; then
 
-      { $as_echo "$as_me:$LINENO: checking whether open recognizes a trailing slash" >&5
-$as_echo_n "checking whether open recognizes a trailing slash... " >&6; }
-if test "${gl_cv_func_open_slash+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking whether fchownat works with AT_SYMLINK_NOFOLLOW" >&5
+$as_echo_n "checking whether fchownat works with AT_SYMLINK_NOFOLLOW... " >&6; }
+if test "${gl_cv_func_fchownat_nofollow_works+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  # Assume that if we have lstat, we can also check symlinks.
-          if test $ac_cv_func_lstat = yes; then
-            touch conftest.tmp
-            ln -s conftest.tmp conftest.lnk
-          fi
-          if test "$cross_compiling" = yes; then
-
-             case "$host_os" in
-               freebsd*)        gl_cv_func_open_slash="guessing no" ;;
-               solaris2.[0-9]*) gl_cv_func_open_slash="guessing no" ;;
-               hpux*)           gl_cv_func_open_slash="guessing no" ;;
-               *)               gl_cv_func_open_slash="guessing yes" ;;
-             esac
 
+     gl_dangle=conftest.dangle
+     # Remove any remnants of a previous test.
+     rm -f $gl_dangle
+     # Arrange for deletion of the temporary file this test creates.
+     ac_clean_files="$ac_clean_files $gl_dangle"
+     ln -s conftest.no-such $gl_dangle
+     if test "$cross_compiling" = yes; then
+  gl_cv_func_fchownat_nofollow_works=no
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -33723,16 +36253,18 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
 #include <fcntl.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-int main ()
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+int
+main ()
 {
-#if HAVE_LSTAT
-  if (open ("conftest.lnk/", O_RDONLY) != -1) return 2;
-#endif
-  return open ("conftest.sl/", O_CREAT, 0600) >= 0;
+  return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
+                    AT_SYMLINK_NOFOLLOW) != 0
+          && errno == ENOENT);
 }
+
 _ACEOF
 rm -f conftest$ac_exeext
 if { (ac_try="$ac_link"
@@ -33756,151 +36288,254 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  gl_cv_func_open_slash=yes
+  gl_cv_func_fchownat_nofollow_works=yes
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-gl_cv_func_open_slash=no
+gl_cv_func_fchownat_nofollow_works=no
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
-          rm -f conftest.sl conftest.tmp conftest.lnk
 
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_open_slash" >&5
-$as_echo "$gl_cv_func_open_slash" >&6; }
-      case "$gl_cv_func_open_slash" in
-        *no)
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fchownat_nofollow_works" >&5
+$as_echo "$gl_cv_func_fchownat_nofollow_works" >&6; }
+  if test $gl_cv_func_fchownat_nofollow_works = no; then
+  REPLACE_FCHOWNAT=1
 
 cat >>confdefs.h <<\_ACEOF
-#define OPEN_TRAILING_SLASH_BUG 1
+#define FCHOWNAT_NOFOLLOW_BUG 1
 _ACEOF
 
 
-
-  REPLACE_OPEN=1
-
-
-
+fi
 
 
+     if test $REPLACE_CHOWN = 1; then
+       REPLACE_FCHOWNAT=1
+     fi
+else
+  HAVE_FCHOWNAT=0
+fi
 
+  if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
 
 
-  gl_LIBOBJS="$gl_LIBOBJS open.$ac_objext"
 
 
 
 
-  :
 
 
-          ;;
-      esac
-      ;;
-  esac
+  gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext"
 
+  fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_OPEN 1
-_ACEOF
+  # Code from module openat-die:
+  # Code from module parse-datetime:
 
 
 
 
-  GNULIB_OPEN=1
 
 
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_OPEN 1
+  { $as_echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5
+$as_echo_n "checking for struct tm.tm_zone... " >&6; }
+if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
 _ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_cv_struct_tm>
 
 
+int
+main ()
+{
+static struct tm ac_aggr;
+if (ac_aggr.tm_zone)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_tm_tm_zone=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_cv_struct_tm>
 
 
-  GNULIB_OPENAT=1
-
-
-  GNULIB_FCHMODAT=1
-  GNULIB_FSTATAT=1
-  GNULIB_MKDIRAT=1
-
-
-  GNULIB_FCHOWNAT=1
-  GNULIB_UNLINKAT=1
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+int
+main ()
+{
+static struct tm ac_aggr;
+if (sizeof ac_aggr.tm_zone)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_tm_tm_zone=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_cv_member_struct_tm_tm_zone=no
+fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5
+$as_echo "$ac_cv_member_struct_tm_tm_zone" >&6; }
+if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TM_TM_ZONE 1
+_ACEOF
 
 
+fi
 
+if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TM_ZONE 1
+_ACEOF
 
+else
+  { $as_echo "$as_me:$LINENO: checking whether tzname is declared" >&5
+$as_echo_n "checking whether tzname is declared... " >&6; }
+if test "${ac_cv_have_decl_tzname+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <time.h>
 
+int
+main ()
+{
+#ifndef tzname
+  (void) tzname;
+#endif
 
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_tzname=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_cv_have_decl_tzname=no
+fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5
+$as_echo "$ac_cv_have_decl_tzname" >&6; }
+if test "x$ac_cv_have_decl_tzname" = x""yes; then
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TZNAME 1
+_ACEOF
 
 
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TZNAME 0
+_ACEOF
 
 
+fi
 
 
-for ac_func in fchmodat fstatat mkdirat openat unlinkat
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for tzname" >&5
+$as_echo_n "checking for tzname... " >&6; }
+if test "${ac_cv_var_tzname+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -33909,41 +36544,15 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
+#include <time.h>
+#if !HAVE_DECL_TZNAME
+extern char *tzname[];
 #endif
 
 int
 main ()
 {
-return $ac_func ();
+return tzname[0][0];
   ;
   return 0;
 }
@@ -33969,169 +36578,57 @@ $as_echo "$ac_try_echo") >&5
         test "$cross_compiling" = yes ||
         $as_test_x conftest$ac_exeext
        }; then
-  eval "$as_ac_var=yes"
+  ac_cv_var_tzname=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
+       ac_cv_var_tzname=no
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5
+$as_echo "$ac_cv_var_tzname" >&6; }
+  if test $ac_cv_var_tzname = yes; then
 
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TZNAME 1
+_ACEOF
 
+  fi
 fi
-done
-
-
-
-
-  case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in
-  yes+yes)
-    # GNU/Hurd has unlinkat, but it has the same bug as unlink.
-    if test $REPLACE_UNLINK = 1; then
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext"
-
-      REPLACE_UNLINKAT=1
-    fi ;;
-  yes+*)
-    # Solaris 9 has *at functions, but uniformly mishandles trailing
-    # slash in all of them.
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS openat.$ac_objext"
-
-    REPLACE_OPENAT=1
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext"
-
-    REPLACE_FSTATAT=1
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext"
-
-    REPLACE_UNLINKAT=1
-    ;;
-  *)
-    HAVE_OPENAT=0
-    HAVE_UNLINKAT=0 # No known system with unlinkat but not openat
-    HAVE_FSTATAT=0 # No known system with fstatat but not openat
-
-
 
-  :
-;;
-  esac
-  if test $ac_cv_func_fchmodat != yes; then
-    HAVE_FCHMODAT=0
-  fi
-  if test $ac_cv_func_mkdirat != yes; then
-    HAVE_MKDIRAT=0
-  fi
 
 
-  { $as_echo "$as_me:$LINENO: checking for fchownat" >&5
-$as_echo_n "checking for fchownat... " >&6; }
-if test "${ac_cv_func_fchownat+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define fchownat to an innocuous variant, in case <limits.h> declares fchownat.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define fchownat innocuous_fchownat
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char fchownat (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef fchownat
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char fchownat ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_fchownat || defined __stub___fchownat
-choke me
-#endif
+#include <time.h> /* for time_t */
+#include <limits.h> /* for CHAR_BIT, LONG_MIN, LONG_MAX */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+typedef int verify_min[2 * (LONG_MIN <= TYPE_MINIMUM (time_t)) - 1];
+typedef int verify_max[2 * (TYPE_MAXIMUM (time_t) <= LONG_MAX) - 1];
 
-int
-main ()
-{
-return fchownat ();
-  ;
-  return 0;
-}
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -34140,133 +36637,23 @@ $as_echo "$ac_try_echo") >&5
   (exit $ac_status); } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_fchownat=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_func_fchownat=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fchownat" >&5
-$as_echo "$ac_cv_func_fchownat" >&6; }
-if test "x$ac_cv_func_fchownat" = x""yes; then
-
-  { $as_echo "$as_me:$LINENO: checking whether fchownat works with AT_SYMLINK_NOFOLLOW" >&5
-$as_echo_n "checking whether fchownat works with AT_SYMLINK_NOFOLLOW... " >&6; }
-if test "${gl_cv_func_fchownat_nofollow_works+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
+       } && test -s conftest.$ac_objext; then
 
-     gl_dangle=conftest.dangle
-     # Remove any remnants of a previous test.
-     rm -f $gl_dangle
-     # Arrange for deletion of the temporary file this test creates.
-     ac_clean_files="$ac_clean_files $gl_dangle"
-     ln -s conftest.no-such $gl_dangle
-     if test "$cross_compiling" = yes; then
-  gl_cv_func_fchownat_nofollow_works=no
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<\_ACEOF
+#define TIME_T_FITS_IN_LONG_INT 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/types.h>
-int
-main ()
-{
-  return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
-                    AT_SYMLINK_NOFOLLOW) != 0
-          && errno == ENOENT);
-}
 
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  gl_cv_func_fchownat_nofollow_works=yes
 else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-gl_cv_func_fchownat_nofollow_works=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
 
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fchownat_nofollow_works" >&5
-$as_echo "$gl_cv_func_fchownat_nofollow_works" >&6; }
-  if test $gl_cv_func_fchownat_nofollow_works = no; then
-  REPLACE_FCHOWNAT=1
-
-cat >>confdefs.h <<\_ACEOF
-#define FCHOWNAT_NOFOLLOW_BUG 1
-_ACEOF
-
-fi
-
-
-else
-  HAVE_FCHOWNAT=0
 fi
 
-  if test $REPLACE_CHOWN = 1; then
-    REPLACE_FCHOWNAT=1
-  fi
-  if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext"
-
-  fi
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+  # Code from module pathmax:
 
 
 
@@ -34281,6 +36668,7 @@ fi
 
 
 
+  # Code from module priv-set:
 
 
 
 done
 
 
+
+
+
+
+
+
+  # Code from module progname:
   { $as_echo "$as_me:$LINENO: checking whether program_invocation_name is declared" >&5
 $as_echo_n "checking whether program_invocation_name is declared... " >&6; }
 if test "${ac_cv_have_decl_program_invocation_name+set}" = set; then
@@ -34525,6 +36920,7 @@ _ACEOF
 fi
 
 
+  # Code from module quote:
 
 
 
@@ -34538,6 +36934,7 @@ fi
 
 
 
+  # Code from module quotearg:
 
 
 
@@ -34550,6 +36947,8 @@ fi
   gl_LIBOBJS="$gl_LIBOBJS quotearg.$ac_objext"
 
 
+  # Code from module quotearg-simple:
+  # Code from module rawmemchr:
 
 
 
@@ -34675,15 +37074,18 @@ done
 
 
 
+
   GNULIB_RAWMEMCHR=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_RAWMEMCHR 1
+#define GNULIB_TEST_RAWMEMCHR 1
 _ACEOF
 
 
 
+  # Code from module readlink:
 
 
 
@@ -34862,19 +37264,60 @@ _ACEOF
 
 
 
+
   GNULIB_READLINK=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_READLINK 1
+#define GNULIB_TEST_READLINK 1
 _ACEOF
 
 
 
+  # Code from module readlinkat:
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_readlinkat = no; then
+    HAVE_READLINKAT=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS readlinkat.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_READLINKAT=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_READLINKAT 1
+_ACEOF
+
+
+
+  # Code from module realloc-posix:
+
 
 
   if test $gl_cv_func_malloc_posix = yes; then
-    HAVE_REALLOC_POSIX=1
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_REALLOC_POSIX 1
@@ -34889,9 +37332,11 @@ _ACEOF
 
 
 
+
   gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
 
-    HAVE_REALLOC_POSIX=0
+  REPLACE_REALLOC=1
+
   fi
 
 
@@ -34900,12 +37345,14 @@ _ACEOF
   GNULIB_REALLOC_POSIX=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_REALLOC_POSIX 1
+#define GNULIB_TEST_REALLOC_POSIX 1
 _ACEOF
 
 
 
+  # Code from module regex:
 
 
 
@@ -35008,8 +37455,9 @@ static struct re_pattern_buffer regex;
             if (!s)
               return 1;
 
-            /* Ensure that [b-a] is diagnosed as invalid. */
-            re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+            /* Ensure that [b-a] is diagnosed as invalid, when
+               using RE_NO_EMPTY_RANGES. */
+            re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_NO_EMPTY_RANGES);
             memset (&regex, 0, sizeof regex);
             s = re_compile_pattern ("a[b-a]", 6, &regex);
             if (s == 0)
@@ -35069,12 +37517,17 @@ static struct re_pattern_buffer regex;
             if (! REG_STARTEND)
               return 1;
 
-            /* Reject hosts whose regoff_t values are too narrow.
-               These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t
-               and 32-bit int.  */
+#if 0
+            /* It would be nice to reject hosts whose regoff_t values are too
+               narrow (including glibc on hosts with 64-bit ptrdiff_t and
+               32-bit int), but we should wait until glibc implements this
+               feature.  Otherwise, support for equivalence classes and
+               multibyte collation symbols would always be broken except
+               when compiling --without-included-regex.   */
             if (sizeof (regoff_t) < sizeof (ptrdiff_t)
                 || sizeof (regoff_t) < sizeof (ssize_t))
               return 1;
+#endif
 
             return 0;
   ;
@@ -35461,6 +37914,7 @@ fi
 
   fi
 
+  # Code from module rename:
 
 
 
 
 
 
-
-
-for ac_func in rmdir
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+                { $as_echo "$as_me:$LINENO: checking whether rename honors trailing slash on destination" >&5
+$as_echo_n "checking whether rename honors trailing slash on destination... " >&6; }
+if test "${gl_cv_func_rename_slash_dst_works+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.lnk
+    touch conftest.f && mkdir conftest.d1 ||
+      { { $as_echo "$as_me:$LINENO: error: cannot create temporary files" >&5
+$as_echo "$as_me: error: cannot create temporary files" >&2;}
+   { (exit 1); exit 1; }; }
+    # Assume that if we have lstat, we can also check symlinks.
+    if test $ac_cv_func_lstat = yes; then
+      ln -s conftest.f conftest.lnk
+    fi
+    if test "$cross_compiling" = yes; then
+        gl_cv_func_rename_slash_dst_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -35487,46 +37948,24 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
+#       include <stdio.h>
+#       include <stdlib.h>
 
 int
 main ()
 {
-return $ac_func ();
+if (rename ("conftest.f", "conftest.f1/") == 0) return 1;
+     if (rename ("conftest.d1", "conftest.d2/") != 0) return 2;
+#if HAVE_LSTAT
+     if (rename ("conftest.f", "conftest.lnk/") == 0) return 3;
+#endif
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
 if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -35534,81 +37973,74 @@ case "(($ac_try" in
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_rename_slash_dst_works=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
+( exit $ac_status )
+gl_cv_func_rename_slash_dst_works=no
 fi
-
 rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
-else
 
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+    rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.lnk
 
 fi
-done
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rename_slash_dst_works" >&5
+$as_echo "$gl_cv_func_rename_slash_dst_works" >&6; }
+  if test "x$gl_cv_func_rename_slash_dst_works" != xyes; then
 
 
-  if test $ac_cv_func_rmdir = no; then
-    REPLACE_RMDIR=1
-    # If someone lacks rmdir, make configure fail, and request
-    # a bug report to inform us about it.
-    if test x"$SKIP_RMDIR_CHECK" != xyes; then
-      { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: Your system lacks the rmdir function.
-              Please report this, along with the output of \"uname -a\", to the
-              bug-coreutils@gnu.org mailing list.  To continue past this point,
-              rerun configure with SKIP_RMDIR_CHECK=yes.
-              E.g., ./configure SKIP_RMDIR_CHECK=yes
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: Your system lacks the rmdir function.
-              Please report this, along with the output of \"uname -a\", to the
-              bug-coreutils@gnu.org mailing list.  To continue past this point,
-              rerun configure with SKIP_RMDIR_CHECK=yes.
-              E.g., ./configure SKIP_RMDIR_CHECK=yes
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-    fi
-  else
-        { $as_echo "$as_me:$LINENO: checking whether rmdir works" >&5
-$as_echo_n "checking whether rmdir works... " >&6; }
-if test "${gl_cv_func_rmdir_works+set}" = set; then
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext"
+
+    REPLACE_RENAME=1
+
+cat >>confdefs.h <<\_ACEOF
+#define RENAME_TRAILING_SLASH_DEST_BUG 1
+_ACEOF
+
+  fi
+
+            { $as_echo "$as_me:$LINENO: checking whether rename honors trailing slash on source" >&5
+$as_echo_n "checking whether rename honors trailing slash on source... " >&6; }
+if test "${gl_cv_func_rename_slash_src_works+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  mkdir conftest.dir
-       touch conftest.file
-       if test "$cross_compiling" = yes; then
-  gl_cv_func_rmdir_works="guessing no"
+  rm -rf conftest.f conftest.d1 conftest.d2 conftest.lnk
+    touch conftest.f && mkdir conftest.d1 ||
+      { { $as_echo "$as_me:$LINENO: error: cannot create temporary files" >&5
+$as_echo "$as_me: error: cannot create temporary files" >&2;}
+   { (exit 1); exit 1; }; }
+    # Assume that if we have lstat, we can also check symlinks.
+    if test $ac_cv_func_lstat = yes; then
+      ln -s conftest.f conftest.lnk
+    fi
+    if test "$cross_compiling" = yes; then
+        gl_cv_func_rename_slash_src_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -35616,15 +38048,19 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdio.h>
-             #include <errno.h>
-             #include <unistd.h>
+
+#       include <stdio.h>
+#       include <stdlib.h>
 
 int
 main ()
 {
-return !rmdir ("conftest.file/") || errno != ENOTDIR
-       || !rmdir ("conftest.dir/./");
+if (rename ("conftest.f/", "conftest.d2") == 0) return 1;
+     if (rename ("conftest.d1/", "conftest.d2") != 0) return 2;
+#if HAVE_LSTAT
+     if (rename ("conftest.lnk/", "conftest.f") == 0) return 3;
+#endif
+
   ;
   return 0;
 }
@@ -35651,70 +38087,54 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  gl_cv_func_rmdir_works=yes
+  gl_cv_func_rename_slash_src_works=yes
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-gl_cv_func_rmdir_works=no
+gl_cv_func_rename_slash_src_works=no
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
-       rm -rf conftest.dir conftest.file
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rmdir_works" >&5
-$as_echo "$gl_cv_func_rmdir_works" >&6; }
-    if test x"$gl_cv_func_rmdir_works" != xyes; then
-      REPLACE_RMDIR=1
-
-
+    rm -rf conftest.f conftest.d1 conftest.d2 conftest.lnk
 
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rename_slash_src_works" >&5
+$as_echo "$gl_cv_func_rename_slash_src_works" >&6; }
+  if test "x$gl_cv_func_rename_slash_src_works" != xyes; then
 
 
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS rmdir.$ac_objext"
-
-    fi
-  fi
 
 
 
-  GNULIB_RMDIR=1
+  gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext"
 
+    REPLACE_RENAME=1
 
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_RMDIR 1
+#define RENAME_TRAILING_SLASH_SOURCE_BUG 1
 _ACEOF
 
+  fi
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in rpmatch
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+        { $as_echo "$as_me:$LINENO: checking whether rename manages hard links correctly" >&5
+$as_echo_n "checking whether rename manages hard links correctly... " >&6; }
+if test "${gl_cv_func_rename_link_works+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  rm -rf conftest.f conftest.f1
+    if touch conftest.f && ln conftest.f conftest.f1 &&
+        set x `ls -i conftest.f conftest.f1` && test "" = ""; then
+      if test "$cross_compiling" = yes; then
+          gl_cv_func_rename_link_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -35722,46 +38142,23 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
+#       include <stdio.h>
+#       include <stdlib.h>
+#       include <unistd.h>
 
 int
 main ()
 {
-return $ac_func ();
+if (rename ("conftest.f", "conftest.f1")) return 1;
+     if (unlink ("conftest.f1")) return 2;
+     if (rename ("conftest.f", "conftest.f")) return 3;
+     if (rename ("conftest.f1", "conftest.f1") == 0) return 4;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
 if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -35769,57 +38166,73 @@ case "(($ac_try" in
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_rename_link_works=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
+( exit $ac_status )
+gl_cv_func_rename_link_works=no
 fi
-
 rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
-else
 
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+    else
+      gl_cv_func_rename_link_works="guessing no"
+    fi
+    rm -rf conftest.f conftest.f1
 
 fi
-done
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rename_link_works" >&5
+$as_echo "$gl_cv_func_rename_link_works" >&6; }
+  if test "x$gl_cv_func_rename_link_works" != xyes; then
 
 
-  if test $ac_cv_func_rpmatch = no; then
-    HAVE_RPMATCH=0
 
-  { $as_echo "$as_me:$LINENO: checking for nl_langinfo and YESEXPR" >&5
-$as_echo_n "checking for nl_langinfo and YESEXPR... " >&6; }
-if test "${gl_cv_langinfo_yesexpr+set}" = set; then
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext"
+
+    REPLACE_RENAME=1
+
+cat >>confdefs.h <<\_ACEOF
+#define RENAME_HARD_LINK_BUG 1
+_ACEOF
+
+  fi
+
+          { $as_echo "$as_me:$LINENO: checking whether rename manages existing destinations correctly" >&5
+$as_echo_n "checking whether rename manages existing destinations correctly... " >&6; }
+if test "${gl_cv_func_rename_dest_works+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  rm -rf conftest.f conftest.d1 conftest.d2
+    touch conftest.f && mkdir conftest.d1 conftest.d2 ||
+      { { $as_echo "$as_me:$LINENO: error: cannot create temporary files" >&5
+$as_echo "$as_me: error: cannot create temporary files" >&2;}
+   { (exit 1); exit 1; }; }
+    if test "$cross_compiling" = yes; then
+        gl_cv_func_rename_dest_works="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -35827,16 +38240,20 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <langinfo.h>
+
+#       include <stdio.h>
+#       include <stdlib.h>
+
 int
 main ()
 {
-char* cs = nl_langinfo(YESEXPR); return !cs;
+if (rename ("conftest.d1", "conftest.d2") != 0) return 1;
+     if (rename ("conftest.d2", "conftest.f") == 0) return 2;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
 if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -35844,52 +38261,40 @@ case "(($ac_try" in
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  gl_cv_langinfo_yesexpr=yes
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_rename_dest_works=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_langinfo_yesexpr=no
+( exit $ac_status )
+gl_cv_func_rename_dest_works=no
 fi
-
 rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_langinfo_yesexpr" >&5
-$as_echo "$gl_cv_langinfo_yesexpr" >&6; }
-  if test $gl_cv_langinfo_yesexpr = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LANGINFO_YESEXPR 1
-_ACEOF
-
-  fi
-
-  fi
-
-
-
-  GNULIB_RPMATCH=1
 
+    rm -rf conftest.f conftest.d1 conftest.d2
 
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_RPMATCH 1
-_ACEOF
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rename_dest_works" >&5
+$as_echo "$gl_cv_func_rename_dest_works" >&6; }
+  if test "x$gl_cv_func_rename_dest_works" != xyes; then
 
 
 
@@ -35898,32 +38303,43 @@ _ACEOF
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext"
 
+    REPLACE_RENAME=1
 
+cat >>confdefs.h <<\_ACEOF
+#define RENAME_DEST_EXISTS_BUG 1
+_ACEOF
 
+  fi
 
-  gl_LIBOBJS="$gl_LIBOBJS safe-read.$ac_objext"
 
 
 
+  GNULIB_RENAME=1
 
 
 
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_RENAME 1
+_ACEOF
 
 
 
+  # Code from module renameat:
 
 
 
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS safe-write.$ac_objext"
 
 
 
 
 
+  if test $ac_cv_func_renameat = no; then
+    HAVE_RENAMEAT=0
 
 
 
@@ -35932,17 +38348,20 @@ _ACEOF
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS renameat.$ac_objext"
 
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS same.$ac_objext"
 
 
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS at-func2.$ac_objext"
 
+  elif test $REPLACE_RENAME = 1; then
+        REPLACE_RENAMEAT=1
 
 
 
@@ -35951,6 +38370,376 @@ _ACEOF
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS renameat.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS at-func2.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_RENAMEAT=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_RENAMEAT 1
+_ACEOF
+
+
+
+  # Code from module rmdir:
+
+
+
+    { $as_echo "$as_me:$LINENO: checking whether rmdir works" >&5
+$as_echo_n "checking whether rmdir works... " >&6; }
+if test "${gl_cv_func_rmdir_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  mkdir conftest.dir
+     touch conftest.file
+     if test "$cross_compiling" = yes; then
+  gl_cv_func_rmdir_works="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+           #include <errno.h>
+           #include <unistd.h>
+
+int
+main ()
+{
+return !rmdir ("conftest.file/") || errno != ENOTDIR
+       || !rmdir ("conftest.dir/./");
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_rmdir_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_rmdir_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+     rm -rf conftest.dir conftest.file
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rmdir_works" >&5
+$as_echo "$gl_cv_func_rmdir_works" >&6; }
+  if test x"$gl_cv_func_rmdir_works" != xyes; then
+    REPLACE_RMDIR=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS rmdir.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_RMDIR=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_RMDIR 1
+_ACEOF
+
+
+
+  # Code from module rpmatch:
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in rpmatch
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_rpmatch = no; then
+    HAVE_RPMATCH=0
+
+  { $as_echo "$as_me:$LINENO: checking for nl_langinfo and YESEXPR" >&5
+$as_echo_n "checking for nl_langinfo and YESEXPR... " >&6; }
+if test "${gl_cv_langinfo_yesexpr+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(YESEXPR); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  gl_cv_langinfo_yesexpr=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_langinfo_yesexpr=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_langinfo_yesexpr" >&5
+$as_echo "$gl_cv_langinfo_yesexpr" >&6; }
+  if test $gl_cv_langinfo_yesexpr = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LANGINFO_YESEXPR 1
+_ACEOF
+
+  fi
+
+  fi
+
+
+
+
+  GNULIB_RPMATCH=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_RPMATCH 1
+_ACEOF
+
+
+
+  # Code from module safe-read:
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS safe-read.$ac_objext"
+
+
+
+
+
+
+  # Code from module safe-write:
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS safe-write.$ac_objext"
+
+
+
+
+
+
+
+
+  # Code from module same-inode:
+  # Code from module save-cwd:
+
+
+
+
 
 
 
@@ -35965,6 +38754,7 @@ _ACEOF
 
 
 
+  # Code from module savedir:
 
 
 
@@ -35977,6 +38767,7 @@ _ACEOF
   gl_LIBOBJS="$gl_LIBOBJS savedir.$ac_objext"
 
 
+  # Code from module setenv:
 
 
   if test $HAVE_SETENV$REPLACE_SETENV != 10; then
@@ -35994,15 +38785,18 @@ _ACEOF
 
 
 
+
   GNULIB_SETENV=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_SETENV 1
+#define GNULIB_TEST_SETENV 1
 _ACEOF
 
 
 
+  # Code from module size_max:
 
 
 for ac_header in stdint.h
@@ -36838,8 +39632,8 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <stddef.h>
-            extern size_t foo;
-            extern unsigned long foo;
+                 extern size_t foo;
+                 extern unsigned long foo;
 
 int
 main ()
@@ -36900,6 +39694,7 @@ _ACEOF
 
 
 
+  # Code from module sleep:
 
 
             { $as_echo "$as_me:$LINENO: checking whether sleep is declared" >&5
@@ -37088,15 +39883,18 @@ $as_echo "$gl_cv_func_sleep_works" >&6; }
 
 
 
+
   GNULIB_SLEEP=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_SLEEP 1
+#define GNULIB_TEST_SLEEP 1
 _ACEOF
 
 
 
+  # Code from module snprintf:
 
 
   gl_cv_func_snprintf_usable=no
@@ -37304,15 +40102,18 @@ $as_echo "$gl_cv_func_snprintf_size1" >&6; }
 
 
 
+
   GNULIB_SNPRINTF=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_SNPRINTF 1
+#define GNULIB_TEST_SNPRINTF 1
 _ACEOF
 
 
 
+  # Code from module ssize_t:
 
   { $as_echo "$as_me:$LINENO: checking for ssize_t" >&5
 $as_echo_n "checking for ssize_t... " >&6; }
@@ -37330,7 +40131,7 @@ int
 main ()
 {
 int x = sizeof (ssize_t *) + sizeof (ssize_t);
-        return !x;
+            return !x;
   ;
   return 0;
 }
@@ -37373,6 +40174,7 @@ _ACEOF
 
   fi
 
+  # Code from module stat:
 
 
 
@@ -37554,15 +40356,19 @@ _ACEOF
 
 
 
+
   GNULIB_STAT=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STAT 1
+#define GNULIB_TEST_STAT 1
 _ACEOF
 
 
 
+  # Code from module stat-macros:
+  # Code from module stat-time:
 
 
 
@@ -38412,6 +41218,7 @@ fi
 fi
 
 
+  # Code from module stdarg:
 
   STDARG_H='';
   NEXT_STDARG_H='<stdarg.h>';
@@ -38635,6 +41442,7 @@ _ACEOF
     fi
   fi
 
+  # Code from module stdbool:
 
 
 
@@ -38654,6 +41462,7 @@ _ACEOF
   fi
 
 
+  # Code from module stddef:
 
 
 
@@ -38782,6 +41591,7 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
 
   fi
 
+  # Code from module stdint:
 
 
 
@@ -40514,6 +43324,8 @@ _ACEOF
   fi
 
 
+  # Code from module stdio:
+
 
 
 
@@ -40603,7 +43415,8 @@ $as_echo "$gl_cv_next_stdio_h" >&6; }
 
 
 
-  for gl_func in dprintf fpurge fseeko ftello getdelim getline popen renameat     snprintf vdprintf vsnprintf; do
+
+  for gl_func in dprintf fpurge fseeko ftello getdelim getline popen renameat     snprintf tmpfile vdprintf vsnprintf; do
     as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
     { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
@@ -40672,6 +43485,7 @@ fi
       done
 
 
+  # Code from module stdlib:
 
 
 
 
 
 
-  for gl_func in atoll canonicalize_file_name getloadavg getsubopt mkdtemp     mkostemp mkostemps mkstemp mkstemps random_r initstat_r srandom_r     setstate_r realpath rpmatch setenv strtod strtoll strtoull unsetenv; do
+
+
+
+
+  for gl_func in _Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp     mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r     setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt     unsetenv; do
     as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
     { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
@@ -41016,6 +43834,7 @@ fi
       done
 
 
+  # Code from module stpcpy:
 
 
 
 done
 
 
-  if test $ac_cv_func_stpcpy = no; then
-    HAVE_STPCPY=0
-
-  :
-
-  fi
-
-
-
-  GNULIB_STPCPY=1
-
-
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STPCPY 1
-_ACEOF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in strcasecmp
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-
-    gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
-
-fi
-done
-
-
-  if test $ac_cv_func_strcasecmp = no; then
-    HAVE_STRCASECMP=0
+  if test $ac_cv_func_stpcpy = no; then
+    HAVE_STPCPY=0
 
   :
 
@@ -41281,15 +43965,30 @@ done
 
 
 
+  GNULIB_STPCPY=1
 
 
 
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_STPCPY 1
+_ACEOF
 
 
 
+  # Code from module strcase:
 
 
-for ac_func in strncasecmp
+
+
+
+
+
+
+
+
+
+
+for ac_func in strcasecmp
 do
 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
 done
 
 
-  if test $ac_cv_func_strncasecmp = no; then
+  if test $ac_cv_func_strcasecmp = no; then
+    HAVE_STRCASECMP=0
 
   :
 
   fi
-  { $as_echo "$as_me:$LINENO: checking whether strncasecmp is declared" >&5
-$as_echo_n "checking whether strncasecmp is declared... " >&6; }
-if test "${ac_cv_have_decl_strncasecmp+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-#ifndef strncasecmp
-  (void) strncasecmp;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_decl_strncasecmp=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_have_decl_strncasecmp=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strncasecmp" >&5
-$as_echo "$ac_cv_have_decl_strncasecmp" >&6; }
-if test "x$ac_cv_have_decl_strncasecmp" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRNCASECMP 1
-_ACEOF
-
-
-else
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRNCASECMP 0
-_ACEOF
-
-
-fi
-
-
-  if test $ac_cv_have_decl_strncasecmp = no; then
-    HAVE_DECL_STRNCASECMP=0
-  fi
-
-
-
 
 
 
@@ -41486,7 +44111,7 @@ fi
 
 
 
-for ac_func in strchrnul
+for ac_func in strncasecmp
 do
 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
 done
 
 
-  if test $ac_cv_func_strchrnul = no; then
-    HAVE_STRCHRNUL=0
-    :
-  fi
-
-
+  if test $ac_cv_func_strncasecmp = no; then
 
-  GNULIB_STRCHRNUL=1
+  :
 
+  fi
+  { $as_echo "$as_me:$LINENO: checking whether strncasecmp is declared" >&5
+$as_echo_n "checking whether strncasecmp is declared... " >&6; }
+if test "${ac_cv_have_decl_strncasecmp+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strncasecmp
+  (void) strncasecmp;
+#endif
 
-cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRCHRNUL 1
+  ;
+  return 0;
+}
 _ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_strncasecmp=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_cv_have_decl_strncasecmp=no
+fi
 
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strncasecmp" >&5
+$as_echo "$ac_cv_have_decl_strncasecmp" >&6; }
+if test "x$ac_cv_have_decl_strncasecmp" = x""yes; then
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNCASECMP 1
+_ACEOF
 
 
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNCASECMP 0
+_ACEOF
 
-  if test $gl_cv_func_malloc_posix != yes; then
-    REPLACE_STRDUP=1
 
+fi
 
 
+  if test $ac_cv_have_decl_strncasecmp = no; then
+    HAVE_DECL_STRNCASECMP=0
+  fi
 
 
+  # Code from module strchrnul:
 
 
 
-  gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext"
 
-  else
 
 
 
@@ -41632,7 +44309,7 @@ _ACEOF
 
 
 
-for ac_func in strdup
+for ac_func in strchrnul
 do
 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
 done
 
 
+  if test $ac_cv_func_strchrnul = no; then
+    HAVE_STRCHRNUL=0
+    :
+  fi
+
+
+
+
+  GNULIB_STRCHRNUL=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_STRCHRNUL 1
+_ACEOF
+
+
+
+  # Code from module strdup-posix:
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_strdup = yes; then
+    if test $gl_cv_func_malloc_posix != yes; then
+      REPLACE_STRDUP=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext"
+
+      :
+    fi
+  else
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext"
+
+    :
   fi
 
 
@@ -41745,19 +44477,22 @@ done
   if test $ac_cv_have_decl_strdup = no; then
     HAVE_DECL_STRDUP=0
   fi
-  :
+
 
 
 
   GNULIB_STRDUP=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRDUP 1
+#define GNULIB_TEST_STRDUP 1
 _ACEOF
 
 
 
+  # Code from module streq:
+  # Code from module strerror:
 
 
   if test $REPLACE_STRERROR = 1; then
@@ -41780,21 +44515,26 @@ _ACEOF
 
 
 
+
   GNULIB_STRERROR=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRERROR 1
+#define GNULIB_TEST_STRERROR 1
 _ACEOF
 
 
 
+  # Code from module string:
 
 
 
+  # Code from module strings:
 
 
 
+  # Code from module strndup:
 
 
 
@@ -41821,10 +44561,12 @@ if test "${gl_cv_func_strndup_works+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then
-  case $host_os in
-            aix*) gl_cv_func_strndup_works="guessing no";;
-            *) gl_cv_func_strndup_works="guessing yes";;
+
+          case $host_os in
+            aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";;
+            *)               gl_cv_func_strndup_works="guessing yes";;
           esac
+
 else
   cat >conftest.$ac_ext <<_ACEOF
 
@@ -41920,15 +44662,19 @@ $as_echo "$gl_cv_func_strndup_works" >&6; }
 
 
 
+
   GNULIB_STRNDUP=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRNDUP 1
+#define GNULIB_TEST_STRNDUP 1
 _ACEOF
 
 
 
+  # Code from module strnlen:
+
 
 
 
@@ -41939,9 +44685,8 @@ _ACEOF
 
   if test $ac_cv_have_decl_strnlen = no; then
     HAVE_DECL_STRNLEN=0
-  fi
-
-  { $as_echo "$as_me:$LINENO: checking for working strnlen" >&5
+  else
+    { $as_echo "$as_me:$LINENO: checking for working strnlen" >&5
 $as_echo_n "checking for working strnlen... " >&6; }
 if test "${ac_cv_func_strnlen_working+set}" = set; then
   $as_echo_n "(cached) " >&6
@@ -42029,30 +44774,39 @@ test $ac_cv_func_strnlen_working = no &&
   gl_LIBOBJS="$gl_LIBOBJS strnlen.$ac_objext"
 
 
-  if test $ac_cv_func_strnlen_working = no; then
-    # This is necessary because automake-1.6.1 doesn't understand
-    # that the above use of AC_FUNC_STRNLEN means we may have to use
-    # lib/strnlen.c.
-    #AC_LIBOBJ([strnlen])
+        if test $ac_cv_func_strnlen_working = no; then
+      REPLACE_STRNLEN=1
+    fi
+  fi
+  if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
 
-cat >>confdefs.h <<\_ACEOF
-#define strnlen rpl_strnlen
-_ACEOF
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strnlen.$ac_objext"
 
     :
   fi
 
 
 
+
   GNULIB_STRNLEN=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRNLEN 1
+#define GNULIB_TEST_STRNLEN 1
 _ACEOF
 
 
 
+  # Code from module strnlen1:
+  # Code from module strtoimax:
 
 
 
 
 
 
+
   GNULIB_STRTOIMAX=1
 
 
+  # Code from module strtol:
+
 
 
 
@@ -42396,6 +45153,7 @@ done
 
 
 
+  # Code from module strtoll:
 
 
 
@@ -42524,15 +45282,18 @@ done
 
 
 
+
   GNULIB_STRTOLL=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRTOLL 1
+#define GNULIB_TEST_STRTOLL 1
 _ACEOF
 
 
 
+  # Code from module strtoul:
 
 
 
@@ -42649,6 +45410,7 @@ done
 
 
 
+  # Code from module strtoull:
 
 
 
@@ -42777,15 +45539,18 @@ done
 
 
 
+
   GNULIB_STRTOULL=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_STRTOULL 1
+#define GNULIB_TEST_STRTOULL 1
 _ACEOF
 
 
 
+  # Code from module strtoumax:
 
 
 
 
 
 
+
   GNULIB_STRTOUMAX=1
 
 
+  # Code from module symlink:
+
+
+
+
+
+
+
+
+        if test $ac_cv_func_symlink = no; then
+    HAVE_SYMLINK=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext"
+
+  else
+    { $as_echo "$as_me:$LINENO: checking whether symlink handles trailing slash correctly" >&5
+$as_echo_n "checking whether symlink handles trailing slash correctly... " >&6; }
+if test "${gl_cv_func_symlink_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  gl_cv_func_symlink_works="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+
+int
+main ()
+{
+if (!symlink ("a", "conftest.link/")) return 1;
+      if (symlink ("conftest.f", "conftest.lnk2")) return 2;
+      if (!symlink ("a", "conftest.lnk2/")) return 3;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_symlink_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_symlink_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      rm -f conftest.f conftest.link conftest.lnk2
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_symlink_works" >&5
+$as_echo "$gl_cv_func_symlink_works" >&6; }
+    if test "$gl_cv_func_symlink_works" != yes; then
+      REPLACE_SYMLINK=1
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext"
+
+    fi
+  fi
+
+
+
+
+  GNULIB_SYMLINK=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_SYMLINK 1
+_ACEOF
+
+
+
+  # Code from module symlinkat:
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_symlinkat = no; then
+    HAVE_SYMLINKAT=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS symlinkat.$ac_objext"
+
+  fi
+
+
+
+
+  GNULIB_SYMLINKAT=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_SYMLINKAT 1
+_ACEOF
+
+
+
+  # Code from module sys_stat:
+
 
 
 
@@ -43317,6 +46239,7 @@ fi
 $as_echo "$MKDIR_P" >&6; }
 
 
+  # Code from module sys_time:
 
 
 
@@ -43363,6 +46286,7 @@ fi
 $as_echo "$MKDIR_P" >&6; }
 
 
+  # Code from module sysexits:
 
 
 
@@ -43503,6 +46427,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
 
+  # Code from module tempname:
 
 
 
@@ -43520,6 +46445,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   :
 
 
+  # Code from module time:
+
+
+
+  # Code from module time_r:
 
 
 
@@ -43529,7 +46459,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 
 
-  { $as_echo "$as_me:$LINENO: checking whether localtime_r is compatible with its POSIX signature" >&5
+
+
+
+  if test $ac_cv_func_localtime_r = yes; then
+    { $as_echo "$as_me:$LINENO: checking whether localtime_r is compatible with its POSIX signature" >&5
 $as_echo_n "checking whether localtime_r is compatible with its POSIX signature... " >&6; }
 if test "${gl_cv_time_r_posix+set}" = set; then
   $as_echo_n "(cached) " >&6
 main ()
 {
 /* We don't need to append 'restrict's to the argument types,
-              even though the POSIX signature has the 'restrict's,
-              since C99 says they can't affect type compatibility.  */
-           struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
-           if (ptr) return 0;
-           /* Check the return type is a pointer.  On HP-UX 10 it is 'int'.  */
-           *localtime_r (0, 0);
+                 even though the POSIX signature has the 'restrict's,
+                 since C99 says they can't affect type compatibility.  */
+              struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
+              if (ptr) return 0;
+              /* Check the return type is a pointer.
+                 On HP-UX 10 it is 'int'.  */
+              *localtime_r (0, 0);
+  ;
+  return 0;
+}
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_time_r_posix=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_time_r_posix=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_time_r_posix" >&5
+$as_echo "$gl_cv_time_r_posix" >&6; }
+    if test $gl_cv_time_r_posix = yes; then
+      REPLACE_LOCALTIME_R=0
+    else
+      REPLACE_LOCALTIME_R=1
+    fi
+  else
+    HAVE_LOCALTIME_R=0
+  fi
+  if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS time_r.$ac_objext"
+
+
+  :
+
+  fi
+
+
+
+
+  GNULIB_TIME_R=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_TIME_R 1
+_ACEOF
+
+
+
+  # Code from module timespec:
+
+
+
+  # Code from module unistd:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_unistd_h='<'unistd.h'>'
+     else
+       { $as_echo "$as_me:$LINENO: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if test "${gl_cv_next_unistd_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+          if test $ac_cv_header_unistd_h = yes; then
+            cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+
+_ACEOF
+                                                                                                case "$host_os" in
+              aix*) gl_absname_cpp="$ac_cpp -C" ;;
+              *)    gl_absname_cpp="$ac_cpp" ;;
+            esac
+                                                gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+               sed -n '\#/unistd.h#{
+                 s#.*"\(.*/unistd.h\)".*#\1#
+                 s#^/[^/]#//&#
+                 p
+                 q
+               }'`'"'
+          else
+            gl_cv_next_unistd_h='<'unistd.h'>'
+          fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+     fi
+     NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'unistd.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_unistd_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  for gl_func in chown dup2 dup3 environ euidaccess faccessat fchdir fchownat     fsync ftruncate getcwd getdomainname getdtablesize getgroups     gethostname getlogin getlogin_r getpagesize getusershell setusershell     endusershell lchown link linkat lseek pipe2 pread pwrite readlink     readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat     usleep; do
+    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <unistd.h>
+/* Some systems declare various items in the wrong headers.  */
+#ifndef __GLIBC__
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdlib.h>
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+
+int
+main ()
+{
+#undef $gl_func
+  (void) $gl_func;
   ;
   return 0;
 }
@@ -43573,36 +46734,37 @@ $as_echo "$ac_try_echo") >&5
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  gl_cv_time_r_posix=yes
+  eval "$as_gl_Symbol=yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       gl_cv_time_r_posix=no
+       eval "$as_gl_Symbol=no"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_time_r_posix" >&5
-$as_echo "$gl_cv_time_r_posix" >&6; }
-  if test $gl_cv_time_r_posix = yes; then
-    REPLACE_LOCALTIME_R=0
-  else
-    REPLACE_LOCALTIME_R=1
-
-
-
-
+ac_res=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+     as_val=`eval 'as_val=${'$as_gl_Symbol'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
 
+                     eval ac_cv_have_decl_$gl_func=yes
+fi
 
+      done
 
 
-  gl_LIBOBJS="$gl_LIBOBJS time_r.$ac_objext"
+  # Code from module unistd-safer:
 
 
-  :
 
-  fi
 
 
 
@@ -43615,6 +46777,7 @@ $as_echo "$gl_cv_time_r_posix" >&6; }
 
 
 
+  gl_LIBOBJS="$gl_LIBOBJS dup-safer.$ac_objext"
 
 
 
@@ -43622,55 +46785,9 @@ $as_echo "$gl_cv_time_r_posix" >&6; }
 
 
 
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_unistd_h='<'unistd.h'>'
-     else
-       { $as_echo "$as_me:$LINENO: checking absolute name of <unistd.h>" >&5
-$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
-if test "${gl_cv_next_unistd_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
 
-          if test $ac_cv_header_unistd_h = yes; then
-            cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <unistd.h>
-
-_ACEOF
-                                                                                                case "$host_os" in
-              aix*) gl_absname_cpp="$ac_cpp -C" ;;
-              *)    gl_absname_cpp="$ac_cpp" ;;
-            esac
-                                                gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-               sed -n '\#/unistd.h#{
-                 s#.*"\(.*/unistd.h\)".*#\1#
-                 s#^/[^/]#//&#
-                 p
-                 q
-               }'`'"'
-          else
-            gl_cv_next_unistd_h='<'unistd.h'>'
-          fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_next_unistd_h" >&5
-$as_echo "$gl_cv_next_unistd_h" >&6; }
-     fi
-     NEXT_UNISTD_H=$gl_cv_next_unistd_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'unistd.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_unistd_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
 
+  gl_LIBOBJS="$gl_LIBOBJS fd-safer.$ac_objext"
 
 
 
@@ -43680,56 +46797,112 @@ $as_echo "$gl_cv_next_unistd_h" >&6; }
 
 
 
-  if test $ac_cv_header_unistd_h = yes; then
-    HAVE_UNISTD_H=1
-  else
-    HAVE_UNISTD_H=0
-  fi
+  gl_LIBOBJS="$gl_LIBOBJS pipe-safer.$ac_objext"
 
 
+  # Code from module unitypes:
 
 
+      if  { test "$HAVE_LIBUNISTRING" != yes \
+    || {
 
 
 
+            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0
+                         }
+                    }
+               }
 
 
 
 
+       }
+  }; then
+    LIBUNISTRING_UNITYPES_H='unitypes.h'
+  else
+    LIBUNISTRING_UNITYPES_H=
+  fi
 
 
+  # Code from module uniwidth/base:
 
 
+      if  { test "$HAVE_LIBUNISTRING" != yes \
+    || {
 
 
 
+            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0
+                         }
+                    }
+               }
 
 
 
 
+       }
+  }; then
+    LIBUNISTRING_UNIWIDTH_H='uniwidth.h'
+  else
+    LIBUNISTRING_UNIWIDTH_H=
+  fi
 
 
+  # Code from module uniwidth/width:
 
 
+       if  { test "$HAVE_LIBUNISTRING" != yes \
+    || {
 
 
 
+            test $LIBUNISTRING_VERSION_MAJOR -lt 0 \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0
+                         }
+                    }
+               }
 
 
 
 
+       }
+  }; then
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE=
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE='#'
+else
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE='#'
+  LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE=
+fi
 
 
+  # Code from module unlink:
 
 
 
 
-  for gl_func in chown dup2 dup3 environ euidaccess faccessat fchdir fchownat     fsync ftruncate getcwd getdomainname getdtablesize getgroups     gethostname getlogin getlogin_r getpagesize getusershell setusershell     endusershell lchown link linkat lseek pipe2 pread readlink readlinkat     rmdir sleep symlink symlinkat unlink unlinkat usleep; do
-    as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
-    { $as_echo "$as_me:$LINENO: checking whether $gl_func is declared without a macro" >&5
-$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if { as_var=$as_gl_Symbol; eval "test \"\${$as_var+set}\" = set"; }; then
+    { $as_echo "$as_me:$LINENO: checking whether unlink honors trailing slashes" >&5
+$as_echo_n "checking whether unlink honors trailing slashes... " >&6; }
+if test "${gl_cv_func_unlink_honors_slashes+set}" = set; then
   $as_echo_n "(cached) " >&6
+else
+  touch conftest.file
+     # Assume that if we have lstat, we can also check symlinks.
+     if test $ac_cv_func_lstat = yes; then
+       ln -s conftest.file conftest.lnk
+     fi
+     if test "$cross_compiling" = yes; then
+  gl_cv_func_unlink_honors_slashes="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -43738,123 +46911,87 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #include <unistd.h>
-/* Some systems declare various items in the wrong headers.  */
-#ifndef __GLIBC__
-# include <fcntl.h>
-# include <stdio.h>
-# include <stdlib.h>
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-#  include <io.h>
-# endif
-#endif
+           #include <errno.h>
 
 int
 main ()
 {
-#undef $gl_func
-  (void) $gl_func;
+if (!unlink ("conftest.file/") || errno != ENOTDIR) return 1;
+#if HAVE_LSTAT
+      if (!unlink ("conftest.lnk/") || errno != ENOTDIR) return 2;
+#endif
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_gl_Symbol=yes"
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gl_cv_func_unlink_honors_slashes=yes
 else
-  $as_echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_gl_Symbol=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+( exit $ac_status )
+gl_cv_func_unlink_honors_slashes=no
 fi
-ac_res=`eval 'as_val=${'$as_gl_Symbol'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-     as_val=`eval 'as_val=${'$as_gl_Symbol'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
-_ACEOF
-
-                     eval ac_cv_have_decl_$gl_func=yes
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
-      done
-
-
-
-
-
 
-
-
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS dup-safer.$ac_objext"
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS fd-safer.$ac_objext"
-
-
-
-
-
-
-
-
-
-  gl_LIBOBJS="$gl_LIBOBJS pipe-safer.$ac_objext"
-
-
-
-
-
-    { $as_echo "$as_me:$LINENO: checking whether unlink honors trailing slashes" >&5
-$as_echo_n "checking whether unlink honors trailing slashes... " >&6; }
-if test "${gl_cv_func_unlink_works+set}" = set; then
+     rm -f conftest.file conftest.lnk
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_unlink_honors_slashes" >&5
+$as_echo "$gl_cv_func_unlink_honors_slashes" >&6; }
+      { $as_echo "$as_me:$LINENO: checking whether unlink of a parent directory fails is it should" >&5
+$as_echo_n "checking whether unlink of a parent directory fails is it should... " >&6; }
+if test "${gl_cv_func_unlink_parent_fails+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  touch conftest.file
-     # Assume that if we have lstat, we can also check symlinks.
-     if test $ac_cv_func_lstat = yes; then
-       ln -s conftest.file conftest.lnk
-     fi
-     if test "$cross_compiling" = yes; then
-  gl_cv_func_unlink_works="guessing no"
+  case "$host_os" in
+       darwin*)
+                                                      if {
+              # Use the mktemp program if available. If not available, hide the error
+              # message.
+              tmp=`(umask 077 && mktemp -d /tmp/gtXXXXXX) 2>/dev/null` &&
+              test -n "$tmp" && test -d "$tmp"
+            } ||
+            {
+              # Use a simple mkdir command. It is guaranteed to fail if the directory
+              # already exists.  $RANDOM is bash specific and expands to empty in shells
+              # other than bash, ksh and zsh.  Its use does not increase security;
+              # rather, it minimizes the probability of failure in a very cluttered /tmp
+              # directory.
+              tmp=/tmp/gt$$-$RANDOM
+              (umask 077 && mkdir "$tmp")
+            }; then
+           mkdir "$tmp/subdir"
+           GL_SUBDIR_FOR_UNLINK="$tmp/subdir"
+           export GL_SUBDIR_FOR_UNLINK
+           if test "$cross_compiling" = yes; then
+  gl_cv_func_unlink_parent_fails="guessing no"
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -43862,20 +46999,16 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <unistd.h>
-           #include <errno.h>
 
-int
-main ()
-{
-if (!unlink ("conftest.file/") || errno != ENOTDIR) return 1;
-#if HAVE_LSTAT
-      if (!unlink ("conftest.lnk/") || errno != ENOTDIR) return 2;
-#endif
+                #include <stdlib.h>
+                #include <unistd.h>
+                int main ()
+                {
+                  if (chdir (getenv ("GL_SUBDIR_FOR_UNLINK")) != 0)
+                    return 1;
+                  return unlink ("..") == 0;
+                }
 
-  ;
-  return 0;
-}
 _ACEOF
 rm -f conftest$ac_exeext
 if { (ac_try="$ac_link"
@@ -43899,25 +47032,49 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  gl_cv_func_unlink_works=yes
+  gl_cv_func_unlink_parent_fails=yes
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-gl_cv_func_unlink_works=no
+gl_cv_func_unlink_parent_fails=no
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
-     rm -f conftest.file conftest.lnk
+           unset GL_SUBDIR_FOR_UNLINK
+           rm -rf "$tmp"
+         else
+           gl_cv_func_unlink_parent_fails="guessing no"
+         fi
+         ;;
+       *)
+         gl_cv_func_unlink_parent_fails="guessing yes"
+         ;;
+     esac
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_unlink_works" >&5
-$as_echo "$gl_cv_func_unlink_works" >&6; }
-  if test x"$gl_cv_func_unlink_works" != xyes; then
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_unlink_parent_fails" >&5
+$as_echo "$gl_cv_func_unlink_parent_fails" >&6; }
+  case "$gl_cv_func_unlink_parent_fails" in
+    *no)
+
+cat >>confdefs.h <<\_ACEOF
+#define UNLINK_PARENT_BUG 1
+_ACEOF
+
+      ;;
+  esac
+  if test "$gl_cv_func_unlink_honors_slashes" != yes \
+     || { case "$gl_cv_func_unlink_parent_fails" in
+            *yes) false;;
+            *no) true;;
+          esac
+        }; then
     REPLACE_UNLINK=1
 
 
@@ -43933,15 +47090,18 @@ $as_echo "$gl_cv_func_unlink_works" >&6; }
 
 
 
+
   GNULIB_UNLINK=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_UNLINK 1
+#define GNULIB_TEST_UNLINK 1
 _ACEOF
 
 
 
+  # Code from module unlinkdir:
 
 
 
@@ -43982,6 +47142,7 @@ _ACEOF
 ;;
   esac
 
+  # Code from module unlocked-io:
 
 
 cat >>confdefs.h <<\_ACEOF
@@ -44044,6 +47205,7 @@ _ACEOF
 
 
 
+  # Code from module unsetenv:
 
 
 
@@ -44180,6 +47342,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 extern
 #ifdef __cplusplus
@@ -44248,8 +47411,8 @@ _ACEOF
 
     fi
 
-        { $as_echo "$as_me:$LINENO: checking whether unsetenv works on duplicates" >&5
-$as_echo_n "checking whether unsetenv works on duplicates... " >&6; }
+            { $as_echo "$as_me:$LINENO: checking whether unsetenv obeys POSIX" >&5
+$as_echo_n "checking whether unsetenv obeys POSIX... " >&6; }
 if test "${gl_cv_func_unsetenv_works+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
@@ -44264,6 +47427,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
        #include <stdlib.h>
+       #include <errno.h>
 
 int
 main ()
@@ -44275,6 +47439,7 @@ main ()
        entry[0] = 'a';
        unsetenv ("a");
        if (getenv ("a")) return 3;
+       if (!unsetenv ("") || errno != EINVAL) return 4;
 
   ;
   return 0;
@@ -44336,15 +47501,18 @@ $as_echo "$gl_cv_func_unsetenv_works" >&6; }
 
 
 
+
   GNULIB_UNSETENV=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_UNSETENV 1
+#define GNULIB_TEST_UNSETENV 1
 _ACEOF
 
 
 
+  # Code from module utimens:
 
 
 
@@ -44428,29 +47596,192 @@ $as_echo "$ac_try_echo") >&5
   ac_status=$?
   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  gl_cv_func_futimesat_works=yes
+  gl_cv_func_futimesat_works=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_futimesat_works=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+      rm -f conftest.file
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_futimesat_works" >&5
+$as_echo "$gl_cv_func_futimesat_works" >&6; }
+    if test "$gl_cv_func_futimesat_works" != yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define FUTIMESAT_NULL_BUG 1
+_ACEOF
+
+    fi
+  fi
+
+  # Code from module utimensat:
+
+
+
+
+
+
+
+
+
+  if test $ac_cv_func_utimensat = no; then
+    HAVE_UTIMENSAT=0
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS utimensat.$ac_objext"
+
+  else
+    { $as_echo "$as_me:$LINENO: checking whether utimensat works" >&5
+$as_echo_n "checking whether utimensat works... " >&6; }
+if test "${gl_cv_func_utimensat_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+  gl_cv_func_utimensat_works="guessing no"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+int
+main ()
+{
+struct timespec ts[2] = { { 1, UTIME_OMIT }, { 1, UTIME_NOW } };
+      struct stat st;
+      const char *f = "conftest.file";
+      if (close (creat (f, 0600))) return 1;
+      if (utimensat (AT_FDCWD, f, NULL, AT_SYMLINK_NOFOLLOW)) return 2;
+      if (utimensat (AT_FDCWD, f, ts, 0)) return 3;
+      sleep (1);
+      ts[0].tv_nsec = UTIME_NOW;
+      ts[1].tv_nsec = UTIME_OMIT;
+      if (utimensat (AT_FDCWD, f, ts, 0)) return 4;
+      if (stat (f, &st)) return 5;
+      if (st.st_ctime < st.st_atime) return 6;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#ifdef __linux__
+/* The Linux kernel added utimensat in 2.6.22, but has bugs with UTIME_OMIT
+   in several file systems as recently as 2.6.32.  Always replace utimensat
+   to support older kernels.  */
+choke me
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  gl_cv_func_utimensat_works=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       gl_cv_func_utimensat_works="needs runtime check"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
   $as_echo "$as_me: program exited with status $ac_status" >&5
 $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 ( exit $ac_status )
-gl_cv_func_futimesat_works=no
+gl_cv_func_utimensat_works=no
 fi
 rm -rf conftest.dSYM
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
 
-      rm -f conftest.file
 fi
-{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_futimesat_works" >&5
-$as_echo "$gl_cv_func_futimesat_works" >&6; }
-    if test "$gl_cv_func_futimesat_works" != yes; then
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_utimensat_works" >&5
+$as_echo "$gl_cv_func_utimensat_works" >&6; }
+    if test "$gl_cv_func_utimensat_works" != yes; then
+      REPLACE_UTIMENSAT=1
+
 
-cat >>confdefs.h <<\_ACEOF
-#define FUTIMESAT_NULL_BUG 1
-_ACEOF
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS utimensat.$ac_objext"
 
     fi
   fi
@@ -44458,6 +47789,20 @@ _ACEOF
 
 
 
+  GNULIB_UTIMENSAT=1
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_TEST_UTIMENSAT 1
+_ACEOF
+
+
+
+  # Code from module vasnprintf:
+
+
+
 
 
 
@@ -44640,6 +47985,7 @@ fi
 
   fi
 
+  # Code from module vasprintf:
 
 
 for ac_func in vasprintf
@@ -44782,11 +48128,13 @@ done
 
 
 
+
   GNULIB_VASPRINTF=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_VASPRINTF 1
+#define GNULIB_TEST_VASPRINTF 1
 _ACEOF
 
 
@@ -44799,6 +48147,8 @@ _ACEOF
 
   XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=vasprintf:2:c-format"
 
+  # Code from module verify:
+  # Code from module version-etc:
 
 # Check whether --with-packager was given.
 if test "${with_packager+set}" = set; then
@@ -44852,6 +48202,8 @@ $as_echo "$as_me: error: The --with-packager-{bug-reports,version} options requi
    { (exit 1); exit 1; }; }
   fi
 
+  # Code from module version-etc-fsf:
+  # Code from module vsnprintf:
 
 
   gl_cv_func_vsnprintf_usable=no
@@ -45059,15 +48411,19 @@ $as_echo "$gl_cv_func_snprintf_size1" >&6; }
 
 
 
+
   GNULIB_VSNPRINTF=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_VSNPRINTF 1
+#define GNULIB_TEST_VSNPRINTF 1
 _ACEOF
 
 
 
+  # Code from module warn-on-use:
+  # Code from module wchar:
 
 
 
@@ -45242,6 +48598,7 @@ fi
       done
 
 
+  # Code from module wcrtomb:
 
 
 
@@ -45273,10 +48630,10 @@ if test "${gl_cv_func_mbrtowc_incomplete_state+set}" = set; then
 else
 
                   case "$host_os" in
-              # Guess no on AIX and OSF/1.
-        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
-              # Guess yes otherwise.
-        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
       esac
       if test $LOCALE_JA != none; then
         if test "$cross_compiling" = yes; then
@@ -45459,9 +48816,7 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   fi
 
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_WCRTOMB=1
-  fi
+
 
 
 
@@ -45470,27 +48825,29 @@ $as_echo "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
 
   if test $ac_cv_func_wcrtomb = no; then
     HAVE_WCRTOMB=0
-  fi
-  if test $HAVE_WCRTOMB != 0 && test $REPLACE_WCRTOMB != 1; then
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_WCRTOMB=1
+    else
 
 
 
 
 
-         { $as_echo "$as_me:$LINENO: checking whether wcrtomb return value is correct" >&5
+             { $as_echo "$as_me:$LINENO: checking whether wcrtomb return value is correct" >&5
 $as_echo_n "checking whether wcrtomb return value is correct... " >&6; }
 if test "${gl_cv_func_wcrtomb_retval+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-                        case "$host_os" in
-                                   # Guess no on AIX 4, OSF/1 and Solaris.
-          aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
-                                   # Guess yes otherwise.
-          *)                       gl_cv_func_wcrtomb_retval="guessing yes" ;;
-        esac
-        if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
-          if test "$cross_compiling" = yes; then
+                              case "$host_os" in
+                                     # Guess no on AIX 4, OSF/1 and Solaris.
+            aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
+                                     # Guess yes otherwise.
+            *)                       gl_cv_func_wcrtomb_retval="guessing yes" ;;
+          esac
+          if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
+            if test "$cross_compiling" = yes; then
   :
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -45565,15 +48922,16 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
 fi
 
 
-        fi
+          fi
 
 fi
 { $as_echo "$as_me:$LINENO: result: $gl_cv_func_wcrtomb_retval" >&5
 $as_echo "$gl_cv_func_wcrtomb_retval" >&6; }
-    case "$gl_cv_func_wcrtomb_retval" in
-      *yes) ;;
-      *) REPLACE_WCRTOMB=1 ;;
-    esac
+      case "$gl_cv_func_wcrtomb_retval" in
+        *yes) ;;
+        *) REPLACE_WCRTOMB=1 ;;
+      esac
+    fi
   fi
   if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then
 
@@ -45596,15 +48954,18 @@ $as_echo "$gl_cv_func_wcrtomb_retval" >&6; }
 
 
 
+
   GNULIB_WCRTOMB=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_WCRTOMB 1
+#define GNULIB_TEST_WCRTOMB 1
 _ACEOF
 
 
 
+  # Code from module wctype:
 
 
 
@@ -45629,6 +48990,30 @@ _ACEOF
 
 
 
+
+  if test $ac_cv_func_iswblank = yes; then
+    HAVE_ISWBLANK=1
+    REPLACE_ISWBLANK=0
+  else
+    HAVE_ISWBLANK=0
+    if test $ac_cv_have_decl_iswblank = yes; then
+      REPLACE_ISWBLANK=1
+    else
+      REPLACE_ISWBLANK=0
+    fi
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
   if test $gt_cv_c_wint_t = yes; then
     HAVE_WINT_T=1
   else
@@ -45822,6 +49207,7 @@ $as_echo "$gl_cv_next_wctype_h" >&6; }
   fi
 
 
+  # Code from module wcwidth:
 
 
 
@@ -45928,9 +49314,7 @@ fi
     HAVE_DECL_WCWIDTH=0
   fi
 
-  if test $ac_cv_func_wcwidth = no; then
-    REPLACE_WCWIDTH=1
-  else
+  if test $ac_cv_func_wcwidth = yes; then
                 { $as_echo "$as_me:$LINENO: checking whether wcwidth works reasonably in UTF-8 locales" >&5
 $as_echo_n "checking whether wcwidth works reasonably in UTF-8 locales... " >&6; }
 if test "${gl_cv_func_wcwidth_works+set}" = set; then
@@ -45940,9 +49324,9 @@ else
         if test "$cross_compiling" = yes; then
 
            case "$host_os" in
-                     # Guess yes on glibc systems.
-             *-gnu*) gl_cv_func_wcwidth_works="guessing yes";;
-             *)      gl_cv_func_wcwidth_works="guessing no";;
+                     # Guess yes on glibc and AIX 7 systems.
+             *-gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
+             *)                  gl_cv_func_wcwidth_works="guessing no";;
            esac
 
 else
@@ -46024,7 +49408,7 @@ $as_echo "$gl_cv_func_wcwidth_works" >&6; }
       *no) REPLACE_WCWIDTH=1 ;;
     esac
   fi
-  if test $REPLACE_WCWIDTH = 1; then
+  if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1; then
 
 
 
@@ -46036,8 +49420,8 @@ $as_echo "$gl_cv_func_wcwidth_works" >&6; }
   gl_LIBOBJS="$gl_LIBOBJS wcwidth.$ac_objext"
 
   fi
-
-  if test $REPLACE_WCWIDTH = 1 || test $HAVE_DECL_WCWIDTH = 0; then
+  if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1 \
+     || test $HAVE_DECL_WCWIDTH = 0; then
 
     :
 
@@ -46045,15 +49429,19 @@ $as_echo "$gl_cv_func_wcwidth_works" >&6; }
 
 
 
+
   GNULIB_WCWIDTH=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_WCWIDTH 1
+#define GNULIB_TEST_WCWIDTH 1
 _ACEOF
 
 
 
+  # Code from module write:
+
 
 
 
@@ -46063,12 +49451,14 @@ _ACEOF
   GNULIB_WRITE=1
 
 
+
 cat >>confdefs.h <<\_ACEOF
-#define GNULIB_WRITE 1
+#define GNULIB_TEST_WRITE 1
 _ACEOF
 
 
 
+  # Code from module xalloc:
 
 
 
@@ -46089,6 +49479,8 @@ _ACEOF
   :
 
 
+  # Code from module xalloc-die:
+  # Code from module xgetcwd:
 
 
 
@@ -46103,6 +49495,7 @@ _ACEOF
 
 
 
+  # Code from module xsize:
 
 
 
 done
 
 
+  # Code from module xstrndup:
 
 
   :
 
 
+  # Code from module xstrtol:
 
 
 
@@ -46295,6 +49690,8 @@ done
   gl_LIBOBJS="$gl_LIBOBJS xstrtol-error.$ac_objext"
 
 
+  # Code from module xstrtoumax:
+  # Code from module xvasprintf:
 
 
 
@@ -46302,6 +49699,7 @@ done
 
   XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=xasprintf:1:c-format"
 
+  # End of code from modules
 
 
 
@@ -46323,6 +49721,11 @@ done
 
 
   gl_source_base='tests'
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+
+  gl_module_indicator_condition=$gltests_WITNESS
+
+
 
 
 
@@ -46519,8 +49922,6 @@ fi
 
 
 
-
-
   # Set LIB_SETSOCKOPT to -lnsl -lsocket if necessary.
   pu_save_LIBS=$LIBS
   LIB_SETSOCKOPT=
 
 
 
-for ac_func in fsync getdtablesize lstat mkfifo readlink symlink setlocale utimes
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
 
-#undef $ac_func
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       eval "$as_ac_var=no"
-fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-                $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
-fi
-done
+
+
+
+
+
 
 { $as_echo "$as_me:$LINENO: checking whether getgrgid is declared" >&5
 $as_echo_n "checking whether getgrgid is declared... " >&6; }
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
 fi
 ac_prog=ld
 if test "$GCC" = yes; then
@@ -48543,7 +51857,7 @@ fi
       done
       if test -z "$already_handled"; then
         names_already_handled="$names_already_handled $name"
-                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
         eval value=\"\$HAVE_LIB$uppername\"
         if test -n "$value"; then
           if test "$value" = yes; then
@@ -48975,14 +52289,16 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 #include <iconv.h>
+
 int
 main ()
 {
 iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);
   ;
   return 0;
 }
@@ -49028,14 +52344,16 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 #include <iconv.h>
+
 int
 main ()
 {
 iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);
   ;
   return 0;
 }
@@ -49086,15 +52404,17 @@ if test "${am_cv_func_iconv_works+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-            am_save_LIBS="$LIBS"
+                  am_save_LIBS="$LIBS"
       if test $am_cv_lib_iconv = yes; then
         LIBS="$LIBS $LIBICONV"
       fi
       if test "$cross_compiling" = yes; then
-  case "$host_os" in
+
+         case "$host_os" in
            aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
            *)            am_cv_func_iconv_works="guessing yes" ;;
          esac
+
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -49145,6 +52465,24 @@ int main ()
           return 1;
       }
   }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        const char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          return 1;
+      }
+  }
 #if 0 /* This bug could be worked around by the caller.  */
   /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
   {
@@ -49324,6 +52662,7 @@ _ACEOF
   fi
 
 
+
 for ac_header in iconv.h
 do
 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -49606,7 +52945,7 @@ $as_echo "$USE_NLS" >&6; }
 
 
 
-      GETTEXT_MACRO_VERSION=0.17
+      GETTEXT_MACRO_VERSION=0.18
 
 
 
@@ -49614,15 +52953,14 @@ $as_echo "$USE_NLS" >&6; }
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
 fi
 
 # Find out how to test for executable files. Don't use a zero-byte file,
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
 fi
 
 # Find out how to test for executable files. Don't use a zero-byte file,
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
 fi
 
 # Find out how to test for executable files. Don't use a zero-byte file,
@@ -49911,6 +53247,7 @@ fi
 
 
 
+
 
 
     { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
@@ -50096,15 +53433,19 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <libintl.h>
 $gt_revision_test_code
 extern int _nl_msg_cat_cntr;
 extern int *_nl_domain_bindings;
+
 int
 main ()
 {
+
 bindtextdomain ("", "");
 return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+
   ;
   return 0;
 }
@@ -50192,14 +53533,16 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 #include <iconv.h>
+
 int
 main ()
 {
 iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);
   ;
   return 0;
 }
@@ -50245,14 +53588,16 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 #include <iconv.h>
+
 int
 main ()
 {
 iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);
   ;
   return 0;
 }
@@ -50303,15 +53648,17 @@ if test "${am_cv_func_iconv_works+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
 
-            am_save_LIBS="$LIBS"
+                  am_save_LIBS="$LIBS"
       if test $am_cv_lib_iconv = yes; then
         LIBS="$LIBS $LIBICONV"
       fi
       if test "$cross_compiling" = yes; then
-  case "$host_os" in
+
+         case "$host_os" in
            aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
            *)            am_cv_func_iconv_works="guessing yes" ;;
          esac
+
 else
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -50362,6 +53709,24 @@ int main ()
           return 1;
       }
   }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        const char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          return 1;
+      }
+  }
 #if 0 /* This bug could be worked around by the caller.  */
   /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
   {
@@ -50539,7 +53904,7 @@ fi
       done
       if test -z "$already_handled"; then
         names_already_handled="$names_already_handled $name"
-                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
         eval value=\"\$HAVE_LIB$uppername\"
         if test -n "$value"; then
           if test "$value" = yes; then
@@ -50941,6 +54306,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <libintl.h>
 $gt_revision_test_code
 extern int _nl_msg_cat_cntr;
@@ -50949,11 +54315,14 @@ extern
 "C"
 #endif
 const char *_nl_expand_alias (const char *);
+
 int
 main ()
 {
+
 bindtextdomain ("", "");
 return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+
   ;
   return 0;
 }
@@ -50998,6 +54367,7 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+
 #include <libintl.h>
 $gt_revision_test_code
 extern int _nl_msg_cat_cntr;
@@ -51006,11 +54376,14 @@ extern
 "C"
 #endif
 const char *_nl_expand_alias (const char *);
+
 int
 main ()
 {
+
 bindtextdomain ("", "");
 return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+
   ;
   return 0;
 }
@@ -51037,8 +54410,8 @@ $as_echo "$ac_try_echo") >&5
         $as_test_x conftest$ac_exeext
        }; then
   LIBINTL="$LIBINTL $LIBICONV"
-                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                eval "$gt_func_gnugettext_libintl=yes"
+                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                 eval "$gt_func_gnugettext_libintl=yes"
 
 else
   $as_echo "$as_me: failed program was:" >&5
@@ -51326,6 +54699,13 @@ if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"GL_COND_LIBTOOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
 $as_echo "$as_me: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -51683,7 +55063,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GNU tar $as_me 1.23, which was
+This file was extended by GNU tar $as_me 1.24, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -51746,7 +55126,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-GNU tar config.status 1.23
+GNU tar config.status 1.24
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
index 5535b7097a97ef382d9107959b0da189ebc1d85f..1de1ed3b4686d5795141fead454e7513cebcebe6 100644 (file)
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301, USA.
 
-AC_INIT([GNU tar], [1.23], [bug-tar@gnu.org])
+AC_INIT([GNU tar], [1.24], [bug-tar@gnu.org])
 AC_CONFIG_SRCDIR([src/tar.c])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([config.h])
 AC_PREREQ([2.63])
-AM_INIT_AUTOMAKE([1.11 gnits tar-ustar dist-bzip2 dist-shar std-options silent-rules])
+AM_INIT_AUTOMAKE([1.11 gnits tar-ustar dist-bzip2 dist-xz dist-shar std-options silent-rules])
 
 # Enable silent rules by default:
 AM_SILENT_RULES([yes])
@@ -40,8 +40,8 @@ AC_ISC_POSIX
 AC_C_INLINE
 
 AC_CHECK_HEADERS_ONCE(fcntl.h linux/fd.h memory.h net/errno.h \
-  sgtty.h string.h stropts.h \
-  sys/param.h sys/device.h sys/filio.h sys/gentape.h \
+  sgtty.h string.h \
+  sys/param.h sys/device.h sys/gentape.h \
   sys/inet.h sys/io/trioctl.h \
   sys/mtio.h sys/time.h sys/tprintf.h sys/tape.h \
   unistd.h locale.h)
@@ -90,7 +90,7 @@ gl_INIT
 # paxutils modules
 tar_PAXUTILS
 
-AC_CHECK_FUNCS(fsync getdtablesize lstat mkfifo readlink symlink setlocale utimes)
+AC_CHECK_FUNCS_ONCE([fchmod fchown fsync lstat mkfifo readlink symlink])
 AC_CHECK_DECLS([getgrgid],,, [#include <grp.h>])
 AC_CHECK_DECLS([getpwuid],,, [#include <pwd.h>])
 AC_CHECK_DECLS([time],,, [#include <time.h>])
index ec771ca2908748fd094d81e6efa8e2b19b18b288..205a1ad8e3bf9acdb64afaff468b6bc3e2c28583 100644 (file)
@@ -24,9 +24,9 @@ tar_TEXINFOS = \
  fdl.texi\
  freemanuals.texi\
  genfile.texi\
- getdate.texi\
  header.texi\
  intern.texi\
+ parse-datetime.texi\
  rendition.texi\
  snapshot.texi\
  sparse.texi\
@@ -124,7 +124,7 @@ check-unrevised:
 
 all-check-docs: check-format check-options check-refs check-fixmes check-unrevised
 
-check-docs: 
+check-docs:
        $(MAKE) -k all-check-docs
 
 #
@@ -144,4 +144,3 @@ manual:
         MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \
         TEXI2DVI="$(TEXI2DVI) -t @finalout" \
        $(GENDOCS) --texi2html tar 'GNU tar manual'
-
index fe32c188ba055ad2bdc9c2a3e2fe92e394ee48db..471f868c972e130216191cbefa8c9d51e11e5514 100644 (file)
@@ -44,11 +44,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -61,17 +61,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -81,54 +81,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -194,6 +201,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -291,6 +299,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -346,10 +355,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -374,6 +385,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -390,11 +402,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -412,20 +429,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -433,7 +453,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -449,12 +468,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -466,25 +488,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -494,18 +520,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -522,6 +551,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -538,8 +568,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -554,6 +587,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -572,6 +606,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -638,21 +674,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -675,6 +714,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -682,6 +722,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -707,7 +748,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -719,17 +762,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -799,6 +846,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -834,9 +882,9 @@ tar_TEXINFOS = \
  fdl.texi\
  freemanuals.texi\
  genfile.texi\
- getdate.texi\
  header.texi\
  intern.texi\
+ parse-datetime.texi\
  rendition.texi\
  snapshot.texi\
  sparse.texi\
@@ -1367,7 +1415,7 @@ check-unrevised:
 
 all-check-docs: check-format check-options check-refs check-fixmes check-unrevised
 
-check-docs: 
+check-docs:
        $(MAKE) -k all-check-docs
 
 #
index faf9ca22f6d8a83444e88463e2671befdaafcbd9..7af3ba7cced4880fa0c917e7bcaf9b025cb5a944 100644 (file)
@@ -16,7 +16,7 @@ dumped directory in special data blocks called @dfn{dumpdirs}.
 @noindent
 where @var{C} is one of the @dfn{control codes} described below,
 @var{filename} is the name of the file @var{C} operates upon, and
-@samp{\0} represents a nul character (ASCII 0).  The white space 
+@samp{\0} represents a nul character (ASCII 0).  The white space
 characters were added for readability, real dumpdirs do not contain
 them.
 
@@ -68,7 +68,7 @@ directory}.  For example, consider the following scenario:
 @enumerate 1
 @item
 Previous run dumped a directory @file{foo} which contained the
-following three directories: 
+following three directories:
 
 @smallexample
 a
@@ -93,7 +93,7 @@ New incremental dump was made.
 renaming @file{a} to @file{b} will destroy the existing directory.
 To correctly process it, @GNUTAR{} needs a temporary directory, so
 it creates the following dumpdir (newlines have been added for
-readability): 
+readability):
 
 @smallexample
 @group
@@ -114,7 +114,7 @@ work as usual, and, finally, the last command, @samp{R\0Tfoo/a\0}
 tells tar to rename the temporary directory to @file{foo/a}.
 
   The exact placement of a dumpdir in the archive depends on the
-archive format (@pxref{Formats}): 
+archive format (@pxref{Formats}):
 
 @itemize
 @item PAX archives
index fe78df8d5399bef64eb6ffb539f3b2b19e9c521e..fc19ddddfa7c49ef07387f17d588541b2525d8c5 100644 (file)
@@ -1,13 +1,12 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
 
-@node GNU Free Documentation License
-@appendixsec GNU Free Documentation License
-
-@cindex FDL, GNU Free Documentation License
-@center Version 1.2, November 2002
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
 
 @display
-Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
@@ -93,16 +92,16 @@ An image format is not Transparent if used for any substantial amount
 of text.  A copy that is not ``Transparent'' is called ``Opaque''.
 
 Examples of suitable formats for Transparent copies include plain
-@sc{ascii} without markup, Texinfo input format, La@TeX{} input
-format, @acronym{SGML} or @acronym{XML} using a publicly available
-@acronym{DTD}, and standard-conforming simple @acronym{HTML},
-PostScript or @acronym{PDF} designed for human modification.  Examples
-of transparent image formats include @acronym{PNG}, @acronym{XCF} and
-@acronym{JPG}.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, @acronym{SGML} or
-@acronym{XML} for which the @acronym{DTD} and/or processing tools are
-not generally available, and the machine-generated @acronym{HTML},
-PostScript or @acronym{PDF} produced by some word processors for
+ASCII without markup, Texinfo input format, La@TeX{} input
+format, SGML or XML using a publicly available
+DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification.  Examples
+of transparent image formats include PNG, XCF and
+JPG.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, SGML or
+XML for which the DTD and/or processing tools are
+not generally available, and the machine-generated HTML,
+PostScript or PDF produced by some word processors for
 output purposes only.
 
 The ``Title Page'' means, for a printed book, the title page itself,
@@ -112,6 +111,9 @@ formats which do not have any title page as such, ``Title Page'' means
 the text near the most prominent appearance of the work's title,
 preceding the beginning of the body of the text.
 
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
 A section ``Entitled XYZ'' means a named subunit of the Document whose
 title either is precisely XYZ or contains XYZ in parentheses following
 text that translates XYZ in another language.  (Here XYZ stands for a
@@ -380,13 +382,30 @@ title.
 @item
 TERMINATION
 
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
 
 @item
 FUTURE REVISIONS OF THIS LICENSE
@@ -404,11 +423,46 @@ following the terms and conditions either of that specified version or
 of any later version that has been published (not as a draft) by the
 Free Software Foundation.  If the Document does not specify a version
 number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
 @end enumerate
 
 @page
-@appendixsubsec ADDENDUM: How to use this License for your documents
+@heading ADDENDUM: How to use this License for your documents
 
 To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
@@ -418,7 +472,7 @@ license notices just after the title page:
 @group
   Copyright (C)  @var{year}  @var{your name}.
   Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.2
+  under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
@@ -427,7 +481,7 @@ license notices just after the title page:
 @end smallexample
 
 If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the ``with...Texts.'' line with this:
+replace the ``with@dots{}Texts.'' line with this:
 
 @smallexample
 @group
index 2f989ed83071e4c6848a671feffde14b659add91..1bdd5b018d8772cbd55b3a6c88981ab37b0aa97a 100755 (executable)
@@ -36,7 +36,7 @@
 <p>The manual for %%PACKAGE%% is available in the following formats:</p>
 
 <ul>
-  <li><a href="%%PACKAGE%%.html">HTML 
+  <li><a href="%%PACKAGE%%.html">HTML
       (%%HTML_MONO_SIZE%%K bytes)</a> - entirely on one web page.</li>
   <li><a href="html_node/index.html">HTML</a> - with one web page per
       node.</li>
@@ -49,7 +49,7 @@
       chapter.</li>
 %%ENDIF HTML_CHAPTER%%
   <li><a href="%%PACKAGE%%.html.gz">HTML compressed
-      (%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on 
+      (%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on
       one web page.</li>
   <li><a href="%%PACKAGE%%.html_node.tar.gz">HTML compressed
       (%%HTML_NODE_TGZ_SIZE%%K gzipped tar file)</a> -
@@ -96,9 +96,9 @@ Return to the <a href="/home.html">GNU Project home page</a>.
 </p>
 
 <p>
-Please send FSF &amp; GNU inquiries to 
+Please send FSF &amp; GNU inquiries to
 <a href="mailto:gnu@gnu.org"><em>gnu@gnu.org</em></a>.
-There are also <a href="/home.html#ContactInfo">other ways to contact</a> 
+There are also <a href="/home.html#ContactInfo">other ways to contact</a>
 the FSF.
 <br />
 Please send broken links and other corrections (or suggestions) to
diff --git a/doc/getdate.texi b/doc/getdate.texi
deleted file mode 100644 (file)
index 48e8b68..0000000
+++ /dev/null
@@ -1,556 +0,0 @@
-@c GNU date syntax documentation
-
-@c Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-
-@c Permission is granted to copy, distribute and/or modify this document
-@c under the terms of the GNU Free Documentation License, Version 1.3 or
-@c any later version published by the Free Software Foundation; with no
-@c Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
-@c Texts.  A copy of the license is included in the ``GNU Free
-@c Documentation License'' file as part of this distribution.
-
-@node Date input formats
-@chapter Date input formats
-
-@cindex date input formats
-@findex get_date
-
-First, a quote:
-
-@quotation
-Our units of temporal measurement, from seconds on up to months, are so
-complicated, asymmetrical and disjunctive so as to make coherent mental
-reckoning in time all but impossible.  Indeed, had some tyrannical god
-contrived to enslave our minds to time, to make it all but impossible
-for us to escape subjection to sodden routines and unpleasant surprises,
-he could hardly have done better than handing down our present system.
-It is like a set of trapezoidal building blocks, with no vertical or
-horizontal surfaces, like a language in which the simplest thought
-demands ornate constructions, useless particles and lengthy
-circumlocutions.  Unlike the more successful patterns of language and
-science, which enable us to face experience boldly or at least
-level-headedly, our system of temporal calculation silently and
-persistently encourages our terror of time.
-
-@dots{}  It is as though architects had to measure length in feet, width
-in meters and height in ells; as though basic instruction manuals
-demanded a knowledge of five different languages.  It is no wonder then
-that we often look into our own immediate past or future, last Tuesday
-or a week from Sunday, with feelings of helpless confusion.  @dots{}
-
---- Robert Grudin, @cite{Time and the Art of Living}.
-@end quotation
-
-This section describes the textual date representations that @sc{gnu}
-programs accept.  These are the strings you, as a user, can supply as
-arguments to the various programs.  The C interface (via the
-@code{get_date} function) is not described here.
-
-@menu
-* General date syntax::            Common rules.
-* Calendar date items::            19 Dec 1994.
-* Time of day items::              9:20pm.
-* Time zone items::                @sc{est}, @sc{pdt}, @sc{gmt}.
-* Day of week items::              Monday and others.
-* Relative items in date strings:: next tuesday, 2 years ago.
-* Pure numbers in date strings::   19931219, 1440.
-* Seconds since the Epoch::        @@1078100502.
-* Specifying time zone rules::     TZ="America/New_York", TZ="UTC0".
-* Authors of get_date::            Bellovin, Eggert, Salz, Berets, et al.
-@end menu
-
-
-@node General date syntax
-@section General date syntax
-
-@cindex general date syntax
-
-@cindex items in date strings
-A @dfn{date} is a string, possibly empty, containing many items
-separated by whitespace.  The whitespace may be omitted when no
-ambiguity arises.  The empty string means the beginning of today (i.e.,
-midnight).  Order of the items is immaterial.  A date string may contain
-many flavors of items:
-
-@itemize @bullet
-@item calendar date items
-@item time of day items
-@item time zone items
-@item day of the week items
-@item relative items
-@item pure numbers.
-@end itemize
-
-@noindent We describe each of these item types in turn, below.
-
-@cindex numbers, written-out
-@cindex ordinal numbers
-@findex first @r{in date strings}
-@findex next @r{in date strings}
-@findex last @r{in date strings}
-A few ordinal numbers may be written out in words in some contexts.  This is
-most useful for specifying day of the week items or relative items (see
-below).  Among the most commonly used ordinal numbers, the word
-@samp{last} stands for @math{-1}, @samp{this} stands for 0, and
-@samp{first} and @samp{next} both stand for 1.  Because the word
-@samp{second} stands for the unit of time there is no way to write the
-ordinal number 2, but for convenience @samp{third} stands for 3,
-@samp{fourth} for 4, @samp{fifth} for 5,
-@samp{sixth} for 6, @samp{seventh} for 7, @samp{eighth} for 8,
-@samp{ninth} for 9, @samp{tenth} for 10, @samp{eleventh} for 11 and
-@samp{twelfth} for 12.
-
-@cindex months, written-out
-When a month is written this way, it is still considered to be written
-numerically, instead of being ``spelled in full''; this changes the
-allowed strings.
-
-@cindex language, in dates
-In the current implementation, only English is supported for words and
-abbreviations like @samp{AM}, @samp{DST}, @samp{EST}, @samp{first},
-@samp{January}, @samp{Sunday}, @samp{tomorrow}, and @samp{year}.
-
-@cindex language, in dates
-@cindex time zone item
-The output of the @command{date} command
-is not always acceptable as a date string,
-not only because of the language problem, but also because there is no
-standard meaning for time zone items like @samp{IST}.  When using
-@command{date} to generate a date string intended to be parsed later,
-specify a date format that is independent of language and that does not
-use time zone items other than @samp{UTC} and @samp{Z}.  Here are some
-ways to do this:
-
-@example
-$ LC_ALL=C TZ=UTC0 date
-Mon Mar  1 00:21:42 UTC 2004
-$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
-2004-03-01 00:21:42Z
-$ date --iso-8601=ns | tr T ' '  # --iso-8601 is a GNU extension.
-2004-02-29 16:21:42,692722128-0800
-$ date --rfc-2822  # a GNU extension
-Sun, 29 Feb 2004 16:21:42 -0800
-$ date +'%Y-%m-%d %H:%M:%S %z'  # %z is a GNU extension.
-2004-02-29 16:21:42 -0800
-$ date +'@@%s.%N'  # %s and %N are GNU extensions.
-@@1078100502.692722128
-@end example
-
-@cindex case, ignored in dates
-@cindex comments, in dates
-Alphabetic case is completely ignored in dates.  Comments may be introduced
-between round parentheses, as long as included parentheses are properly
-nested.  Hyphens not followed by a digit are currently ignored.  Leading
-zeros on numbers are ignored.
-
-Invalid dates like @samp{2005-02-29} or times like @samp{24:00} are
-rejected.  In the typical case of a host that does not support leap
-seconds, a time like @samp{23:59:60} is rejected even if it
-corresponds to a valid leap second.
-
-
-@node Calendar date items
-@section Calendar date items
-
-@cindex calendar date item
-
-A @dfn{calendar date item} specifies a day of the year.  It is
-specified differently, depending on whether the month is specified
-numerically or literally.  All these strings specify the same calendar date:
-
-@example
-1972-09-24     # @sc{iso} 8601.
-72-9-24        # Assume 19xx for 69 through 99,
-               # 20xx for 00 through 68.
-72-09-24       # Leading zeros are ignored.
-9/24/72        # Common U.S. writing.
-24 September 1972
-24 Sept 72     # September has a special abbreviation.
-24 Sep 72      # Three-letter abbreviations always allowed.
-Sep 24, 1972
-24-sep-72
-24sep72
-@end example
-
-The year can also be omitted.  In this case, the last specified year is
-used, or the current year if none.  For example:
-
-@example
-9/24
-sep 24
-@end example
-
-Here are the rules.
-
-@cindex @sc{iso} 8601 date format
-@cindex date format, @sc{iso} 8601
-For numeric months, the @sc{iso} 8601 format
-@samp{@var{year}-@var{month}-@var{day}} is allowed, where @var{year} is
-any positive number, @var{month} is a number between 01 and 12, and
-@var{day} is a number between 01 and 31.  A leading zero must be present
-if a number is less than ten.  If @var{year} is 68 or smaller, then 2000
-is added to it; otherwise, if @var{year} is less than 100,
-then 1900 is added to it.  The construct
-@samp{@var{month}/@var{day}/@var{year}}, popular in the United States,
-is accepted.  Also @samp{@var{month}/@var{day}}, omitting the year.
-
-@cindex month names in date strings
-@cindex abbreviations for months
-Literal months may be spelled out in full: @samp{January},
-@samp{February}, @samp{March}, @samp{April}, @samp{May}, @samp{June},
-@samp{July}, @samp{August}, @samp{September}, @samp{October},
-@samp{November} or @samp{December}.  Literal months may be abbreviated
-to their first three letters, possibly followed by an abbreviating dot.
-It is also permitted to write @samp{Sept} instead of @samp{September}.
-
-When months are written literally, the calendar date may be given as any
-of the following:
-
-@example
-@var{day} @var{month} @var{year}
-@var{day} @var{month}
-@var{month} @var{day} @var{year}
-@var{day}-@var{month}-@var{year}
-@end example
-
-Or, omitting the year:
-
-@example
-@var{month} @var{day}
-@end example
-
-
-@node Time of day items
-@section Time of day items
-
-@cindex time of day item
-
-A @dfn{time of day item} in date strings specifies the time on a given
-day.  Here are some examples, all of which represent the same time:
-
-@example
-20:02:00.000000
-20:02
-8:02pm
-20:02-0500      # In @sc{est} (U.S. Eastern Standard Time).
-@end example
-
-More generally, the time of day may be given as
-@samp{@var{hour}:@var{minute}:@var{second}}, where @var{hour} is
-a number between 0 and 23, @var{minute} is a number between 0 and
-59, and @var{second} is a number between 0 and 59 possibly followed by
-@samp{.} or @samp{,} and a fraction containing one or more digits.
-Alternatively,
-@samp{:@var{second}} can be omitted, in which case it is taken to
-be zero.  On the rare hosts that support leap seconds, @var{second}
-may be 60.
-
-@findex am @r{in date strings}
-@findex pm @r{in date strings}
-@findex midnight @r{in date strings}
-@findex noon @r{in date strings}
-If the time is followed by @samp{am} or @samp{pm} (or @samp{a.m.}
-or @samp{p.m.}), @var{hour} is restricted to run from 1 to 12, and
-@samp{:@var{minute}} may be omitted (taken to be zero).  @samp{am}
-indicates the first half of the day, @samp{pm} indicates the second
-half of the day.  In this notation, 12 is the predecessor of 1:
-midnight is @samp{12am} while noon is @samp{12pm}.
-(This is the zero-oriented interpretation of @samp{12am} and @samp{12pm},
-as opposed to the old tradition derived from Latin
-which uses @samp{12m} for noon and @samp{12pm} for midnight.)
-
-@cindex time zone correction
-@cindex minutes, time zone correction by
-The time may alternatively be followed by a time zone correction,
-expressed as @samp{@var{s}@var{hh}@var{mm}}, where @var{s} is @samp{+}
-or @samp{-}, @var{hh} is a number of zone hours and @var{mm} is a number
-of zone minutes.
-The zone minutes term, @var{mm}, may be omitted, in which case
-the one- or two-digit correction is interpreted as a number of hours.
-You can also separate @var{hh} from @var{mm} with a colon.
-When a time zone correction is given this way, it
-forces interpretation of the time relative to
-Coordinated Universal Time (@sc{utc}), overriding any previous
-specification for the time zone or the local time zone.  For example,
-@samp{+0530} and @samp{+05:30} both stand for the time zone 5.5 hours
-ahead of @sc{utc} (e.g., India).
-This is the best way to
-specify a time zone correction by fractional parts of an hour.
-The maximum zone correction is 24 hours.
-
-Either @samp{am}/@samp{pm} or a time zone correction may be specified,
-but not both.
-
-
-@node Time zone items
-@section Time zone items
-
-@cindex time zone item
-
-A @dfn{time zone item} specifies an international time zone, indicated
-by a small set of letters, e.g., @samp{UTC} or @samp{Z}
-for Coordinated Universal
-Time.  Any included periods are ignored.  By following a
-non-daylight-saving time zone by the string @samp{DST} in a separate
-word (that is, separated by some white space), the corresponding
-daylight saving time zone may be specified.
-Alternatively, a non-daylight-saving time zone can be followed by a
-time zone correction, to add the two values.  This is normally done
-only for @samp{UTC}; for example, @samp{UTC+05:30} is equivalent to
-@samp{+05:30}.
-
-Time zone items other than @samp{UTC} and @samp{Z}
-are obsolescent and are not recommended, because they
-are ambiguous; for example, @samp{EST} has a different meaning in
-Australia than in the United States.  Instead, it's better to use
-unambiguous numeric time zone corrections like @samp{-0500}, as
-described in the previous section.
-
-If neither a time zone item nor a time zone correction is supplied,
-time stamps are interpreted using the rules of the default time zone
-(@pxref{Specifying time zone rules}).
-
-
-@node Day of week items
-@section Day of week items
-
-@cindex day of week item
-
-The explicit mention of a day of the week will forward the date
-(only if necessary) to reach that day of the week in the future.
-
-Days of the week may be spelled out in full: @samp{Sunday},
-@samp{Monday}, @samp{Tuesday}, @samp{Wednesday}, @samp{Thursday},
-@samp{Friday} or @samp{Saturday}.  Days may be abbreviated to their
-first three letters, optionally followed by a period.  The special
-abbreviations @samp{Tues} for @samp{Tuesday}, @samp{Wednes} for
-@samp{Wednesday} and @samp{Thur} or @samp{Thurs} for @samp{Thursday} are
-also allowed.
-
-@findex next @var{day}
-@findex last @var{day}
-A number may precede a day of the week item to move forward
-supplementary weeks.  It is best used in expression like @samp{third
-monday}.  In this context, @samp{last @var{day}} or @samp{next
-@var{day}} is also acceptable; they move one week before or after
-the day that @var{day} by itself would represent.
-
-A comma following a day of the week item is ignored.
-
-
-@node Relative items in date strings
-@section Relative items in date strings
-
-@cindex relative items in date strings
-@cindex displacement of dates
-
-@dfn{Relative items} adjust a date (or the current date if none) forward
-or backward.  The effects of relative items accumulate.  Here are some
-examples:
-
-@example
-1 year
-1 year ago
-3 years
-2 days
-@end example
-
-@findex year @r{in date strings}
-@findex month @r{in date strings}
-@findex fortnight @r{in date strings}
-@findex week @r{in date strings}
-@findex day @r{in date strings}
-@findex hour @r{in date strings}
-@findex minute @r{in date strings}
-The unit of time displacement may be selected by the string @samp{year}
-or @samp{month} for moving by whole years or months.  These are fuzzy
-units, as years and months are not all of equal duration.  More precise
-units are @samp{fortnight} which is worth 14 days, @samp{week} worth 7
-days, @samp{day} worth 24 hours, @samp{hour} worth 60 minutes,
-@samp{minute} or @samp{min} worth 60 seconds, and @samp{second} or
-@samp{sec} worth one second.  An @samp{s} suffix on these units is
-accepted and ignored.
-
-@findex ago @r{in date strings}
-The unit of time may be preceded by a multiplier, given as an optionally
-signed number.  Unsigned numbers are taken as positively signed.  No
-number at all implies 1 for a multiplier.  Following a relative item by
-the string @samp{ago} is equivalent to preceding the unit by a
-multiplier with value @math{-1}.
-
-@findex day @r{in date strings}
-@findex tomorrow @r{in date strings}
-@findex yesterday @r{in date strings}
-The string @samp{tomorrow} is worth one day in the future (equivalent
-to @samp{day}), the string @samp{yesterday} is worth
-one day in the past (equivalent to @samp{day ago}).
-
-@findex now @r{in date strings}
-@findex today @r{in date strings}
-@findex this @r{in date strings}
-The strings @samp{now} or @samp{today} are relative items corresponding
-to zero-valued time displacement, these strings come from the fact
-a zero-valued time displacement represents the current time when not
-otherwise changed by previous items.  They may be used to stress other
-items, like in @samp{12:00 today}.  The string @samp{this} also has
-the meaning of a zero-valued time displacement, but is preferred in
-date strings like @samp{this thursday}.
-
-When a relative item causes the resulting date to cross a boundary
-where the clocks were adjusted, typically for daylight saving time,
-the resulting date and time are adjusted accordingly.
-
-The fuzz in units can cause problems with relative items.  For
-example, @samp{2003-07-31 -1 month} might evaluate to 2003-07-01,
-because 2003-06-31 is an invalid date.  To determine the previous
-month more reliably, you can ask for the month before the 15th of the
-current month.  For example:
-
-@example
-$ date -R
-Thu, 31 Jul 2003 13:02:39 -0700
-$ date --date='-1 month' +'Last month was %B?'
-Last month was July?
-$ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
-Last month was June!
-@end example
-
-Also, take care when manipulating dates around clock changes such as
-daylight saving leaps.  In a few cases these have added or subtracted
-as much as 24 hours from the clock, so it is often wise to adopt
-universal time by setting the @env{TZ} environment variable to
-@samp{UTC0} before embarking on calendrical calculations.
-
-@node Pure numbers in date strings
-@section Pure numbers in date strings
-
-@cindex pure numbers in date strings
-
-The precise interpretation of a pure decimal number depends
-on the context in the date string.
-
-If the decimal number is of the form @var{yyyy}@var{mm}@var{dd} and no
-other calendar date item (@pxref{Calendar date items}) appears before it
-in the date string, then @var{yyyy} is read as the year, @var{mm} as the
-month number and @var{dd} as the day of the month, for the specified
-calendar date.
-
-If the decimal number is of the form @var{hh}@var{mm} and no other time
-of day item appears before it in the date string, then @var{hh} is read
-as the hour of the day and @var{mm} as the minute of the hour, for the
-specified time of day.  @var{mm} can also be omitted.
-
-If both a calendar date and a time of day appear to the left of a number
-in the date string, but no relative item, then the number overrides the
-year.
-
-
-@node Seconds since the Epoch
-@section Seconds since the Epoch
-
-If you precede a number with @samp{@@}, it represents an internal time
-stamp as a count of seconds.  The number can contain an internal
-decimal point (either @samp{.} or @samp{,}); any excess precision not
-supported by the internal representation is truncated toward minus
-infinity.  Such a number cannot be combined with any other date
-item, as it specifies a complete time stamp.
-
-@cindex beginning of time, for @acronym{POSIX}
-@cindex epoch, for @acronym{POSIX}
-Internally, computer times are represented as a count of seconds since
-an epoch---a well-defined point of time.  On @acronym{GNU} and
-@acronym{POSIX} systems, the epoch is 1970-01-01 00:00:00 @sc{utc}, so
-@samp{@@0} represents this time, @samp{@@1} represents 1970-01-01
-00:00:01 @sc{utc}, and so forth.  @acronym{GNU} and most other
-@acronym{POSIX}-compliant systems support such times as an extension
-to @acronym{POSIX}, using negative counts, so that @samp{@@-1}
-represents 1969-12-31 23:59:59 @sc{utc}.
-
-Traditional Unix systems count seconds with 32-bit two's-complement
-integers and can represent times from 1901-12-13 20:45:52 through
-2038-01-19 03:14:07 @sc{utc}.  More modern systems use 64-bit counts
-of seconds with nanosecond subcounts, and can represent all the times
-in the known lifetime of the universe to a resolution of 1 nanosecond.
-
-On most hosts, these counts ignore the presence of leap seconds.
-For example, on most hosts @samp{@@915148799} represents 1998-12-31
-23:59:59 @sc{utc}, @samp{@@915148800} represents 1999-01-01 00:00:00
-@sc{utc}, and there is no way to represent the intervening leap second
-1998-12-31 23:59:60 @sc{utc}.
-
-@node Specifying time zone rules
-@section Specifying time zone rules
-
-@vindex TZ
-Normally, dates are interpreted using the rules of the current time
-zone, which in turn are specified by the @env{TZ} environment
-variable, or by a system default if @env{TZ} is not set.  To specify a
-different set of default time zone rules that apply just to one date,
-start the date with a string of the form @samp{TZ="@var{rule}"}.  The
-two quote characters (@samp{"}) must be present in the date, and any
-quotes or backslashes within @var{rule} must be escaped by a
-backslash.
-
-For example, with the @acronym{GNU} @command{date} command you can
-answer the question ``What time is it in New York when a Paris clock
-shows 6:30am on October 31, 2004?'' by using a date beginning with
-@samp{TZ="Europe/Paris"} as shown in the following shell transcript:
-
-@example
-$ export TZ="America/New_York"
-$ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
-Sun Oct 31 01:30:00 EDT 2004
-@end example
-
-In this example, the @option{--date} operand begins with its own
-@env{TZ} setting, so the rest of that operand is processed according
-to @samp{Europe/Paris} rules, treating the string @samp{2004-10-31
-06:30} as if it were in Paris.  However, since the output of the
-@command{date} command is processed according to the overall time zone
-rules, it uses New York time.  (Paris was normally six hours ahead of
-New York in 2004, but this example refers to a brief Halloween period
-when the gap was five hours.)
-
-A @env{TZ} value is a rule that typically names a location in the
-@uref{http://www.twinsun.com/tz/tz-link.htm, @samp{tz} database}.
-A recent catalog of location names appears in the
-@uref{http://twiki.org/cgi-bin/xtra/tzdate, TWiki Date and Time
-Gateway}.  A few non-@acronym{GNU} hosts require a colon before a
-location name in a @env{TZ} setting, e.g.,
-@samp{TZ=":America/New_York"}.
-
-The @samp{tz} database includes a wide variety of locations ranging
-from @samp{Arctic/Longyearbyen} to @samp{Antarctica/South_Pole}, but
-if you are at sea and have your own private time zone, or if you are
-using a non-@acronym{GNU} host that does not support the @samp{tz}
-database, you may need to use a @acronym{POSIX} rule instead.  Simple
-@acronym{POSIX} rules like @samp{UTC0} specify a time zone without
-daylight saving time; other rules can specify simple daylight saving
-regimes.  @xref{TZ Variable,, Specifying the Time Zone with @code{TZ},
-libc, The GNU C Library}.
-
-@node Authors of get_date
-@section Authors of @code{get_date}
-
-@cindex authors of @code{get_date}
-
-@cindex Bellovin, Steven M.
-@cindex Salz, Rich
-@cindex Berets, Jim
-@cindex MacKenzie, David
-@cindex Meyering, Jim
-@cindex Eggert, Paul
-@code{get_date} was originally implemented by Steven M. Bellovin
-(@email{smb@@research.att.com}) while at the University of North Carolina
-at Chapel Hill.  The code was later tweaked by a couple of people on
-Usenet, then completely overhauled by Rich $alz (@email{rsalz@@bbn.com})
-and Jim Berets (@email{jberets@@bbn.com}) in August, 1990.  Various
-revisions for the @sc{gnu} system were made by David MacKenzie, Jim Meyering,
-Paul Eggert and others.
-
-@cindex Pinard, F.
-@cindex Berry, K.
-This chapter was originally produced by Fran@,{c}ois Pinard
-(@email{pinard@@iro.umontreal.ca}) from the @file{getdate.y} source code,
-and then edited by K.@: Berry (@email{kb@@cs.umb.edu}).
index 3580a7b3c89bb05c965eebeadf0da165b6d026df..7a918c4bd81a84e5704b2d62a057f40134230309 100644 (file)
@@ -107,10 +107,10 @@ group permission could be copied from the @emph{other} permission.
 The @code{uid} and @code{gid} fields are the numeric user and group
 @acronym{ID} of the file owners, respectively.  If the operating system does
 not support numeric user or group @acronym{ID}s, these fields should
-be ignored. 
+be ignored.
 
 The @code{size} field is the size of the file in bytes; linked files
-are archived with this field specified as zero. 
+are archived with this field specified as zero.
 
 The @code{mtime} field is the data modification time of the file at
 the time it was archived.  It is the ASCII representation of the octal
@@ -330,4 +330,3 @@ checksum error.
 @node Dumpdir
 @unnumberedsec Dumpdir
 @include dumpdir.texi
-
index 5f1dbe17fd8bd2bd2827c29c69b3a492540f692b..db8c631cecdbb785b6008fde2598a886f7c5ab02 100644 (file)
 ;; This file redefines texinfo-master-menu-list so that it takes into
 ;; account included files.
 
-;; Known bugs: @menu without previous sectioning command will inherit 
+;; Known bugs: @menu without previous sectioning command will inherit
 ;; documentation string from the previous menu. However, since such a
 ;; menu is illegal in a texinfo file, we can live with it.
 
-(require 'texinfo)  
+(require 'texinfo)
 (require 'texnfo-upd)
 
 (defun texinfo-master-menu-list-recursive (title)
diff --git a/doc/parse-datetime.texi b/doc/parse-datetime.texi
new file mode 100644 (file)
index 0000000..8218d9f
--- /dev/null
@@ -0,0 +1,564 @@
+@c GNU date syntax documentation
+
+@c Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+@c 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.3 or
+@c any later version published by the Free Software Foundation; with no
+@c Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+@c Texts.  A copy of the license is included in the ``GNU Free
+@c Documentation License'' file as part of this distribution.
+
+@node Date input formats
+@chapter Date input formats
+
+@cindex date input formats
+@findex parse_datetime
+
+First, a quote:
+
+@quotation
+Our units of temporal measurement, from seconds on up to months, are so
+complicated, asymmetrical and disjunctive so as to make coherent mental
+reckoning in time all but impossible.  Indeed, had some tyrannical god
+contrived to enslave our minds to time, to make it all but impossible
+for us to escape subjection to sodden routines and unpleasant surprises,
+he could hardly have done better than handing down our present system.
+It is like a set of trapezoidal building blocks, with no vertical or
+horizontal surfaces, like a language in which the simplest thought
+demands ornate constructions, useless particles and lengthy
+circumlocutions.  Unlike the more successful patterns of language and
+science, which enable us to face experience boldly or at least
+level-headedly, our system of temporal calculation silently and
+persistently encourages our terror of time.
+
+@dots{}  It is as though architects had to measure length in feet, width
+in meters and height in ells; as though basic instruction manuals
+demanded a knowledge of five different languages.  It is no wonder then
+that we often look into our own immediate past or future, last Tuesday
+or a week from Sunday, with feelings of helpless confusion.  @dots{}
+
+--- Robert Grudin, @cite{Time and the Art of Living}.
+@end quotation
+
+This section describes the textual date representations that @sc{gnu}
+programs accept.  These are the strings you, as a user, can supply as
+arguments to the various programs.  The C interface (via the
+@code{parse_datetime} function) is not described here.
+
+@menu
+* General date syntax::            Common rules.
+* Calendar date items::            19 Dec 1994.
+* Time of day items::              9:20pm.
+* Time zone items::                @sc{est}, @sc{pdt}, @sc{gmt}.
+* Day of week items::              Monday and others.
+* Relative items in date strings:: next tuesday, 2 years ago.
+* Pure numbers in date strings::   19931219, 1440.
+* Seconds since the Epoch::        @@1078100502.
+* Specifying time zone rules::     TZ="America/New_York", TZ="UTC0".
+* Authors of parse_datetime::      Bellovin, Eggert, Salz, Berets, et al.
+@end menu
+
+
+@node General date syntax
+@section General date syntax
+
+@cindex general date syntax
+
+@cindex items in date strings
+A @dfn{date} is a string, possibly empty, containing many items
+separated by whitespace.  The whitespace may be omitted when no
+ambiguity arises.  The empty string means the beginning of today (i.e.,
+midnight).  Order of the items is immaterial.  A date string may contain
+many flavors of items:
+
+@itemize @bullet
+@item calendar date items
+@item time of day items
+@item time zone items
+@item day of the week items
+@item relative items
+@item pure numbers.
+@end itemize
+
+@noindent We describe each of these item types in turn, below.
+
+@cindex numbers, written-out
+@cindex ordinal numbers
+@findex first @r{in date strings}
+@findex next @r{in date strings}
+@findex last @r{in date strings}
+A few ordinal numbers may be written out in words in some contexts.  This is
+most useful for specifying day of the week items or relative items (see
+below).  Among the most commonly used ordinal numbers, the word
+@samp{last} stands for @math{-1}, @samp{this} stands for 0, and
+@samp{first} and @samp{next} both stand for 1.  Because the word
+@samp{second} stands for the unit of time there is no way to write the
+ordinal number 2, but for convenience @samp{third} stands for 3,
+@samp{fourth} for 4, @samp{fifth} for 5,
+@samp{sixth} for 6, @samp{seventh} for 7, @samp{eighth} for 8,
+@samp{ninth} for 9, @samp{tenth} for 10, @samp{eleventh} for 11 and
+@samp{twelfth} for 12.
+
+@cindex months, written-out
+When a month is written this way, it is still considered to be written
+numerically, instead of being ``spelled in full''; this changes the
+allowed strings.
+
+@cindex language, in dates
+In the current implementation, only English is supported for words and
+abbreviations like @samp{AM}, @samp{DST}, @samp{EST}, @samp{first},
+@samp{January}, @samp{Sunday}, @samp{tomorrow}, and @samp{year}.
+
+@cindex language, in dates
+@cindex time zone item
+The output of the @command{date} command
+is not always acceptable as a date string,
+not only because of the language problem, but also because there is no
+standard meaning for time zone items like @samp{IST}.  When using
+@command{date} to generate a date string intended to be parsed later,
+specify a date format that is independent of language and that does not
+use time zone items other than @samp{UTC} and @samp{Z}.  Here are some
+ways to do this:
+
+@example
+$ LC_ALL=C TZ=UTC0 date
+Mon Mar  1 00:21:42 UTC 2004
+$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
+2004-03-01 00:21:42Z
+$ date --iso-8601=ns | tr T ' '  # --iso-8601 is a GNU extension.
+2004-02-29 16:21:42,692722128-0800
+$ date --rfc-2822  # a GNU extension
+Sun, 29 Feb 2004 16:21:42 -0800
+$ date +'%Y-%m-%d %H:%M:%S %z'  # %z is a GNU extension.
+2004-02-29 16:21:42 -0800
+$ date +'@@%s.%N'  # %s and %N are GNU extensions.
+@@1078100502.692722128
+@end example
+
+@cindex case, ignored in dates
+@cindex comments, in dates
+Alphabetic case is completely ignored in dates.  Comments may be introduced
+between round parentheses, as long as included parentheses are properly
+nested.  Hyphens not followed by a digit are currently ignored.  Leading
+zeros on numbers are ignored.
+
+Invalid dates like @samp{2005-02-29} or times like @samp{24:00} are
+rejected.  In the typical case of a host that does not support leap
+seconds, a time like @samp{23:59:60} is rejected even if it
+corresponds to a valid leap second.
+
+
+@node Calendar date items
+@section Calendar date items
+
+@cindex calendar date item
+
+A @dfn{calendar date item} specifies a day of the year.  It is
+specified differently, depending on whether the month is specified
+numerically or literally.  All these strings specify the same calendar date:
+
+@example
+1972-09-24     # @sc{iso} 8601.
+72-9-24        # Assume 19xx for 69 through 99,
+               # 20xx for 00 through 68.
+72-09-24       # Leading zeros are ignored.
+9/24/72        # Common U.S. writing.
+24 September 1972
+24 Sept 72     # September has a special abbreviation.
+24 Sep 72      # Three-letter abbreviations always allowed.
+Sep 24, 1972
+24-sep-72
+24sep72
+@end example
+
+The year can also be omitted.  In this case, the last specified year is
+used, or the current year if none.  For example:
+
+@example
+9/24
+sep 24
+@end example
+
+Here are the rules.
+
+@cindex @sc{iso} 8601 date format
+@cindex date format, @sc{iso} 8601
+For numeric months, the @sc{iso} 8601 format
+@samp{@var{year}-@var{month}-@var{day}} is allowed, where @var{year} is
+any positive number, @var{month} is a number between 01 and 12, and
+@var{day} is a number between 01 and 31.  A leading zero must be present
+if a number is less than ten.  If @var{year} is 68 or smaller, then 2000
+is added to it; otherwise, if @var{year} is less than 100,
+then 1900 is added to it.  The construct
+@samp{@var{month}/@var{day}/@var{year}}, popular in the United States,
+is accepted.  Also @samp{@var{month}/@var{day}}, omitting the year.
+
+@cindex month names in date strings
+@cindex abbreviations for months
+Literal months may be spelled out in full: @samp{January},
+@samp{February}, @samp{March}, @samp{April}, @samp{May}, @samp{June},
+@samp{July}, @samp{August}, @samp{September}, @samp{October},
+@samp{November} or @samp{December}.  Literal months may be abbreviated
+to their first three letters, possibly followed by an abbreviating dot.
+It is also permitted to write @samp{Sept} instead of @samp{September}.
+
+When months are written literally, the calendar date may be given as any
+of the following:
+
+@example
+@var{day} @var{month} @var{year}
+@var{day} @var{month}
+@var{month} @var{day} @var{year}
+@var{day}-@var{month}-@var{year}
+@end example
+
+Or, omitting the year:
+
+@example
+@var{month} @var{day}
+@end example
+
+
+@node Time of day items
+@section Time of day items
+
+@cindex time of day item
+
+A @dfn{time of day item} in date strings specifies the time on a given
+day.  Here are some examples, all of which represent the same time:
+
+@example
+20:02:00.000000
+20:02
+8:02pm
+20:02-0500      # In @sc{est} (U.S. Eastern Standard Time).
+@end example
+
+More generally, the time of day may be given as
+@samp{@var{hour}:@var{minute}:@var{second}}, where @var{hour} is
+a number between 0 and 23, @var{minute} is a number between 0 and
+59, and @var{second} is a number between 0 and 59 possibly followed by
+@samp{.} or @samp{,} and a fraction containing one or more digits.
+Alternatively,
+@samp{:@var{second}} can be omitted, in which case it is taken to
+be zero.  On the rare hosts that support leap seconds, @var{second}
+may be 60.
+
+@findex am @r{in date strings}
+@findex pm @r{in date strings}
+@findex midnight @r{in date strings}
+@findex noon @r{in date strings}
+If the time is followed by @samp{am} or @samp{pm} (or @samp{a.m.}
+or @samp{p.m.}), @var{hour} is restricted to run from 1 to 12, and
+@samp{:@var{minute}} may be omitted (taken to be zero).  @samp{am}
+indicates the first half of the day, @samp{pm} indicates the second
+half of the day.  In this notation, 12 is the predecessor of 1:
+midnight is @samp{12am} while noon is @samp{12pm}.
+(This is the zero-oriented interpretation of @samp{12am} and @samp{12pm},
+as opposed to the old tradition derived from Latin
+which uses @samp{12m} for noon and @samp{12pm} for midnight.)
+
+@cindex time zone correction
+@cindex minutes, time zone correction by
+The time may alternatively be followed by a time zone correction,
+expressed as @samp{@var{s}@var{hh}@var{mm}}, where @var{s} is @samp{+}
+or @samp{-}, @var{hh} is a number of zone hours and @var{mm} is a number
+of zone minutes.
+The zone minutes term, @var{mm}, may be omitted, in which case
+the one- or two-digit correction is interpreted as a number of hours.
+You can also separate @var{hh} from @var{mm} with a colon.
+When a time zone correction is given this way, it
+forces interpretation of the time relative to
+Coordinated Universal Time (@sc{utc}), overriding any previous
+specification for the time zone or the local time zone.  For example,
+@samp{+0530} and @samp{+05:30} both stand for the time zone 5.5 hours
+ahead of @sc{utc} (e.g., India).
+This is the best way to
+specify a time zone correction by fractional parts of an hour.
+The maximum zone correction is 24 hours.
+
+Either @samp{am}/@samp{pm} or a time zone correction may be specified,
+but not both.
+
+
+@node Time zone items
+@section Time zone items
+
+@cindex time zone item
+
+A @dfn{time zone item} specifies an international time zone, indicated
+by a small set of letters, e.g., @samp{UTC} or @samp{Z}
+for Coordinated Universal
+Time.  Any included periods are ignored.  By following a
+non-daylight-saving time zone by the string @samp{DST} in a separate
+word (that is, separated by some white space), the corresponding
+daylight saving time zone may be specified.
+Alternatively, a non-daylight-saving time zone can be followed by a
+time zone correction, to add the two values.  This is normally done
+only for @samp{UTC}; for example, @samp{UTC+05:30} is equivalent to
+@samp{+05:30}.
+
+Time zone items other than @samp{UTC} and @samp{Z}
+are obsolescent and are not recommended, because they
+are ambiguous; for example, @samp{EST} has a different meaning in
+Australia than in the United States.  Instead, it's better to use
+unambiguous numeric time zone corrections like @samp{-0500}, as
+described in the previous section.
+
+If neither a time zone item nor a time zone correction is supplied,
+time stamps are interpreted using the rules of the default time zone
+(@pxref{Specifying time zone rules}).
+
+
+@node Day of week items
+@section Day of week items
+
+@cindex day of week item
+
+The explicit mention of a day of the week will forward the date
+(only if necessary) to reach that day of the week in the future.
+
+Days of the week may be spelled out in full: @samp{Sunday},
+@samp{Monday}, @samp{Tuesday}, @samp{Wednesday}, @samp{Thursday},
+@samp{Friday} or @samp{Saturday}.  Days may be abbreviated to their
+first three letters, optionally followed by a period.  The special
+abbreviations @samp{Tues} for @samp{Tuesday}, @samp{Wednes} for
+@samp{Wednesday} and @samp{Thur} or @samp{Thurs} for @samp{Thursday} are
+also allowed.
+
+@findex next @var{day}
+@findex last @var{day}
+A number may precede a day of the week item to move forward
+supplementary weeks.  It is best used in expression like @samp{third
+monday}.  In this context, @samp{last @var{day}} or @samp{next
+@var{day}} is also acceptable; they move one week before or after
+the day that @var{day} by itself would represent.
+
+A comma following a day of the week item is ignored.
+
+
+@node Relative items in date strings
+@section Relative items in date strings
+
+@cindex relative items in date strings
+@cindex displacement of dates
+
+@dfn{Relative items} adjust a date (or the current date if none) forward
+or backward.  The effects of relative items accumulate.  Here are some
+examples:
+
+@example
+1 year
+1 year ago
+3 years
+2 days
+@end example
+
+@findex year @r{in date strings}
+@findex month @r{in date strings}
+@findex fortnight @r{in date strings}
+@findex week @r{in date strings}
+@findex day @r{in date strings}
+@findex hour @r{in date strings}
+@findex minute @r{in date strings}
+The unit of time displacement may be selected by the string @samp{year}
+or @samp{month} for moving by whole years or months.  These are fuzzy
+units, as years and months are not all of equal duration.  More precise
+units are @samp{fortnight} which is worth 14 days, @samp{week} worth 7
+days, @samp{day} worth 24 hours, @samp{hour} worth 60 minutes,
+@samp{minute} or @samp{min} worth 60 seconds, and @samp{second} or
+@samp{sec} worth one second.  An @samp{s} suffix on these units is
+accepted and ignored.
+
+@findex ago @r{in date strings}
+The unit of time may be preceded by a multiplier, given as an optionally
+signed number.  Unsigned numbers are taken as positively signed.  No
+number at all implies 1 for a multiplier.  Following a relative item by
+the string @samp{ago} is equivalent to preceding the unit by a
+multiplier with value @math{-1}.
+
+@findex day @r{in date strings}
+@findex tomorrow @r{in date strings}
+@findex yesterday @r{in date strings}
+The string @samp{tomorrow} is worth one day in the future (equivalent
+to @samp{day}), the string @samp{yesterday} is worth
+one day in the past (equivalent to @samp{day ago}).
+
+@findex now @r{in date strings}
+@findex today @r{in date strings}
+@findex this @r{in date strings}
+The strings @samp{now} or @samp{today} are relative items corresponding
+to zero-valued time displacement, these strings come from the fact
+a zero-valued time displacement represents the current time when not
+otherwise changed by previous items.  They may be used to stress other
+items, like in @samp{12:00 today}.  The string @samp{this} also has
+the meaning of a zero-valued time displacement, but is preferred in
+date strings like @samp{this thursday}.
+
+When a relative item causes the resulting date to cross a boundary
+where the clocks were adjusted, typically for daylight saving time,
+the resulting date and time are adjusted accordingly.
+
+The fuzz in units can cause problems with relative items.  For
+example, @samp{2003-07-31 -1 month} might evaluate to 2003-07-01,
+because 2003-06-31 is an invalid date.  To determine the previous
+month more reliably, you can ask for the month before the 15th of the
+current month.  For example:
+
+@example
+$ date -R
+Thu, 31 Jul 2003 13:02:39 -0700
+$ date --date='-1 month' +'Last month was %B?'
+Last month was July?
+$ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
+Last month was June!
+@end example
+
+Also, take care when manipulating dates around clock changes such as
+daylight saving leaps.  In a few cases these have added or subtracted
+as much as 24 hours from the clock, so it is often wise to adopt
+universal time by setting the @env{TZ} environment variable to
+@samp{UTC0} before embarking on calendrical calculations.
+
+@node Pure numbers in date strings
+@section Pure numbers in date strings
+
+@cindex pure numbers in date strings
+
+The precise interpretation of a pure decimal number depends
+on the context in the date string.
+
+If the decimal number is of the form @var{yyyy}@var{mm}@var{dd} and no
+other calendar date item (@pxref{Calendar date items}) appears before it
+in the date string, then @var{yyyy} is read as the year, @var{mm} as the
+month number and @var{dd} as the day of the month, for the specified
+calendar date.
+
+If the decimal number is of the form @var{hh}@var{mm} and no other time
+of day item appears before it in the date string, then @var{hh} is read
+as the hour of the day and @var{mm} as the minute of the hour, for the
+specified time of day.  @var{mm} can also be omitted.
+
+If both a calendar date and a time of day appear to the left of a number
+in the date string, but no relative item, then the number overrides the
+year.
+
+
+@node Seconds since the Epoch
+@section Seconds since the Epoch
+
+If you precede a number with @samp{@@}, it represents an internal time
+stamp as a count of seconds.  The number can contain an internal
+decimal point (either @samp{.} or @samp{,}); any excess precision not
+supported by the internal representation is truncated toward minus
+infinity.  Such a number cannot be combined with any other date
+item, as it specifies a complete time stamp.
+
+@cindex beginning of time, for @acronym{POSIX}
+@cindex epoch, for @acronym{POSIX}
+Internally, computer times are represented as a count of seconds since
+an epoch---a well-defined point of time.  On @acronym{GNU} and
+@acronym{POSIX} systems, the epoch is 1970-01-01 00:00:00 @sc{utc}, so
+@samp{@@0} represents this time, @samp{@@1} represents 1970-01-01
+00:00:01 @sc{utc}, and so forth.  @acronym{GNU} and most other
+@acronym{POSIX}-compliant systems support such times as an extension
+to @acronym{POSIX}, using negative counts, so that @samp{@@-1}
+represents 1969-12-31 23:59:59 @sc{utc}.
+
+Traditional Unix systems count seconds with 32-bit two's-complement
+integers and can represent times from 1901-12-13 20:45:52 through
+2038-01-19 03:14:07 @sc{utc}.  More modern systems use 64-bit counts
+of seconds with nanosecond subcounts, and can represent all the times
+in the known lifetime of the universe to a resolution of 1 nanosecond.
+
+On most hosts, these counts ignore the presence of leap seconds.
+For example, on most hosts @samp{@@915148799} represents 1998-12-31
+23:59:59 @sc{utc}, @samp{@@915148800} represents 1999-01-01 00:00:00
+@sc{utc}, and there is no way to represent the intervening leap second
+1998-12-31 23:59:60 @sc{utc}.
+
+@node Specifying time zone rules
+@section Specifying time zone rules
+
+@vindex TZ
+Normally, dates are interpreted using the rules of the current time
+zone, which in turn are specified by the @env{TZ} environment
+variable, or by a system default if @env{TZ} is not set.  To specify a
+different set of default time zone rules that apply just to one date,
+start the date with a string of the form @samp{TZ="@var{rule}"}.  The
+two quote characters (@samp{"}) must be present in the date, and any
+quotes or backslashes within @var{rule} must be escaped by a
+backslash.
+
+For example, with the @acronym{GNU} @command{date} command you can
+answer the question ``What time is it in New York when a Paris clock
+shows 6:30am on October 31, 2004?'' by using a date beginning with
+@samp{TZ="Europe/Paris"} as shown in the following shell transcript:
+
+@example
+$ export TZ="America/New_York"
+$ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
+Sun Oct 31 01:30:00 EDT 2004
+@end example
+
+In this example, the @option{--date} operand begins with its own
+@env{TZ} setting, so the rest of that operand is processed according
+to @samp{Europe/Paris} rules, treating the string @samp{2004-10-31
+06:30} as if it were in Paris.  However, since the output of the
+@command{date} command is processed according to the overall time zone
+rules, it uses New York time.  (Paris was normally six hours ahead of
+New York in 2004, but this example refers to a brief Halloween period
+when the gap was five hours.)
+
+A @env{TZ} value is a rule that typically names a location in the
+@uref{http://www.twinsun.com/tz/tz-link.htm, @samp{tz} database}.
+A recent catalog of location names appears in the
+@uref{http://twiki.org/cgi-bin/xtra/tzdate, TWiki Date and Time
+Gateway}.  A few non-@acronym{GNU} hosts require a colon before a
+location name in a @env{TZ} setting, e.g.,
+@samp{TZ=":America/New_York"}.
+
+The @samp{tz} database includes a wide variety of locations ranging
+from @samp{Arctic/Longyearbyen} to @samp{Antarctica/South_Pole}, but
+if you are at sea and have your own private time zone, or if you are
+using a non-@acronym{GNU} host that does not support the @samp{tz}
+database, you may need to use a @acronym{POSIX} rule instead.  Simple
+@acronym{POSIX} rules like @samp{UTC0} specify a time zone without
+daylight saving time; other rules can specify simple daylight saving
+regimes.  @xref{TZ Variable,, Specifying the Time Zone with @code{TZ},
+libc, The GNU C Library}.
+
+@node Authors of parse_datetime
+@section Authors of @code{parse_datetime}
+@c the anchor keeps the old node name, to try to avoid breaking links
+@anchor{Authors of get_date}
+
+@cindex authors of @code{parse_datetime}
+
+@cindex Bellovin, Steven M.
+@cindex Salz, Rich
+@cindex Berets, Jim
+@cindex MacKenzie, David
+@cindex Meyering, Jim
+@cindex Eggert, Paul
+@code{parse_datetime} started life as @code{getdate}, as originally
+implemented by Steven M. Bellovin
+(@email{smb@@research.att.com}) while at the University of North Carolina
+at Chapel Hill.  The code was later tweaked by a couple of people on
+Usenet, then completely overhauled by Rich $alz (@email{rsalz@@bbn.com})
+and Jim Berets (@email{jberets@@bbn.com}) in August, 1990.  Various
+revisions for the @sc{gnu} system were made by David MacKenzie, Jim Meyering,
+Paul Eggert and others, including renaming it to @code{get_date} to
+avoid a conflict with the alternative Posix function @code{getdate},
+and a later rename to @code{parse_datetime}.  The Posix function
+@code{getdate} can parse more locale-specific dates using
+@code{strptime}, but relies on an environment variable and external
+file, and lacks the thread-safety of @code{parse_datetime}.
+
+@cindex Pinard, F.
+@cindex Berry, K.
+This chapter was originally produced by Fran@,{c}ois Pinard
+(@email{pinard@@iro.umontreal.ca}) from the @file{parse_datetime.y} source code,
+and then edited by K.@: Berry (@email{kb@@cs.umb.edu}).
index 656fd18372a60ffebd11d5571fe950cfd0bc3b2d..5607a08e7409b58b85a3e75565f596edcc74ac9b 100644 (file)
@@ -137,4 +137,3 @@ previous versions it is not quoted;
 @end enumerate
 
 @c End of snapshot.texi
-
index d48375c178398e68effdd43d616ade9ea81ac213..bd8f75f5d288083b8ab5769411aca42d6fd4fe7f 100644 (file)
@@ -232,4 +232,3 @@ into a separate directory.  Then, using a simple program it would be
 possible to expand the file to its original form even without @GNUTAR{}.
 @xref{Sparse Recovery}, for the detailed information on how to extract
 sparse members without @GNUTAR{}.
-
index 591fd0e3e70cd7e317ae7161a8aad8152c98946e..f38c5d8ccf6879b4b41d0898f6a963e620c7b054 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 9 March 2010
-@set UPDATED-MONTH March 2010
-@set EDITION 1.23
-@set VERSION 1.23
+@set UPDATED 24 October 2010
+@set UPDATED-MONTH October 2010
+@set EDITION 1.24
+@set VERSION 1.24
index 9c930efe3c8ef493329ee845c54d6d6273941603..ed9640c5964c10abd545279630f2e026bca740cd 100644 (file)
@@ -55,4 +55,3 @@ file version 2
 $ @kbd{tar-snapshot-edit -b -r 0x0306-0x4500 /var/backup/snap.a}
 file version 2
 @end smallexample
-
index 0ac94fe1b3c5e5fe3e4f96a2a3f96242dd0f8a35..b2e7b91e472e1ba92f24978e94d8ad04881dec4a 100644 (file)
@@ -1,6 +1,6 @@
 This is tar.info, produced by makeinfo version 4.13 from tar.texi.
 
-This manual is for GNU `tar' (version 1.23, 9 March 2010), which
+This manual is for GNU `tar' (version 1.24, 24 October 2010), which
 creates and extracts files from archives.
 
    Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
@@ -8,9 +8,9 @@ creates and extracts files from archives.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.1 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
      "GNU Free Documentation License".
 
@@ -30,385 +30,400 @@ END-INFO-DIR-ENTRY
 
 \1f
 Indirect:
-tar.info-1: 1252
-tar.info-2: 299753
+tar.info-1: 1255
+tar.info-2: 301175
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1252
-Node: Introduction\7f10541
-Node: Book Contents\7f11328
-Node: Definitions\7f13500
-Node: What tar Does\7f15303
-Node: Naming tar Archives\7f18069
-Node: Authors\7f18789
-Node: Reports\7f20602
-Node: Tutorial\7f20959
-Node: assumptions\7f21772
-Node: stylistic conventions\7f24247
-Node: basic tar options\7f24690
-Node: frequent operations\7f28328
-Node: Two Frequent Options\7f28980
-Node: file tutorial\7f29611
-Node: verbose tutorial\7f30968
-Ref: verbose member listing\7f33182
-Node: help tutorial\7f35935
-Node: create\7f36289
-Node: prepare for examples\7f37790
-Node: Creating the archive\7f39559
-Node: create verbose\7f42391
-Node: short create\7f43211
-Node: create dir\7f45964
-Node: list\7f48672
-Ref: listing member and file names\7f49946
-Node: list dir\7f52260
-Node: extract\7f53249
-Node: extracting archives\7f54363
-Node: extracting files\7f54853
-Ref: extracting files-Footnote-1\7f57500
-Node: extract dir\7f57880
-Node: extracting untrusted archives\7f60263
-Node: failing commands\7f61142
-Node: going further\7f62236
-Node: tar invocation\7f62449
-Node: Synopsis\7f63911
-Node: using tar options\7f68866
-Ref: TAR_OPTIONS\7f70443
-Node: Styles\7f71460
-Ref: Styles-Footnote-1\7f72959
-Node: Long Options\7f73215
-Node: Short Options\7f75387
-Ref: Short Options-Footnote-1\7f77195
-Node: Old Options\7f77412
-Ref: Old Options-Footnote-1\7f80299
-Node: Mixing\7f80469
-Ref: Mixing-Footnote-1\7f82835
-Node: All Options\7f82955
-Node: Operation Summary\7f83560
-Ref: --append\7f83680
-Ref: --catenate\7f83760
-Ref: --compare\7f83831
-Ref: --concatenate\7f84034
-Ref: --create\7f84144
-Ref: --delete\7f84212
-Ref: --diff\7f84326
-Ref: --extract\7f84382
-Ref: --get\7f84484
-Ref: --list\7f84542
-Ref: --update\7f84610
-Node: Option Summary\7f84820
-Ref: --absolute-names\7f84975
-Ref: --after-date\7f85153
-Ref: --anchored\7f85205
-Ref: --atime-preserve\7f85338
-Ref: --auto-compress\7f87858
-Ref: --backup\7f88085
-Ref: --block-number\7f88276
-Ref: --blocking-factor\7f88450
-Ref: --bzip2\7f88602
-Ref: --check-device\7f88709
-Ref: --checkpoint\7f88904
-Ref: --checkpoint-action\7f89346
-Ref: --check-links\7f90497
-Ref: --compress\7f90774
-Ref: --uncompress\7f90774
-Ref: --confirmation\7f90978
-Ref: --delay-directory-restore\7f91046
-Ref: --dereference\7f91247
-Ref: --directory\7f91432
-Ref: --exclude\7f91685
-Ref: --exclude-backups\7f91804
-Ref: --exclude-from\7f91894
-Ref: --exclude-caches\7f92040
-Ref: --exclude-caches-under\7f92248
-Ref: --exclude-caches-all\7f92426
-Ref: --exclude-tag\7f92555
-Ref: --exclude-tag-under\7f92726
-Ref: --exclude-tag-all\7f92916
-Ref: --exclude-vcs\7f93045
-Ref: --file\7f93211
-Ref: --files-from\7f93411
-Ref: --force-local\7f93614
-Ref: --format\7f93805
-Ref: --group\7f94475
-Ref: --gzip\7f94823
-Ref: --gunzip\7f94823
-Ref: --ungzip\7f94823
-Ref: --hard-dereference\7f95046
-Ref: --help\7f95233
-Ref: --ignore-case\7f95367
-Ref: --ignore-command-error\7f95494
-Ref: --ignore-failed-read\7f95605
-Ref: --ignore-zeros\7f95735
-Ref: --incremental\7f95880
-Ref: --index-file\7f96145
-Ref: --info-script\7f96230
-Ref: --new-volume-script\7f96230
-Ref: --interactive\7f96551
-Ref: --keep-newer-files\7f96763
-Ref: --keep-old-files\7f96905
-Ref: --label\7f97036
-Ref: --level\7f97324
-Ref: --listed-incremental\7f97765
-Ref: --lzip\7f98129
-Ref: --lzma\7f98229
-Ref: --mode\7f98429
-Ref: --mtime\7f98720
-Ref: --multi-volume\7f99161
-Ref: --newer\7f99365
-Ref: --newer-mtime\7f99643
-Ref: --no-anchored\7f99867
-Ref: --no-auto-compress\7f100004
-Ref: --no-check-device\7f100155
-Ref: --no-delay-directory-restore\7f100338
-Ref: --no-ignore-case\7f100591
-Ref: --no-ignore-command-error\7f100684
-Ref: --no-null\7f100839
-Ref: --no-overwrite-dir\7f101044
-Ref: --no-quote-chars\7f101187
-Ref: --no-recursion\7f101368
-Ref: --no-same-owner\7f101473
-Ref: --no-same-permissions\7f101656
-Ref: --no-seek\7f101858
-Ref: --no-unquote\7f102076
-Ref: --no-wildcards\7f102214
-Ref: --no-wildcards-match-slash\7f102298
-Ref: --null\7f102400
-Ref: --numeric-owner\7f102628
-Ref: --occurrence\7f103279
-Ref: --old-archive\7f103846
-Ref: --one-file-system\7f103895
-Ref: --overwrite\7f104073
-Ref: --overwrite-dir\7f104215
-Ref: --owner\7f104360
-Ref: --pax-option\7f104739
-Ref: --portability\7f105046
-Ref: --posix\7f105111
-Ref: --preserve\7f105153
-Ref: --preserve-order\7f105291
-Ref: --preserve-permissions\7f105355
-Ref: --same-permissions\7f105355
-Ref: --quote-chars\7f105769
-Ref: --quoting-style\7f105922
-Ref: --read-full-records\7f106243
-Ref: --record-size\7f106408
-Ref: --recursion\7f106539
-Ref: --recursive-unlink\7f106642
-Ref: --remove-files\7f106809
-Ref: --restrict\7f106955
-Ref: --rmt-command\7f107143
-Ref: --rsh-command\7f107284
-Ref: --same-order\7f107406
-Ref: --same-owner\7f107698
-Ref: --seek\7f108075
-Ref: --show-defaults\7f108444
-Ref: --show-omitted-dirs\7f108934
-Ref: --show-transformed-names\7f109088
-Ref: --show-stored-names\7f109088
-Ref: --sparse\7f109477
-Ref: --sparse-version\7f109616
-Ref: --starting-file\7f109840
-Ref: --strip-components\7f110029
-Ref: --suffix\7f110341
-Ref: --tape-length\7f110460
-Ref: --test-label\7f110615
-Ref: --to-command\7f110767
-Ref: --to-stdout\7f110926
-Ref: --totals\7f111079
-Ref: --touch\7f111310
-Ref: --transform\7f111512
-Ref: --xform\7f111512
-Ref: --unlink-first\7f112123
-Ref: --unquote\7f112291
-Ref: --use-compress-program\7f112398
-Ref: --utc\7f112576
-Ref: --verbose\7f112669
-Ref: --verify\7f112921
-Ref: --version\7f113039
-Ref: --volno-file\7f113211
-Ref: --warning\7f113398
-Ref: --wildcards\7f113575
-Ref: --wildcards-match-slash\7f113695
-Ref: --xz\7f113787
-Ref: Option Summary-Footnote-1\7f113918
-Node: Short Option Summary\7f114136
-Node: help\7f116337
-Ref: help-Footnote-1\7f120221
-Node: defaults\7f120432
-Node: verbose\7f121451
-Ref: totals\7f123752
-Ref: Progress information\7f125342
-Ref: show-omitted-dirs\7f126321
-Ref: block-number\7f126740
-Ref: verbose-Footnote-1\7f127767
-Node: checkpoints\7f127874
-Node: warnings\7f133268
-Node: interactive\7f135992
-Node: operations\7f138074
-Node: Basic tar\7f138333
-Ref: Basic tar-Footnote-1\7f141437
-Node: Advanced tar\7f141581
-Node: Operations\7f142426
-Node: append\7f144325
-Ref: append-Footnote-1\7f147420
-Node: appending files\7f147583
-Node: multiple\7f149301
-Node: update\7f151991
-Node: how to update\7f152967
-Node: concatenate\7f154749
-Ref: concatenate-Footnote-1\7f157997
-Node: delete\7f158135
-Node: compare\7f159908
-Node: create options\7f161336
-Node: override\7f161794
-Node: Ignore Failed Read\7f165226
-Node: extract options\7f165446
-Node: Reading\7f166279
-Node: read full records\7f167779
-Node: Ignore Zeros\7f168115
-Node: Writing\7f169106
-Node: Dealing with Old Files\7f169663
-Node: Overwrite Old Files\7f172090
-Node: Keep Old Files\7f173547
-Node: Keep Newer Files\7f174057
-Node: Unlink First\7f174347
-Node: Recursive Unlink\7f174751
-Node: Data Modification Times\7f175304
-Node: Setting Access Permissions\7f176114
-Node: Directory Modification Times and Permissions\7f176746
-Node: Writing to Standard Output\7f180358
-Node: Writing to an External Program\7f181893
-Node: remove files\7f185032
-Node: Scarce\7f185225
-Node: Starting File\7f185473
-Node: Same Order\7f186293
-Node: backup\7f187129
-Node: Applications\7f190215
-Node: looking ahead\7f191678
-Node: Backups\7f192504
-Node: Full Dumps\7f194085
-Node: Incremental Dumps\7f195891
-Ref: --level=0\7f198805
-Ref: device numbers\7f199338
-Ref: incremental-op\7f203669
-Ref: Incremental Dumps-Footnote-1\7f204043
-Ref: Incremental Dumps-Footnote-2\7f204193
-Node: Backup Levels\7f204681
-Node: Backup Parameters\7f207068
-Node: General-Purpose Variables\7f208249
-Ref: RSH\7f211410
-Node: Magnetic Tape Control\7f213289
-Node: User Hooks\7f214627
-Node: backup-specs example\7f215956
-Node: Scripted Backups\7f217099
-Ref: Scripted Backups-Footnote-1\7f219962
-Node: Scripted Restoration\7f220346
-Node: Choosing\7f222957
-Node: file\7f224079
-Ref: remote-dev\7f226715
-Ref: local and remote archives\7f227100
-Node: Selecting Archive Members\7f228131
-Ref: input name quoting\7f228812
-Node: files\7f230798
-Ref: files-Footnote-1\7f234072
-Node: nul\7f234230
-Node: exclude\7f236629
-Node: problems with exclude\7f241803
-Node: wildcards\7f243848
-Node: controlling pattern-matching\7f246432
-Ref: controlling pattern-matching-Footnote-1\7f250422
-Node: quoting styles\7f250638
-Ref: escape sequences\7f250984
-Node: transform\7f257119
-Ref: show-transformed-names\7f259110
-Node: after\7f265298
-Node: recurse\7f268900
-Node: one\7f271624
-Node: directory\7f273057
-Node: absolute\7f276119
-Ref: absolute-Footnote-1\7f279199
-Node: Date input formats\7f279550
-Node: General date syntax\7f281866
-Node: Calendar date items\7f284817
-Node: Time of day items\7f286814
-Node: Time zone items\7f289010
-Node: Day of week items\7f290244
-Node: Relative items in date strings\7f291233
-Node: Pure numbers in date strings\7f294035
-Node: Seconds since the Epoch\7f295016
-Node: Specifying time zone rules\7f296637
-Node: Authors of get_date\7f299001
-Node: Formats\7f299753
-Node: Compression\7f304441
-Node: gzip\7f304733
-Ref: auto-compress\7f307999
-Ref: gzip-Footnote-1\7f312247
-Node: sparse\7f312296
-Node: Attributes\7f315350
-Node: Portability\7f321171
-Node: Portable Names\7f322657
-Node: dereference\7f323362
-Node: hard links\7f324763
-Ref: hard links-Footnote-1\7f327661
-Node: old\7f327717
-Node: ustar\7f328901
-Node: gnu\7f329492
-Node: posix\7f330369
-Node: PAX keywords\7f330850
-Node: Checksumming\7f336460
-Node: Large or Negative Values\7f338386
-Node: Other Tars\7f339986
-Node: Split Recovery\7f341122
-Node: Sparse Recovery\7f344854
-Ref: extracting sparse v.0.x\7f348487
-Ref: Sparse Recovery-Footnote-1\7f351776
-Ref: Sparse Recovery-Footnote-2\7f351799
-Node: cpio\7f351920
-Node: Media\7f356677
-Node: Device\7f358607
-Node: Remote Tape Server\7f363681
-Node: Common Problems and Solutions\7f367404
-Node: Blocking\7f367796
-Node: Format Variations\7f374240
-Node: Blocking Factor\7f375152
-Node: Many\7f386804
-Node: Tape Positioning\7f390598
-Node: mt\7f392471
-Node: Using Multiple Tapes\7f394026
-Node: Multi-Volume Archives\7f396092
-Ref: tape-length\7f397577
-Ref: change volume prompt\7f397881
-Ref: volno-file\7f398752
-Ref: info-script\7f399304
-Ref: Multi-Volume Archives-Footnote-1\7f404491
-Ref: Multi-Volume Archives-Footnote-2\7f404601
-Node: Tape Files\7f404669
-Node: Tarcat\7f406151
-Node: label\7f407196
-Ref: --test-label option\7f408826
-Ref: label-Footnote-1\7f411870
-Node: verify\7f412105
-Node: Write Protection\7f415405
-Node: Changes\7f416235
-Node: Configuring Help Summary\7f419831
-Node: Fixing Snapshot Files\7f426332
-Node: Tar Internals\7f428518
-Node: Standard\7f428850
-Node: Extensions\7f451051
-Node: Sparse Formats\7f453611
-Node: Old GNU Format\7f454901
-Node: PAX 0\7f457302
-Node: PAX 1\7f460433
-Node: Snapshot Files\7f462171
-Node: Dumpdir\7f466632
-Node: Genfile\7f469878
-Node: Generate Mode\7f470971
-Node: Status Mode\7f475268
-Node: Exec Mode\7f477067
-Node: Free Software Needs Free Documentation\7f479812
-Node: Copying This Manual\7f484783
-Node: GNU Free Documentation License\7f485065
-Node: Index of Command Line Options\7f507472
-Node: Index\7f532883
+Node: Top\7f1255
+Node: Introduction\7f10671
+Node: Book Contents\7f11458
+Node: Definitions\7f13630
+Node: What tar Does\7f15433
+Node: Naming tar Archives\7f18199
+Node: Authors\7f18919
+Node: Reports\7f20732
+Node: Tutorial\7f21089
+Node: assumptions\7f21902
+Node: stylistic conventions\7f24377
+Node: basic tar options\7f24820
+Node: frequent operations\7f28458
+Node: Two Frequent Options\7f29110
+Node: file tutorial\7f29741
+Node: verbose tutorial\7f31098
+Ref: verbose member listing\7f33312
+Node: help tutorial\7f36065
+Node: create\7f36419
+Node: prepare for examples\7f37920
+Node: Creating the archive\7f39689
+Node: create verbose\7f42521
+Node: short create\7f43341
+Node: create dir\7f46094
+Node: list\7f48802
+Ref: listing member and file names\7f50076
+Node: list dir\7f52390
+Node: extract\7f53379
+Node: extracting archives\7f54493
+Node: extracting files\7f54983
+Ref: extracting files-Footnote-1\7f57630
+Node: extract dir\7f58010
+Node: extracting untrusted archives\7f60393
+Node: failing commands\7f61272
+Node: going further\7f62366
+Node: tar invocation\7f62579
+Node: Synopsis\7f64041
+Node: using tar options\7f68996
+Ref: TAR_OPTIONS\7f70573
+Node: Styles\7f71590
+Ref: Styles-Footnote-1\7f73089
+Node: Long Options\7f73345
+Node: Short Options\7f75517
+Ref: Short Options-Footnote-1\7f77325
+Node: Old Options\7f77542
+Ref: Old Options-Footnote-1\7f80429
+Node: Mixing\7f80599
+Ref: Mixing-Footnote-1\7f82965
+Node: All Options\7f83085
+Node: Operation Summary\7f83690
+Ref: --append\7f83810
+Ref: --catenate\7f83890
+Ref: --compare\7f83961
+Ref: --concatenate\7f84164
+Ref: --create\7f84274
+Ref: --delete\7f84342
+Ref: --diff\7f84456
+Ref: --extract\7f84512
+Ref: --get\7f84614
+Ref: --list\7f84672
+Ref: --update\7f84740
+Node: Option Summary\7f84950
+Ref: --absolute-names\7f85105
+Ref: --after-date\7f85283
+Ref: --anchored\7f85335
+Ref: --atime-preserve\7f85468
+Ref: --auto-compress\7f87988
+Ref: --backup\7f88215
+Ref: --block-number\7f88406
+Ref: --blocking-factor\7f88580
+Ref: --bzip2\7f88732
+Ref: --check-device\7f88839
+Ref: --checkpoint\7f89034
+Ref: --checkpoint-action\7f89476
+Ref: --check-links\7f90627
+Ref: --compress\7f90904
+Ref: --uncompress\7f90904
+Ref: --confirmation\7f91108
+Ref: --delay-directory-restore\7f91176
+Ref: --dereference\7f91377
+Ref: --directory\7f91571
+Ref: --exclude\7f91824
+Ref: --exclude-backups\7f91943
+Ref: --exclude-from\7f92033
+Ref: --exclude-caches\7f92179
+Ref: --exclude-caches-under\7f92387
+Ref: --exclude-caches-all\7f92565
+Ref: --exclude-tag\7f92694
+Ref: --exclude-tag-under\7f92865
+Ref: --exclude-tag-all\7f93055
+Ref: --exclude-vcs\7f93184
+Ref: --file\7f93350
+Ref: --files-from\7f93550
+Ref: --force-local\7f93753
+Ref: --format\7f93944
+Ref: --full-time\7f94614
+Ref: --group\7f95294
+Ref: --gzip\7f95642
+Ref: --gunzip\7f95642
+Ref: --ungzip\7f95642
+Ref: --hard-dereference\7f95865
+Ref: --help\7f96052
+Ref: --ignore-case\7f96186
+Ref: --ignore-command-error\7f96313
+Ref: --ignore-failed-read\7f96424
+Ref: --ignore-zeros\7f96554
+Ref: --incremental\7f96699
+Ref: --index-file\7f96964
+Ref: --info-script\7f97049
+Ref: --new-volume-script\7f97049
+Ref: --interactive\7f97370
+Ref: --keep-newer-files\7f97582
+Ref: --keep-old-files\7f97724
+Ref: --label\7f97855
+Ref: --level\7f98143
+Ref: --listed-incremental\7f98584
+Ref: --lzip\7f98948
+Ref: --lzma\7f99048
+Ref: --mode\7f99248
+Ref: --mtime\7f99539
+Ref: --multi-volume\7f99980
+Ref: --newer\7f100184
+Ref: --newer-mtime\7f100462
+Ref: --no-anchored\7f100686
+Ref: --no-auto-compress\7f100823
+Ref: --no-check-device\7f100974
+Ref: --no-delay-directory-restore\7f101157
+Ref: --no-ignore-case\7f101410
+Ref: --no-ignore-command-error\7f101503
+Ref: --no-null\7f101658
+Ref: --no-overwrite-dir\7f101863
+Ref: --no-quote-chars\7f102006
+Ref: --no-recursion\7f102187
+Ref: --no-same-owner\7f102292
+Ref: --no-same-permissions\7f102475
+Ref: --no-seek\7f102677
+Ref: --no-unquote\7f102895
+Ref: --no-wildcards\7f103033
+Ref: --no-wildcards-match-slash\7f103117
+Ref: --null\7f103219
+Ref: --numeric-owner\7f103447
+Ref: --occurrence\7f104098
+Ref: --old-archive\7f104665
+Ref: --one-file-system\7f104714
+Ref: --overwrite\7f104892
+Ref: --overwrite-dir\7f105034
+Ref: --owner\7f105179
+Ref: --pax-option\7f105558
+Ref: --portability\7f105865
+Ref: --posix\7f105930
+Ref: --preserve\7f105972
+Ref: --preserve-order\7f106110
+Ref: --preserve-permissions\7f106174
+Ref: --same-permissions\7f106174
+Ref: --quote-chars\7f106588
+Ref: --quoting-style\7f106741
+Ref: --read-full-records\7f107062
+Ref: --record-size\7f107227
+Ref: --recursion\7f107571
+Ref: --recursive-unlink\7f107674
+Ref: --remove-files\7f107841
+Ref: --restrict\7f107987
+Ref: --rmt-command\7f108175
+Ref: --rsh-command\7f108316
+Ref: --same-order\7f108438
+Ref: --same-owner\7f108730
+Ref: --seek\7f109107
+Ref: --show-defaults\7f109476
+Ref: --show-omitted-dirs\7f109966
+Ref: --show-transformed-names\7f110120
+Ref: --show-stored-names\7f110120
+Ref: --sparse\7f110509
+Ref: --sparse-version\7f110648
+Ref: --starting-file\7f110872
+Ref: --strip-components\7f111061
+Ref: --suffix\7f111373
+Ref: --tape-length\7f111492
+Ref: --test-label\7f111907
+Ref: --to-command\7f112059
+Ref: --to-stdout\7f112218
+Ref: --totals\7f112371
+Ref: --touch\7f112602
+Ref: --transform\7f112804
+Ref: --xform\7f112804
+Ref: --unlink-first\7f113415
+Ref: --unquote\7f113583
+Ref: --use-compress-program\7f113690
+Ref: --utc\7f113868
+Ref: --verbose\7f113961
+Ref: --verify\7f114213
+Ref: --version\7f114331
+Ref: --volno-file\7f114503
+Ref: --warning\7f114690
+Ref: --wildcards\7f114867
+Ref: --wildcards-match-slash\7f114987
+Ref: --xz\7f115079
+Ref: Option Summary-Footnote-1\7f115210
+Node: Short Option Summary\7f115428
+Node: help\7f117629
+Ref: help-Footnote-1\7f121513
+Node: defaults\7f121724
+Node: verbose\7f122743
+Ref: totals\7f125044
+Ref: Progress information\7f126634
+Ref: show-omitted-dirs\7f127613
+Ref: block-number\7f128032
+Ref: verbose-Footnote-1\7f129059
+Node: checkpoints\7f129166
+Node: warnings\7f134560
+Node: interactive\7f137284
+Node: operations\7f139366
+Node: Basic tar\7f139625
+Ref: Basic tar-Footnote-1\7f142729
+Node: Advanced tar\7f142873
+Node: Operations\7f143718
+Node: append\7f145617
+Ref: append-Footnote-1\7f148712
+Node: appending files\7f148875
+Node: multiple\7f150593
+Node: update\7f153285
+Node: how to update\7f154261
+Node: concatenate\7f156045
+Ref: concatenate-Footnote-1\7f159293
+Node: delete\7f159436
+Node: compare\7f161209
+Node: create options\7f162641
+Node: override\7f163099
+Node: Ignore Failed Read\7f166527
+Node: extract options\7f166747
+Node: Reading\7f167580
+Node: read full records\7f169080
+Node: Ignore Zeros\7f169416
+Node: Writing\7f170407
+Node: Dealing with Old Files\7f170964
+Node: Overwrite Old Files\7f173391
+Node: Keep Old Files\7f174848
+Node: Keep Newer Files\7f175358
+Node: Unlink First\7f175648
+Node: Recursive Unlink\7f176052
+Node: Data Modification Times\7f176605
+Node: Setting Access Permissions\7f177415
+Node: Directory Modification Times and Permissions\7f178047
+Node: Writing to Standard Output\7f181659
+Node: Writing to an External Program\7f183194
+Node: remove files\7f186333
+Node: Scarce\7f186526
+Node: Starting File\7f186774
+Node: Same Order\7f187575
+Node: backup\7f188411
+Node: Applications\7f191497
+Node: looking ahead\7f192958
+Node: Backups\7f193784
+Node: Full Dumps\7f195365
+Node: Incremental Dumps\7f197171
+Ref: --level=0\7f200085
+Ref: device numbers\7f200618
+Ref: incremental-op\7f204596
+Ref: Incremental Dumps-Footnote-1\7f204970
+Ref: Incremental Dumps-Footnote-2\7f205120
+Node: Backup Levels\7f205608
+Node: Backup Parameters\7f207995
+Node: General-Purpose Variables\7f209176
+Ref: RSH\7f212337
+Node: Magnetic Tape Control\7f214216
+Node: User Hooks\7f215554
+Node: backup-specs example\7f216883
+Node: Scripted Backups\7f218026
+Ref: Scripted Backups-Footnote-1\7f220889
+Node: Scripted Restoration\7f221273
+Node: Choosing\7f223884
+Node: file\7f225006
+Ref: remote-dev\7f227642
+Ref: local and remote archives\7f228027
+Node: Selecting Archive Members\7f229058
+Ref: input name quoting\7f229739
+Node: files\7f231725
+Ref: files-Footnote-1\7f234998
+Node: nul\7f235156
+Node: exclude\7f237555
+Node: problems with exclude\7f242729
+Node: wildcards\7f244774
+Node: controlling pattern-matching\7f247358
+Ref: controlling pattern-matching-Footnote-1\7f251348
+Node: quoting styles\7f251564
+Ref: escape sequences\7f251910
+Node: transform\7f258045
+Ref: show-transformed-names\7f260036
+Node: after\7f266227
+Node: recurse\7f269829
+Node: one\7f272553
+Node: directory\7f273986
+Node: absolute\7f277048
+Ref: absolute-Footnote-1\7f280219
+Node: Date input formats\7f280570
+Node: General date syntax\7f282892
+Node: Calendar date items\7f285843
+Node: Time of day items\7f287840
+Node: Time zone items\7f290036
+Node: Day of week items\7f291270
+Node: Relative items in date strings\7f292259
+Node: Pure numbers in date strings\7f295061
+Node: Seconds since the Epoch\7f296042
+Node: Specifying time zone rules\7f297663
+Node: Authors of parse_datetime\7f300033
+Ref: Authors of get_date\7f300212
+Node: Formats\7f301175
+Node: Compression\7f305863
+Node: gzip\7f306155
+Ref: auto-compress\7f311603
+Ref: gzip-Footnote-1\7f313843
+Node: lbzip2\7f313892
+Node: sparse\7f314989
+Node: Attributes\7f318043
+Node: Portability\7f323864
+Node: Portable Names\7f325350
+Node: dereference\7f326055
+Node: hard links\7f327182
+Ref: hard links-Footnote-1\7f330080
+Node: old\7f330136
+Node: ustar\7f331320
+Node: gnu\7f331911
+Node: posix\7f332788
+Node: PAX keywords\7f333269
+Node: Checksumming\7f338879
+Node: Large or Negative Values\7f340805
+Node: Other Tars\7f342405
+Node: Split Recovery\7f343541
+Node: Sparse Recovery\7f347273
+Ref: extracting sparse v.0.x\7f350906
+Ref: Sparse Recovery-Footnote-1\7f354195
+Ref: Sparse Recovery-Footnote-2\7f354218
+Node: cpio\7f354339
+Node: Media\7f359096
+Node: Device\7f361043
+Ref: size-suffixes\7f365832
+Node: Remote Tape Server\7f366942
+Node: Common Problems and Solutions\7f370665
+Node: Blocking\7f371057
+Node: Format Variations\7f377501
+Node: Blocking Factor\7f378413
+Node: Many\7f390065
+Node: Tape Positioning\7f393859
+Node: mt\7f395732
+Node: Using Multiple Tapes\7f397287
+Node: Multi-Volume Archives\7f399353
+Ref: tape-length\7f400838
+Ref: change volume prompt\7f401398
+Ref: volno-file\7f402269
+Ref: info-script\7f402821
+Ref: Multi-Volume Archives-Footnote-1\7f408008
+Ref: Multi-Volume Archives-Footnote-2\7f408118
+Node: Tape Files\7f408186
+Node: Tarcat\7f409668
+Node: label\7f410713
+Ref: --test-label option\7f412287
+Ref: label-Footnote-1\7f415732
+Ref: label-Footnote-2\7f415841
+Ref: label-Footnote-3\7f415974
+Node: verify\7f416209
+Node: Write Protection\7f419509
+Node: Reliability and security\7f420339
+Node: Reliability\7f420727
+Node: Permissions problems\7f421505
+Node: Data corruption and repair\7f421944
+Node: Race conditions\7f422870
+Node: Security\7f424610
+Node: Privacy\7f425213
+Node: Integrity\7f426462
+Node: Live untrusted data\7f428503
+Node: Security rules of thumb\7f430843
+Node: Changes\7f432372
+Node: Configuring Help Summary\7f435987
+Node: Fixing Snapshot Files\7f442488
+Node: Tar Internals\7f444674
+Node: Standard\7f445006
+Node: Extensions\7f467207
+Node: Sparse Formats\7f469767
+Node: Old GNU Format\7f471057
+Node: PAX 0\7f473458
+Node: PAX 1\7f476589
+Node: Snapshot Files\7f478327
+Node: Dumpdir\7f482788
+Node: Genfile\7f486034
+Node: Generate Mode\7f487127
+Node: Status Mode\7f491424
+Node: Exec Mode\7f493223
+Node: Free Software Needs Free Documentation\7f495968
+Node: GNU Free Documentation License\7f500950
+Node: Index of Command Line Options\7f526163
+Node: Index\7f551662
 \1f
 End Tag Table
index c67ede69e37ebfcf83b77b20ab54573cfdb74af4..84a84547361dcfc8258589847370de9c098a5e9d 100644 (file)
@@ -1,6 +1,6 @@
 This is tar.info, produced by makeinfo version 4.13 from tar.texi.
 
-This manual is for GNU `tar' (version 1.23, 9 March 2010), which
+This manual is for GNU `tar' (version 1.24, 24 October 2010), which
 creates and extracts files from archives.
 
    Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
@@ -8,9 +8,9 @@ creates and extracts files from archives.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.1 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
      "GNU Free Documentation License".
 
@@ -34,7 +34,7 @@ File: tar.info,  Node: Top,  Next: Introduction,  Up: (dir)
 GNU tar: an archiver tool
 *************************
 
-This manual is for GNU `tar' (version 1.23, 9 March 2010), which
+This manual is for GNU `tar' (version 1.24, 24 October 2010), which
 creates and extracts files from archives.
 
    Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
@@ -42,9 +42,9 @@ creates and extracts files from archives.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.1 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
      "GNU Free Documentation License".
 
@@ -66,6 +66,7 @@ document.  The rest of the menu lists all the lower level nodes.
 * Date input formats::
 * Formats::
 * Media::
+* Reliability and security::
 
 Appendices
 
@@ -75,7 +76,7 @@ Appendices
 * Tar Internals::
 * Genfile::
 * Free Software Needs Free Documentation::
-* Copying This Manual::
+* GNU Free Documentation License::
 * Index of Command Line Options::
 * Index::
 
@@ -275,7 +276,7 @@ Date input formats
 * Pure numbers in date strings::   19931219, 1440.
 * Seconds since the Epoch::        @1078100502.
 * Specifying time zone rules::     TZ="America/New_York", TZ="UTC0".
-* Authors of get_date::            Bellovin, Eggert, Salz, Berets, et al.
+* Authors of parse_datetime::      Bellovin, Eggert, Salz, Berets, et al.
 
 Controlling the Archive Format
 
@@ -289,6 +290,10 @@ Using Less Space through Compression
 * gzip::                        Creating and Reading Compressed Archives
 * sparse::                      Archiving Sparse Files
 
+Creating and Reading Compressed Archives
+
+* lbzip2::  Using lbzip2 with GNU `tar'.
+
 Making `tar' Archives More Portable
 
 * Portable Names::              Portable Names
@@ -409,7 +414,7 @@ tutorial explains how to use the three most frequently used operations
 (`create', `list', and `extract') as well as two frequently used
 options (`file' and `verbose').  The other chapters do not refer to the
 tutorial frequently; however, if a section discusses something which is
-a complex variant of a basic concept, there may be a cross reference to
+a complex variant of a basic concept, there may be a cross-reference to
 that basic concept.  (The entire book, including the tutorial, assumes
 that the reader understands some basic concepts of using a Unix-type
 operating system; *note Tutorial::.)
@@ -562,7 +567,7 @@ in version 1.11.  Thomas Bushnell, n/BSG and Amy Gorin worked on a
 tutorial and manual for GNU `tar'.  Franc,ois Pinard put version 1.11.8
 of the manual together by taking information from all these sources and
 merging them.  Melissa Weisshaus finally edited and redesigned the book
-to create version 1.12.  The book for versions from 1.14 up to 1.23
+to create version 1.12.  The book for versions from 1.14 up to 1.24
 were edited by the current maintainer, Sergey Poznyakoff.
 
    For version 1.12, Daniel Hagerty contributed a great deal of
@@ -2302,9 +2307,9 @@ File: tar.info,  Node: Option Summary,  Next: Short Option Summary,  Prev: Opera
 
 `--dereference'
 `-h'
-     When creating a `tar' archive, `tar' will archive the file that a
-     symbolic link points to, rather than archiving the symlink.  *Note
-     dereference::.
+     When reading or writing a file to be archived, `tar' accesses the
+     file that a symbolic link points to, rather than the symlink
+     itself.  *Note dereference::.
 
 `--directory=DIR'
 `-C DIR'
@@ -2404,6 +2409,24 @@ File: tar.info,  Node: Option Summary,  Next: Short Option Summary,  Prev: Opera
 
      *Note Formats::, for a detailed discussion of these formats.
 
+`--full-time'
+     This option instructs `tar' to print file times to their full
+     resolution.  Usually this means 1-second resolution, but that
+     depends on the underlying file system.  The `--full-time' option
+     takes effect only when detailed output (verbosity level 2 or
+     higher) has been requested using the `--verbose' option, e.g.,
+     when listing or extracting archives:
+
+          $ tar -t -v --full-time -f archive.tar
+
+     or, when creating an archive:
+
+          $ tar -c -vv --full-time -f archive.tar .
+
+     Notice, thar when creating the archive you need to specify
+     `--verbose' twice to get a detailed output (*note verbose
+     tutorial::).
+
 `--group=GROUP'
      Files added to the `tar' archive will have a group ID of GROUP,
      rather than the group from the source file.  GROUP is first decoded
@@ -2491,7 +2514,7 @@ File: tar.info,  Node: Option Summary,  Next: Short Option Summary,  Prev: Opera
 
 `--level=N'
      Force incremental backup of level N.  As of GNU `tar' version
-     1.23, the option `--level=0' truncates the snapshot file, thereby
+     1.24, the option `--level=0' truncates the snapshot file, thereby
      forcing the level 0 dump.  Other values of N are effectively
      ignored.  *Note --level=0::, for details and examples.
 
@@ -2733,9 +2756,12 @@ File: tar.info,  Node: Option Summary,  Next: Short Option Summary,  Prev: Opera
      Specifies that `tar' should reblock its input, for reading from
      pipes on systems with buggy implementations.  *Note Reading::.
 
-`--record-size=SIZE'
+`--record-size=SIZE[SUF]'
      Instructs `tar' to use SIZE bytes per record when accessing the
-     archive.  *Note Blocking Factor::.
+     archive.  The argument can be suffixed with a "size suffix", e.g.
+     `--record-size=10K' for 10 Kilobytes.  *Note size-suffixes::, for
+     a list of valid suffixes.   *Note Blocking Factor::, for a detailed
+     description of this option.
 
 `--recursion'
      With this option, `tar' recurses into directories (default).
@@ -2842,10 +2868,14 @@ File: tar.info,  Node: Option Summary,  Next: Short Option Summary,  Prev: Opera
      Alters the suffix `tar' uses when backing up files from the default
      `~'.  *Note backup::.
 
-`--tape-length=NUM'
-`-L NUM'
+`--tape-length=NUM[SUF]'
+`-L NUM[SUF]'
      Specifies the length of tapes that `tar' is writing as being
-     NUM x 1024 bytes long.  *Note Using Multiple Tapes::.
+     NUM x 1024 bytes long.  If optional SUF is given, it specifies a
+     multiplicative factor to be used instead of 1024.  For example,
+     `-L2M' means 2 megabytes.  *Note size-suffixes::, for a list of
+     allowed suffixes.  *Note Using Multiple Tapes::, for a detailed
+     discussion of this option.
 
 `--test-label'
      Reads the volume label.  If an argument is specified, test whether
@@ -2886,10 +2916,10 @@ File: tar.info,  Node: Option Summary,  Next: Short Option Summary,  Prev: Opera
      `--show-transformed-names' option (*note show-transformed-names::).
 
 `--uncompress'
-     (See `--compress'. *note gzip::)
+     (See `--compress', *note gzip::)
 
 `--ungzip'
-     (See `--gzip'. *note gzip::)
+     (See `--gzip', *note gzip::)
 
 `--unlink-first'
 `-U'
@@ -3028,7 +3058,7 @@ information about its name, version, origin and legal status, all on
 standard output, and then exit successfully.  For example,
 `tar --version' might print:
 
-     tar (GNU tar) 1.23
+     tar (GNU tar) 1.24
      Copyright (C) 2010 Free Software Foundation, Inc.
      Copyright (C) 2010 Free Software Foundation, Inc.
      License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
@@ -3880,9 +3910,8 @@ example:
      $ tar --extract -vv --occurrence --file=collection.tar blues
      -rw-r--r-- me user     21 1996-09-23 16:44 blues
 
-   *Note Writing::, for more information on `--extract' and *Note
--occurrence: Option Summary, for the description of `--occurrence'
-option.
+   *Note Writing::, for more information on `--extract' and see *note
+-occurrence: Option Summary, for a description of `--occurrence' option.
 
 \1f
 File: tar.info,  Node: update,  Next: concatenate,  Prev: append,  Up: Advanced tar
@@ -3924,7 +3953,7 @@ tell you that it didn't do anything (which may end up confusing you).
 `classical', in your practice directory, and some extra text to the
 file `blues', using any text editor.  Then invoke `tar' with the
 `update' operation and the `--verbose' (`-v') option specified, using
-the names of all the files in the practice directory as file name
+the names of all the files in the `practice' directory as file name
 arguments:
 
      $ tar --update -v -f collection.tar blues folk rock classical
@@ -4029,8 +4058,9 @@ improperly combined using the `cat' shell utility.
 
    ---------- Footnotes ----------
 
-   (1) This can cause multiple members to have the same name, for
-information on how this affects reading the archive, *note multiple::.
+   (1) This can cause multiple members to have the same name.  For
+information on how this affects reading the archive, see *note
+multiple::.
 
 \1f
 File: tar.info,  Node: delete,  Next: compare,  Prev: concatenate,  Up: Advanced tar
@@ -4109,7 +4139,7 @@ report an error message.)
    The spirit behind the `--compare' (`--diff', `-d') option is to
 check whether the archive represents the current state of files on
 disk, more than validating the integrity of the archive media.  For
-this latter goal, *Note verify::.
+this latter goal, see *note verify::.
 
 \1f
 File: tar.info,  Node: create options,  Next: extract options,  Prev: Advanced tar,  Up: operations
@@ -4163,8 +4193,8 @@ stored in the archive.
      `/' or `.'.  In the latter case, the modification time of that
      file will be used.
 
-     The following example will set the modification date to 00:00:00
-     UTC, January 1, 1970:
+     The following example will set the modification date to 00:00:00,
+     January 1, 1970:
 
           $ tar -c -f archive.tar --mtime='1970-01-01' .
 
@@ -4759,9 +4789,9 @@ space, you can use `--starting-file=NAME' (`-K NAME') to start
 extracting only after member NAME of the archive.  This assumes, of
 course, that there is now free space, or that you are now extracting
 into a different file system.  (You could also choose to suspend `tar',
-remove unnecessary files from the file system, and then restart the
-same `tar' operation.  In this case, `--starting-file' is not necessary.
-*Note Incremental Dumps::, *Note interactive::, and *note exclude::.)
+remove unnecessary files from the file system, and then resume the same
+`tar' operation.  In this case, `--starting-file' is not necessary.)
+See also *note interactive::, and *note exclude::.
 
 \1f
 File: tar.info,  Node: Same Order,  Prev: Starting File,  Up: Scarce
@@ -4895,7 +4925,7 @@ The command also works using long option forms:
 
 or
 
-     $ tar --directory sourcedir --create --file=- . \
+     $ tar --directory sourcedir --create --file=- . \
             | tar --directory targetdir --extract --file=-
 
 This is one of the easiest methods to transfer a `tar' archive.
@@ -5147,19 +5177,7 @@ system, one would do(1):
    To list the contents of an incremental archive, use `--list' (*note
 list::), as usual.  To obtain more information about the archive, use
 `--listed-incremental' or `--incremental' combined with two `--verbose'
-optionsTwo
-`--verbose' options were selected to avoid breaking usual
-verbose listing output (`--list --verbose') when using in
-scripts.
-
-
-
-
-
-Versions of GNU `tar' up to 1.15.1 used to dump verbatim binary
-contents of the DUMPDIR header (with terminating nulls) when
-`--incremental' or `--listed-incremental' option was
-given, no matter what the verbosity level(2):
+options(2):
 
      tar --list --incremental --verbose --verbose archive.tar
 
@@ -5953,7 +5971,6 @@ resulting archive `foo.tar' will contain:
      libc.a
 
 
-
    Notice that the option parsing algorithm used with `-T' is stricter
 than the one used by shell.  Namely, when specifying option arguments,
 you should observe the following rules:
@@ -6092,7 +6109,7 @@ difficult to catch using text editors.
      systems: `CVS', `RCS', `SCCS', `SVN', `Arch', `Bazaar',
      `Mercurial', and `Darcs'.
 
-     As of version 1.23, the following files are excluded:
+     As of version 1.24, the following files are excluded:
 
         * `CVS/', and everything under it
 
@@ -6872,8 +6889,8 @@ transformations.  The result is:
             --show-transformed /lib
      drwxr-xr-x root/root       0 2008-07-08 16:20 /usr/local/lib/
      -rwxr-xr-x root/root 1250840 2008-05-25 07:44 /usr/local/lib/libc-2.3.2.so
-     lrwxrwxrwx root/root       0 2008-06-24 17:12 /usr/local/lib/libc.so.6 ->
-     libc-2.3.2.so
+     lrwxrwxrwx root/root       0 2008-06-24 17:12 /usr/local/lib/libc.so.6 \
+      -> libc-2.3.2.so
 
    Unlike `--strip-components', `--transform' can be used in any GNU
 `tar' operation mode.  For example, the following command adds files to
@@ -7232,6 +7249,9 @@ directory first, and then avoid absolute notation.  For example:
 
      $ tar -c -f archive.tar -C / home
 
+   *Note Integrity::, for some of the security-related implications of
+using this option.
+
    ---------- Footnotes ----------
 
    (1) A side effect of this is that when `--create' is used with
@@ -7275,8 +7295,8 @@ First, a quote:
 
    This section describes the textual date representations that GNU
 programs accept.  These are the strings you, as a user, can supply as
-arguments to the various programs.  The C interface (via the `get_date'
-function) is not described here.
+arguments to the various programs.  The C interface (via the
+`parse_datetime' function) is not described here.
 
 * Menu:
 
@@ -7289,7 +7309,7 @@ function) is not described here.
 * Pure numbers in date strings::   19931219, 1440.
 * Seconds since the Epoch::        @1078100502.
 * Specifying time zone rules::     TZ="America/New_York", TZ="UTC0".
-* Authors of get_date::            Bellovin, Eggert, Salz, Berets, et al.
+* Authors of parse_datetime::      Bellovin, Eggert, Salz, Berets, et al.
 
 \1f
 File: tar.info,  Node: General date syntax,  Next: Calendar date items,  Up: Date input formats
@@ -7636,7 +7656,7 @@ UTC, `@915148800' represents 1999-01-01 00:00:00 UTC, and there is no
 way to represent the intervening leap second 1998-12-31 23:59:60 UTC.
 
 \1f
-File: tar.info,  Node: Specifying time zone rules,  Next: Authors of get_date,  Prev: Seconds since the Epoch,  Up: Date input formats
+File: tar.info,  Node: Specifying time zone rules,  Next: Authors of parse_datetime,  Prev: Seconds since the Epoch,  Up: Date input formats
 
 7.9 Specifying time zone rules
 ==============================
@@ -7684,20 +7704,25 @@ saving regimes.  *Note Specifying the Time Zone with `TZ': (libc)TZ
 Variable.
 
 \1f
-File: tar.info,  Node: Authors of get_date,  Prev: Specifying time zone rules,  Up: Date input formats
+File: tar.info,  Node: Authors of parse_datetime,  Prev: Specifying time zone rules,  Up: Date input formats
 
-7.10 Authors of `get_date'
-==========================
+7.10 Authors of `parse_datetime'
+================================
 
-`get_date' was originally implemented by Steven M. Bellovin
-(<smb@research.att.com>) while at the University of North Carolina at
-Chapel Hill.  The code was later tweaked by a couple of people on
-Usenet, then completely overhauled by Rich $alz (<rsalz@bbn.com>) and
-Jim Berets (<jberets@bbn.com>) in August, 1990.  Various revisions for
-the GNU system were made by David MacKenzie, Jim Meyering, Paul Eggert
-and others.
+`parse_datetime' started life as `getdate', as originally implemented
+by Steven M. Bellovin (<smb@research.att.com>) while at the University
+of North Carolina at Chapel Hill.  The code was later tweaked by a
+couple of people on Usenet, then completely overhauled by Rich $alz
+(<rsalz@bbn.com>) and Jim Berets (<jberets@bbn.com>) in August, 1990.
+Various revisions for the GNU system were made by David MacKenzie, Jim
+Meyering, Paul Eggert and others, including renaming it to `get_date' to
+avoid a conflict with the alternative Posix function `getdate', and a
+later rename to `parse_datetime'.  The Posix function `getdate' can
+parse more locale-specific dates using `strptime', but relies on an
+environment variable and external file, and lacks the thread-safety of
+`parse_datetime'.
 
    This chapter was originally produced by Franc,ois Pinard
-(<pinard@iro.umontreal.ca>) from the `getdate.y' source code, and then
-edited by K. Berry (<kb@cs.umb.edu>).
+(<pinard@iro.umontreal.ca>) from the `parse_datetime.y' source code,
+and then edited by K. Berry (<kb@cs.umb.edu>).
 
index cd19ccc8f1f86c8ce0507a8d7e9bb0630c78e328..a8f408eb5aa0493d198606608822c7e34263d4b9 100644 (file)
@@ -1,6 +1,6 @@
 This is tar.info, produced by makeinfo version 4.13 from tar.texi.
 
-This manual is for GNU `tar' (version 1.23, 9 March 2010), which
+This manual is for GNU `tar' (version 1.24, 24 October 2010), which
 creates and extracts files from archives.
 
    Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
@@ -8,9 +8,9 @@ creates and extracts files from archives.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.1 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+     being "A GNU Manual", and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
      "GNU Free Documentation License".
 
@@ -77,7 +77,7 @@ v7
      Makefiles.  This practice will change in the future, in the
      meantime, however this means that projects containing file names
      more than 99 characters long will not be able to use GNU `tar'
-     1.23 and Automake prior to 1.9.
+     1.24 and Automake prior to 1.9.
 
 ustar
      Archive format defined by POSIX.1-1988 specification.  It stores
@@ -180,7 +180,7 @@ program.  For example:
 
      $ tar cfz archive.tar.gz .
 
-   You can also let GNU `tar' select the compression program basing on
+   You can also let GNU `tar' select the compression program based on
 the suffix of the archive file name. This is done using
 `--auto-compress' (`-a') command line option. For example, the
 following invocation will use `bzip2' for compression:
@@ -192,7 +192,7 @@ whereas the following one will use `lzma':
      $ tar cfa archive.tar.lzma .
 
    For a complete list of file name suffixes recognized by GNU `tar',
-*note auto-compress::.
+see *note auto-compress::.
 
    Reading compressed archive is even simpler: you don't need to specify
 any additional options as GNU `tar' recognizes its format
@@ -207,7 +207,7 @@ archive created in previous example:
    The format recognition algorithm is based on "signatures", a special
 byte sequences in the beginning of file, that are specific for certain
 compression formats.  If this approach fails, `tar' falls back to using
-archive name suffix to determine its format (*Note auto-compress::, for
+archive name suffix to determine its format (*note auto-compress::, for
 a list of recognized suffixes).
 
    The only case when you have to specify a decompression option while
@@ -232,7 +232,73 @@ members to them.  Likewise, you cannot append another `tar' archive to
 a compressed archive using `--concatenate' (`-A').  Secondly,
 multi-volume archives cannot be compressed.
 
-   The following table summarizes compression options used by GNU `tar'.
+   The following options allow to select a particular compressor
+program:
+
+`-z'
+`--gzip'
+`--ungzip'
+     Filter the archive through `gzip'.
+
+`-J'
+`--xz'
+     Filter the archive through `xz'.
+
+`-j'
+`--bzip2'
+     Filter the archive through `bzip2'.
+
+`--lzip'
+     Filter the archive through `lzip'.
+
+`--lzma'
+     Filter the archive through `lzma'.
+
+`--lzop'
+     Filter the archive through `lzop'.
+
+`-Z'
+`--compress'
+`--uncompress'
+     Filter the archive through `compress'.
+
+   When any of these options is given, GNU `tar' searches the compressor
+binary in the current path and invokes it.  The name of the compressor
+program is specified at compilation time using a corresponding
+`--with-COMPNAME' option to `configure', e.g.  `--with-bzip2' to select
+a specific `bzip2' binary.  *Note lbzip2::, for a detailed discussion.
+
+   The output produced by `tar --help' shows the actual compressor
+names along with each of these options.
+
+   You can use any of these options on physical devices (tape drives,
+etc.) and remote files as well as on normal files; data to or from such
+devices or remote files is reblocked by another copy of the `tar'
+program to enforce the specified (or default) record size.  The default
+compression parameters are used.  Most compression programs allow to
+override these by setting a program-specific environment variable.  For
+example, when using `gzip' you can use `GZIP' as in the example below:
+
+     $ GZIP=--best tar cfz archive.tar.gz subdir
+
+Another way would be to use the `-I' option instead (see below), e.g.:
+
+     $ tar -cf archive.tar.gz -I 'gzip --best' subdir
+
+Finally, the third, traditional, way to achieve the same result is to
+use pipe:
+
+     $ tar cf - subdir | gzip --best -c - > archive.tar.gz
+
+   About corrupted compressed archives: compressed files have no
+redundancy, for maximum compression.  The adaptive nature of the
+compression scheme means that the compression tables are implicitly
+spread all over the archive.  If you lose a few blocks, the dynamic
+construction of the compression tables becomes unsynchronized, and there
+is little chance that you could recover later in the archive.
+
+   Another compression options provide a better control over creating
+compressed archives.  These are:
 
 `--auto-compress'
 `-a'
@@ -256,62 +322,6 @@ multi-volume archives cannot be compressed.
      `.lzo'               `lzop'
      `.xz'                `xz'
 
-`-z'
-`--gzip'
-`--ungzip'
-     Filter the archive through `gzip'.
-
-     You can use `--gzip' and `--gunzip' on physical devices (tape
-     drives, etc.) and remote files as well as on normal files; data to
-     or from such devices or remote files is reblocked by another copy
-     of the `tar' program to enforce the specified (or default) record
-     size.  The default compression parameters are used; if you need to
-     override them, set `GZIP' environment variable, e.g.:
-
-          $ GZIP=--best tar cfz archive.tar.gz subdir
-
-     Another way would be to avoid the `--gzip' (`--gunzip',
-     `--ungzip', `-z') option and run `gzip' explicitly:
-
-          $ tar cf - subdir | gzip --best -c - > archive.tar.gz
-
-     About corrupted compressed archives: `gzip''ed files have no
-     redundancy, for maximum compression.  The adaptive nature of the
-     compression scheme means that the compression tables are implicitly
-     spread all over the archive.  If you lose a few blocks, the dynamic
-     construction of the compression tables becomes unsynchronized, and
-     there is little chance that you could recover later in the archive.
-
-     There are pending suggestions for having a per-volume or per-file
-     compression in GNU `tar'.  This would allow for viewing the
-     contents without decompression, and for resynchronizing
-     decompression at every volume or file, in case of corrupted
-     archives.  Doing so, we might lose some compressibility.  But this
-     would have make recovering easier.  So, there are pros and cons.
-     We'll see!
-
-`-J'
-`--xz'
-     Filter the archive through `xz'.  Otherwise like `--gzip'.
-
-`-j'
-`--bzip2'
-     Filter the archive through `bzip2'.  Otherwise like `--gzip'.
-
-`--lzip'
-     Filter the archive through `lzip'.  Otherwise like `--gzip'.
-
-`--lzma'
-     Filter the archive through `lzma'.  Otherwise like `--gzip'.
-
-`--lzop'
-     Filter the archive through `lzop'.  Otherwise like `--gzip'.
-
-`-Z'
-`--compress'
-`--uncompress'
-     Filter the archive through `compress'.  Otherwise like `--gzip'.
-
 `--use-compress-program=PROG'
 `-I=PROG'
      Use external compression program PROG.  Use this option if you are
@@ -350,10 +360,43 @@ Likewise, the command below will list its contents:
 
      $ tar -tf foo.tar.gpgz -Igpgz .
 
+* Menu:
+
+* lbzip2::  Using lbzip2 with GNU `tar'.
+
    ---------- Footnotes ----------
 
    (1) It also had patent problems in the past.
 
+\1f
+File: tar.info,  Node: lbzip2,  Up: gzip
+
+8.1.1.1 Using lbzip2 with GNU `tar'.
+....................................
+
+`Lbzip2' is a multithreaded utility for handling `bzip2' compression,
+written by Laszlo Ersek.  It makes use of multiple processors to speed
+up its operation and in general works considerably faster than `bzip2'.
+For a detailed description of `lbzip2' see
+`http://freshmeat.net/projects/lbzip2' and lbzip2: parallel bzip2
+utility
+(http://www.linuxinsight.com/lbzip2-parallel-bzip2-utility.html).
+
+   Recent versions of `lbzip2' are mostly command line compatible with
+`bzip2', which makes it possible to automatically invoke it via the
+`--bzip2' GNU `tar' command line option.  To do so, GNU `tar' must be
+configured with the `--with-bzip2' command line option, like this:
+
+     $ ./configure --with-bzip2=lbzip2 [OTHER-OPTIONS]
+
+   Once configured and compiled this way, `tar --help' will show the
+following:
+
+     $ tar --help | grep -- --bzip2
+       -j, --bzip2                filter the archive through lbzip2
+
+which means that running `tar --bzip2' will invoke `lbzip2'.
+
 \1f
 File: tar.info,  Node: sparse,  Prev: gzip,  Up: Compression
 
@@ -605,27 +648,22 @@ File: tar.info,  Node: dereference,  Next: hard links,  Prev: Portable Names,  U
 
 Normally, when `tar' archives a symbolic link, it writes a block to the
 archive naming the target of the link.  In that way, the `tar' archive
-is a faithful record of the file system contents.  `--dereference'
-(`-h') is used with `--create' (`-c'), and causes `tar' to archive the
-files symbolic links point to, instead of the links themselves.  When
-this option is used, when `tar' encounters a symbolic link, it will
-archive the linked-to file, instead of simply recording the presence of
-a symbolic link.
-
-   The name under which the file is stored in the file system is not
-recorded in the archive.  To record both the symbolic link name and the
-file name in the system, archive the file under both names.  If all
-links were recorded automatically by `tar', an extracted file might be
-linked to a file name that no longer exists in the file system.
-
-   If a linked-to file is encountered again by `tar' while creating the
-same archive, an entire second copy of it will be stored.  (This
-_might_ be considered a bug.)
-
-   So, for portable archives, do not archive symbolic links as such,
-and use `--dereference' (`-h'): many systems do not support symbolic
-links, and moreover, your distribution might be unusable if it contains
-unresolved symbolic links.
+is a faithful record of the file system contents.  When `--dereference'
+(`-h') is used with `--create' (`-c'), `tar' archives the files
+symbolic links point to, instead of the links themselves.
+
+   When creating portable archives, use `--dereference' (`-h'): some
+systems do not support symbolic links, and moreover, your distribution
+might be unusable if it contains unresolved symbolic links.
+
+   When reading from an archive, the `--dereference' (`-h') option
+causes `tar' to follow an already-existing symbolic link when `tar'
+writes or reads a file named in the archive.  Ordinarily, `tar' does
+not follow such a link, though it may remove the link before writing a
+new file.  *Note Dealing with Old Files::.
+
+   The `--dereference' option is unsafe if an untrusted user can modify
+directories while `tar' is running.  *Note Security::.
 
 \1f
 File: tar.info,  Node: hard links,  Next: old,  Prev: dereference,  Up: Portability
@@ -736,7 +774,7 @@ File: tar.info,  Node: ustar,  Next: gnu,  Prev: old,  Up: Portability
 
 Archive format defined by POSIX.1-1988 specification is called `ustar'.
 Although it is more flexible than the V7 format, it still has many
-restrictions (*Note ustar: Formats, for the detailed description of
+restrictions (*note ustar: Formats, for the detailed description of
 `ustar' format).  Along with V7 format, `ustar' format is a good choice
 for archives intended to be read with other implementations of `tar'.
 
@@ -1270,7 +1308,7 @@ header:
 
    (1) *Note PAX 1::.
 
-   (2) technically speaking, N is a "process ID" of the `tar' process
+   (2) Technically speaking, N is a "process ID" of the `tar' process
 which created the archive (*note PAX keywords::).
 
 \1f
@@ -1378,7 +1416,7 @@ test, because the resulting archive gets smaller, and GNU `cpio' can no
 longer read it).
 
 \1f
-File: tar.info,  Node: Media,  Next: Changes,  Prev: Formats,  Up: Top
+File: tar.info,  Node: Media,  Next: Reliability and security,  Prev: Formats,  Up: Top
 
 9 Tapes and Other Archive Media
 *******************************
@@ -1522,19 +1560,37 @@ could also check for `DEFTAPE' in `<sys/mtio.h>'.
      *Note Multi-Volume Archives::.
 
 `-L NUM'
-`--tape-length=NUM'
-     Change tape after writing NUM x 1024 bytes.
-
-     This option might be useful when your tape drivers do not properly
-     detect end of physical tapes.  By being slightly conservative on
-     the maximum tape length, you might avoid the problem entirely.
+`--tape-length=SIZE[SUF]'
+     Change tape after writing SIZE units of data.  Unless SUF is
+     given, SIZE is treated as kilobytes, i.e. `SIZE x 1024' bytes.
+     The following suffixes alter this behavior:
 
-`-F FILE'
-`--info-script=FILE'
-`--new-volume-script=FILE'
-     Execute `file' at end of each tape.  This implies `--multi-volume'
-     (`-M').  *Note info-script::, for a detailed description of this
-     option.
+     Suffix        Units                Byte Equivalent
+     -------------------------------------------------------- 
+     b             Blocks               SIZE x 512
+     B             Kilobytes            SIZE x 1024
+     c             Bytes                SIZE
+     G             Gigabytes            SIZE x 1024^3
+     K             Kilobytes            SIZE x 1024
+     k             Kilobytes            SIZE x 1024
+     M             Megabytes            SIZE x 1024^2
+     P             Petabytes            SIZE x 1024^5
+     T             Terabytes            SIZE x 1024^4
+     w             Words                SIZE x 2
+
+     Table 9.1: Size Suffixes
+
+        This option might be useful when your tape drivers do not
+     properly detect end of physical tapes.  By being slightly
+     conservative on the maximum tape length, you might avoid the
+     problem entirely.
+
+  `-F FILE'
+  `--info-script=FILE'
+  `--new-volume-script=FILE'
+        Execute `file' at end of each tape.  This implies
+     `--multi-volume' (`-M').  *Note info-script::, for a detailed
+     description of this option.
 
 \1f
 File: tar.info,  Node: Remote Tape Server,  Next: Common Problems and Solutions,  Prev: Device,  Up: Media
@@ -2256,14 +2312,22 @@ fails on some operating systems or on some devices.  If `tar' cannot
 detect the end of the tape itself, you can use `--tape-length' option
 to inform it about the capacity of the tape:
 
-`--tape-length=SIZE'
-`-L SIZE'
-     Set maximum length of a volume.  The SIZE argument should then be
-     the usable size of the tape in units of 1024 bytes.  This option
-     selects `--multi-volume' automatically.  For example:
+`--tape-length=SIZE[SUF]'
+`-L SIZE[SUF]'
+     Set maximum length of a volume.  The SUF, if given, specifies
+     units in which SIZE is expressed, e.g. `2M' mean 2 megabytes
+     (*note Table 9.1: size-suffixes, for a list of allowed size
+     suffixes).  Without SUF, units of 1024 bytes (kilobyte) are
+     assumed.
+
+     This option selects `--multi-volume' automatically.  For example:
 
           $ tar --create --tape-length=41943040 --file=/dev/tape FILES
 
+     or, which is equivalent:
+
+          $ tar --create --tape-length=4G --file=/dev/tape FILES
+
    When GNU `tar' comes to the end of a storage media, it asks you to
 change the volume.  The built-in prompt for POSIX locale is(1):
 
@@ -2451,8 +2515,9 @@ listed with `--list'.  If you are creating a multi-volume archive with
 `--multi-volume' (*note Using Multiple Tapes::), then the volume label
 will have `Volume NNN' appended to the name you give, where NNN is the
 number of the volume of the archive.  If you use the
-`--label=VOLUME-LABEL') option when reading an archive, it checks to
-make sure the label on the tape matches the one you give. *Note label::.
+`--label=VOLUME-LABEL' option when reading an archive, it checks to
+make sure the label on the tape matches the one you gave.  *Note
+label::.
 
    When `tar' writes an archive to tape, it creates a single tape file.
 If multiple archives are written to the same tape, one after the other,
@@ -2498,14 +2563,12 @@ File: tar.info,  Node: label,  Next: verify,  Prev: Using Multiple Tapes,  Up: M
 9.7 Including a Label in the Archive
 ====================================
 
-     _(This message will disappear, once this node revised.)_
-
 To avoid problems caused by misplaced paper labels on the archive
-media, you can include a "label" entry--an archive member which
-contains the name of the archive--in the archive itself.  Use the
-`--label=ARCHIVE-LABEL' (`-V ARCHIVE-LABEL') option in conjunction with
-the `--create' operation to include a label entry in the archive as it
-is being created.
+media, you can include a "label" entry -- an archive member which
+contains the name of the archive -- in the archive itself.  Use the
+`--label=ARCHIVE-LABEL' (`-V ARCHIVE-LABEL') option(1) in conjunction
+with the `--create' operation to include a label entry in the archive
+as it is being created.
 
 `--label=ARCHIVE-LABEL'
 `-V ARCHIVE-LABEL'
@@ -2531,7 +2594,7 @@ marked as in the example below:
 
    However, `--list' option will cause listing entire contents of the
 archive, which may be undesirable (for example, if the archive is
-stored on a tape).  You can request checking only the volume by
+stored on a tape).  You can request checking only the volume label by
 specifying `--test-label' option.  This option reads only the first
 block of an archive, so it can be used with slow storage devices.  For
 example:
@@ -2539,14 +2602,25 @@ example:
      $ tar --test-label --file=iamanarchive
      iamalabel
 
-   If `--test-label' is used with a single command line argument, `tar'
-compares the volume label with the argument.  It exits with code 0 if
-the two strings match, and with code 2 otherwise.  In this case no
-output is displayed.  For example:
+   If `--test-label' is used with one or more command line arguments,
+`tar' compares the volume label with each argument.  It exits with code
+0 if a match is found, and with code 1 otherwise(2).  No output is
+displayed, unless you also used the `--verbose' option.  For example:
 
-     $ tar --test-label --file=iamanarchive 'iamalable'
+     $ tar --test-label --file=iamanarchive 'iamalabel'
      => 0
-     $ tar --test-label --file=iamanarchive 'iamalable' alabel
+     $ tar --test-label --file=iamanarchive 'alabel'
+     => 1
+
+   When used with the `--verbose' option, `tar' prints the actual
+volume label (if any), and a verbose diagnostics in case of a mismatch:
+
+     $ tar --test-label --verbose --file=iamanarchive 'iamalabel'
+     iamalabel
+     => 0
+     $ tar --test-label --verbose --file=iamanarchive 'alabel'
+     iamalabel
+     tar: Archive label mismatch
      => 1
 
    If you request any operation, other than `--create', along with
@@ -2566,16 +2640,13 @@ not labeled at all.
 label doesn't match the ARCHIVE-LABEL specified.  In those cases,
 ARCHIVE-LABEL argument is interpreted as a globbing-style pattern which
 must match the actual magnetic volume label.  *Note exclude::, for a
-precise description of how match is attempted(1).  If the switch
+precise description of how match is attempted(3).  If the switch
 `--multi-volume' (`-M') is being used, the volume label matcher will
 also suffix ARCHIVE-LABEL by ` Volume [1-9]*' if the initial match
 fails, before giving up.  Since the volume numbering is automatically
 added in labels at creation time, it sounded logical to equally help
 the user taking care of it when the archive is being read.
 
-   The `--label' was once called `--volume', but is not available under
-that name anymore.
-
    You can also use `--label' to get a common information on all tapes
 of a series.  For having this information different in each series
 created through a single script used on a regular basis, just manage to
@@ -2585,17 +2656,27 @@ get some date string as part of the label.  For example:
      $ tar --create --file=/dev/tape --multi-volume \
           --label="Daily backup for `date +%Y-%m-%d`"
 
-   Also note that each label has its own date and time, which
-corresponds to when GNU `tar' initially attempted to write it, often
-soon after the operator launches `tar' or types the carriage return
-telling that the next tape is ready.  Comparing date labels does give
-an idea of tape throughput only if the delays for rewinding tapes and
-the operator switching them were negligible, which is usually not the
-case.
+   Some more notes about volume labels:
+
+   * Each label has its own date and time, which corresponds to the
+     time when GNU `tar' initially attempted to write it, often soon
+     after the operator launches `tar' or types the carriage return
+     telling that the next tape is ready.
+
+   * Comparing date labels to get an idea of tape throughput is
+     unreliable.  It gives correct results only if the delays for
+     rewinding tapes and the operator switching them were negligible,
+     which is usually not the case.
 
    ---------- Footnotes ----------
 
-   (1) Previous versions of `tar' used full regular expression
+   (1) Until version 1.10, that option was called `--volume', but is
+not available under that name anymore.
+
+   (2) Note that GNU `tar' versions up to 1.23 indicated mismatch with
+an exit code 2 and printed a spurious diagnostics on stderr.
+
+   (3) Previous versions of `tar' used full regular expression
 matching, or before that, only exact string matching, instead of
 wildcard matchers.  We decided for the sake of simplicity to use a
 uniform matching device through `tar'.
@@ -2689,13 +2770,290 @@ which can be removed from the center of a tape reel, or some other
 changeable feature.
 
 \1f
-File: tar.info,  Node: Changes,  Next: Configuring Help Summary,  Prev: Media,  Up: Top
+File: tar.info,  Node: Reliability and security,  Next: Changes,  Prev: Media,  Up: Top
+
+10 Reliability and Security
+***************************
+
+The `tar' command reads and writes files as any other application does,
+and is subject to the usual caveats about reliability and security.
+This section contains some commonsense advice on the topic.
+
+* Menu:
+
+* Reliability::
+* Security::
+
+\1f
+File: tar.info,  Node: Reliability,  Next: Security,  Up: Reliability and security
+
+10.1 Reliability
+================
+
+Ideally, when `tar' is creating an archive, it reads from a file system
+that is not being modified, and encounters no errors or inconsistencies
+while reading and writing.  If this is the case, the archive should
+faithfully reflect what was read.  Similarly, when extracting from an
+archive, ideally `tar' ideally encounters no errors and the extracted
+files faithfully reflect what was in the archive.
+
+   However, when reading or writing real-world file systems, several
+things can go wrong; these include permissions problems, corruption of
+data, and race conditions.
+
+* Menu:
+
+* Permissions problems::
+* Data corruption and repair::
+* Race conditions::
+
+\1f
+File: tar.info,  Node: Permissions problems,  Next: Data corruption and repair,  Up: Reliability
+
+10.1.1 Permissions Problems
+---------------------------
+
+If `tar' encounters errors while reading or writing files, it normally
+reports an error and exits with nonzero status.  The work it does may
+therefore be incomplete.  For example, when creating an archive, if
+`tar' cannot read a file then it cannot copy the file into the archive.
+
+\1f
+File: tar.info,  Node: Data corruption and repair,  Next: Race conditions,  Prev: Permissions problems,  Up: Reliability
+
+10.1.2 Data Corruption and Repair
+---------------------------------
+
+If an archive becomes corrupted by an I/O error, this may corrupt the
+data in an extracted file.  Worse, it may corrupt the file's metadata,
+which may cause later parts of the archive to become misinterpreted.
+An tar-format archive contains a checksum that most likely will detect
+errors in the metadata, but it will not detect errors in the data.
+
+   If data corruption is a concern, you can compute and check your own
+checksums of an archive by using other programs, such as `cksum'.
+
+   When attempting to recover from a read error or data corruption in an
+archive, you may need to skip past the questionable data and read the
+rest of the archive.  This requires some expertise in the archive
+format and in other software tools.
+
+\1f
+File: tar.info,  Node: Race conditions,  Prev: Data corruption and repair,  Up: Reliability
+
+10.1.3 Race conditions
+----------------------
+
+If some other process is modifying the file system while `tar' is
+reading or writing files, the result may well be inconsistent due to
+race conditions.  For example, if another process creates some files in
+a directory while `tar' is creating an archive containing the
+directory's files, `tar' may see some of the files but not others, or
+it may see a file that is in the process of being created.  The
+resulting archive may not be a snapshot of the file system at any point
+in time.  If an application such as a database system depends on an
+accurate snapshot, restoring from the `tar' archive of a live file
+system may therefore break that consistency and may break the
+application.  The simplest way to avoid the consistency issues is to
+avoid making other changes to the file system while tar is reading it
+or writing it.
+
+   When creating an archive, several options are available to avoid race
+conditions.  Some hosts have a way of snapshotting a file system, or of
+temporarily suspending all changes to a file system, by (say)
+suspending the only virtual machine that can modify a file system; if
+you use these facilities and have `tar -c' read from a snapshot when
+creating an archive, you can avoid inconsistency problems.  More
+drastically, before starting `tar' you could suspend or shut down all
+processes other than `tar' that have access to the file system, or you
+could unmount the file system and then mount it read-only.
+
+   When extracting from an archive, one approach to avoid race
+conditions is to create a directory that no other process can write to,
+and extract into that.
+
+\1f
+File: tar.info,  Node: Security,  Prev: Reliability,  Up: Reliability and security
+
+10.2 Security
+=============
+
+In some cases `tar' may be used in an adversarial situation, where an
+untrusted user is attempting to gain information about or modify
+otherwise-inaccessible files.  Dealing with untrusted data (that is,
+data generated by an untrusted user) typically requires extra care,
+because even the smallest mistake in the use of `tar' is more likely to
+be exploited by an adversary than by a race condition.
+
+* Menu:
+
+* Privacy::
+* Integrity::
+* Live untrusted data::
+* Security rules of thumb::
+
+\1f
+File: tar.info,  Node: Privacy,  Next: Integrity,  Up: Security
+
+10.2.1 Privacy
+--------------
+
+Standard privacy concerns apply when using `tar'.  For example, suppose
+you are archiving your home directory into a file
+`/archive/myhome.tar'.  Any secret information in your home directory,
+such as your SSH secret keys, are copied faithfully into the archive.
+Therefore, if your home directory contains any file that should not be
+read by some other user, the archive itself should be not be readable
+by that user.  And even if the archive's data are inaccessible to
+untrusted users, its metadata (such as size or last-modified date) may
+reveal some information about your home directory; if the metadata are
+intended to be private, the archive's parent directory should also be
+inaccessible to untrusted users.
+
+   One precaution is to create `/archive' so that it is not accessible
+to any user, unless that user also has permission to access all the
+files in your home directory.
+
+   Similarly, when extracting from an archive, take care that the
+permissions of the extracted files are not more generous than what you
+want.  Even if the archive itself is readable only to you, files
+extracted from it have their own permissions that may differ.
+
+\1f
+File: tar.info,  Node: Integrity,  Next: Live untrusted data,  Prev: Privacy,  Up: Security
+
+10.2.2 Integrity
+----------------
+
+When creating archives, take care that they are not writable by a
+untrusted user; otherwise, that user could modify the archive, and when
+you later extract from the archive you will get incorrect data.
+
+   When `tar' extracts from an archive, by default it writes into files
+relative to the working directory.  If the archive was generated by an
+untrusted user, that user therefore can write into any file under the
+working directory.  If the working directory contains a symbolic link
+to another directory, the untrusted user can also write into any file
+under the referenced directory.  When extracting from an untrusted
+archive, it is therefore good practice to create an empty directory and
+run `tar' in that directory.
+
+   When extracting from two or more untrusted archives, each one should
+be extracted independently, into different empty directories.
+Otherwise, the first archive could create a symbolic link into an area
+outside the working directory, and the second one could follow the link
+and overwrite data that is not under the working directory.  For
+example, when restoring from a series of incremental dumps, the
+archives should have been created by a trusted process, as otherwise
+the incremental restores might alter data outside the working directory.
+
+   If you use the `--absolute-names' (`-P') option when extracting,
+`tar' respects any file names in the archive, even file names that
+begin with `/' or contain `..'.  As this lets the archive overwrite any
+file in your system that you can write, the `--absolute-names' (`-P')
+option should be used only for trusted archives.
+
+   Conversely, with the `--keep-old-files' (`-k') option, `tar' refuses
+to replace existing files when extracting; and with the
+`--no-overwrite-dir' option, `tar' refuses to replace the permissions
+or ownership of already-existing directories.  These options may help
+when extracting from untrusted archives.
+
+\1f
+File: tar.info,  Node: Live untrusted data,  Next: Security rules of thumb,  Prev: Integrity,  Up: Security
+
+10.2.3 Dealing with Live Untrusted Data
+---------------------------------------
+
+Extra care is required when creating from or extracting into a file
+system that is accessible to untrusted users.  For example, superusers
+who invoke `tar' must be wary about its actions being hijacked by an
+adversary who is reading or writing the file system at the same time
+that `tar' is operating.
+
+   When creating an archive from a live file system, `tar' is
+vulnerable to denial-of-service attacks.  For example, an adversarial
+user could create the illusion of an indefinitely-deep directory
+hierarchy `d/e/f/g/...' by creating directories one step ahead of
+`tar', or the illusion of an indefinitely-long file by creating a
+sparse file but arranging for blocks to be allocated just before `tar'
+reads them.  There is no easy way for `tar' to distinguish these
+scenarios from legitimate uses, so you may need to monitor `tar', just
+as you'd need to monitor any other system service, to detect such
+attacks.
+
+   While a superuser is extracting from an archive into a live file
+system, an untrusted user might replace a directory with a symbolic
+link, in hopes that `tar' will follow the symbolic link and extract
+data into files that the untrusted user does not have access to.  Even
+if the archive was generated by the superuser, it may contain a file
+such as `d/etc/passwd' that the untrusted user earlier created in order
+to break in; if the untrusted user replaces the directory `d/etc' with
+a symbolic link to `/etc' while `tar' is running, `tar' will overwrite
+`/etc/passwd'.  This attack can be prevented by extracting into a
+directory that is inaccessible to untrusted users.
+
+   Similar attacks via symbolic links are also possible when creating an
+archive, if the untrusted user can modify an ancestor of a top-level
+argument of `tar'.  For example, an untrusted user that can modify
+`/home/eve' can hijack a running instance of `tar -cf -
+/home/eve/Documents/yesterday' by replacing `/home/eve/Documents' with
+a symbolic link to some other location.  Attacks like these can be
+prevented by making sure that untrusted users cannot modify any files
+that are top-level arguments to `tar', or any ancestor directories of
+these files.
+
+\1f
+File: tar.info,  Node: Security rules of thumb,  Prev: Live untrusted data,  Up: Security
+
+10.2.4 Security Rules of Thumb
+------------------------------
+
+This section briefly summarizes rules of thumb for avoiding security
+pitfalls.
+
+   * Protect archives at least as much as you protect any of the files
+     being archived.
+
+   * Extract from an untrusted archive only into an otherwise-empty
+     directory.  This directory and its parent should be accessible
+     only to trusted users.  For example:
+
+          $ chmod go-rwx .
+          $ mkdir -m go-rwx dir
+          $ cd dir
+          $ tar -xvf /archives/got-it-off-the-net.tar.gz
+
+     As a corollary, do not do an incremental restore from an untrusted
+     archive.
+
+   * Do not let untrusted users access files extracted from untrusted
+     archives without checking first for problems such as setuid
+     programs.
+
+   * Do not let untrusted users modify directories that are ancestors of
+     top-level arguments of `tar'.  For example, while you are
+     executing `tar -cf /archive/u-home.tar /u/home', do not let an
+     untrusted user modify `/', `/archive', or `/u'.
+
+   * Pay attention to the diagnostics and exit status of `tar'.
+
+   * When archiving live file systems, monitor running instances of
+     `tar' to detect denial-of-service attacks.
+
+   * Avoid unusual options such as `--absolute-names' (`-P'),
+     `--dereference' (`-h'), `--overwrite', `--recursive-unlink', and
+     `--remove-files' unless you understand their security implications.
+
+
+\1f
+File: tar.info,  Node: Changes,  Next: Configuring Help Summary,  Prev: Reliability and security,  Up: Top
 
 Appendix A Changes
 ******************
 
 This appendix lists some important user-visible changes between version
-GNU `tar' 1.23 and previous versions. An up-to-date version of this
+GNU `tar' 1.24 and previous versions. An up-to-date version of this
 document is available at the GNU `tar' documentation page
 (http://www.gnu.org/software/tar/manual/changes.html).
 
@@ -3731,12 +4089,12 @@ backups (*note Incremental Dumps::).  It contains the status of the
 file system at the time of the dump and is used to determine which
 files were modified since the last backup.
 
-   GNU `tar' version 1.23 supports three snapshot file formats.  The
+   GNU `tar' version 1.24 supports three snapshot file formats.  The
 first format, called "format 0", is the one used by GNU `tar' versions
 up to 1.15.1. The second format, called "format 1" is an extended
 version of this format, that contains more metadata and allows for
 further extensions. It was used by version 1.15.1. Starting from
-version 1.16 and up to 1.23, the "format 2" is used.
+version 1.16 and up to 1.24, the "format 2" is used.
 
    GNU `tar' is able to read all three formats, but will create
 snapshots only in format 2.
@@ -3792,7 +4150,7 @@ snapshots only in format 2.
   2.   `Format 2' snapshot file begins with a format identifier, as
      described for version 1, e.g.:
 
-          GNU tar-1.23-2
+          GNU tar-1.24-2
 
      This line is followed by newline. Rest of file consists of
      records, separated by null (ASCII 0) characters. Thus, in contrast
@@ -4242,7 +4600,7 @@ Use the following syntax instead:
    Notice, that the use of compatibility mode is deprecated.
 
 \1f
-File: tar.info,  Node: Free Software Needs Free Documentation,  Next: Copying This Manual,  Prev: Genfile,  Up: Top
+File: tar.info,  Node: Free Software Needs Free Documentation,  Next: GNU Free Documentation License,  Prev: Genfile,  Up: Top
 
 Appendix F Free Software Needs Free Documentation
 *************************************************
@@ -4334,25 +4692,15 @@ published by other publishers, at
 `http://www.fsf.org/doc/other-free-books.html'.
 
 \1f
-File: tar.info,  Node: Copying This Manual,  Next: Index of Command Line Options,  Prev: Free Software Needs Free Documentation,  Up: Top
+File: tar.info,  Node: GNU Free Documentation License,  Next: Index of Command Line Options,  Prev: Free Software Needs Free Documentation,  Up: Top
 
-Appendix G Copying This Manual
-******************************
+Appendix G GNU Free Documentation License
+*****************************************
 
-* Menu:
+                     Version 1.3, 3 November 2008
 
-* GNU Free Documentation License::  License for copying this manual
-
-\1f
-File: tar.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
-
-G.1 GNU Free Documentation License
-==================================
-
-                      Version 1.2, November 2002
-
-     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
-     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     `http://fsf.org/'
 
      Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.
@@ -4454,6 +4802,9 @@ G.1 GNU Free Documentation License
      Page" means the text near the most prominent appearance of the
      work's title, preceding the beginning of the body of the text.
 
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
      A section "Entitled XYZ" means a named subunit of the Document
      whose title either is precisely XYZ or contains XYZ in parentheses
      following text that translates XYZ in another language.  (Here XYZ
@@ -4719,12 +5070,29 @@ G.1 GNU Free Documentation License
   9. TERMINATION
 
      You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided for under this License.  Any other
-     attempt to copy, modify, sublicense or distribute the Document is
-     void, and will automatically terminate your rights under this
-     License.  However, parties who have received copies, or rights,
-     from you under this License will not have their licenses
-     terminated so long as such parties remain in full compliance.
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, receipt of a copy of some or all of
+     the same material does not give you any rights to use it.
 
  10. FUTURE REVISIONS OF THIS LICENSE
 
@@ -4742,10 +5110,44 @@ G.1 GNU Free Documentation License
      published (not as a draft) by the Free Software Foundation.  If
      the Document does not specify a version number of this License,
      you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.
+     Free Software Foundation.  If the Document specifies that a proxy
+     can decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
 
-G.1.1 ADDENDUM: How to use this License for your documents
-----------------------------------------------------------
+
+ADDENDUM: How to use this License for your documents
+====================================================
 
 To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and license
@@ -4753,7 +5155,7 @@ notices just after the title page:
 
        Copyright (C)  YEAR  YOUR NAME.
        Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.2
+       under the terms of the GNU Free Documentation License, Version 1.3
        or any later version published by the Free Software Foundation;
        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
        Texts.  A copy of the license is included in the section entitled ``GNU
@@ -4776,14 +5178,14 @@ free software license, such as the GNU General Public License, to
 permit their use in free software.
 
 \1f
-File: tar.info,  Node: Index of Command Line Options,  Next: Index,  Prev: Copying This Manual,  Up: Top
+File: tar.info,  Node: Index of Command Line Options,  Next: Index,  Prev: GNU Free Documentation License,  Up: Top
 
 Appendix H Index of Command Line Options
 ****************************************
 
 This appendix contains an index of all GNU `tar' long command line
 options. The options are listed without the preceding double-dash.  For
-a cross-reference of short command line options, *note Short Option
+a cross-reference of short command line options, see *note Short Option
 Summary::.
 
 \0\b[index\0\b]
@@ -4791,7 +5193,7 @@ Summary::.
 
 * absolute-names:                        absolute.            (line  10)
 * absolute-names, summary:               Option Summary.      (line   6)
-* add-file:                              files.               (line  85)
+* add-file:                              files.               (line  84)
 * after-date:                            after.               (line  24)
 * after-date, summary:                   Option Summary.      (line  12)
 * anchored:                              controlling pattern-matching.
@@ -4802,7 +5204,7 @@ Summary::.
 * append, summary:                       Operation Summary.   (line   6)
 * atime-preserve:                        Attributes.          (line  10)
 * atime-preserve, summary:               Option Summary.      (line  19)
-* auto-compress:                         gzip.                (line  78)
+* auto-compress:                         gzip.                (line 144)
 * auto-compress, summary:                Option Summary.      (line  65)
 * backup:                                backup.              (line  41)
 * backup, summary:                       Option Summary.      (line  71)
@@ -4810,7 +5212,6 @@ Summary::.
 * block-number, summary:                 Option Summary.      (line  76)
 * blocking-factor:                       Blocking Factor.     (line   8)
 * blocking-factor, summary:              Option Summary.      (line  82)
-* bzip2:                                 gzip.                (line 134)
 * bzip2, summary:                        Option Summary.      (line  87)
 * catenate:                              concatenate.         (line   6)
 * catenate, summary:                     Operation Summary.   (line  10)
@@ -4826,7 +5227,7 @@ Summary::.
 * checkpoint-action, summary:            Option Summary.      (line 105)
 * compare:                               compare.             (line   6)
 * compare, summary:                      Operation Summary.   (line  14)
-* compress:                              gzip.                (line 151)
+* compress:                              gzip.                (line 101)
 * compress, summary:                     Option Summary.      (line 152)
 * concatenate:                           concatenate.         (line   6)
 * concatenate, summary:                  Operation Summary.   (line  20)
@@ -4887,252 +5288,254 @@ Summary::.
 * force-local, short description:        Device.              (line  70)
 * force-local, summary:                  Option Summary.      (line 241)
 * format, summary:                       Option Summary.      (line 246)
+* full-time, summary:                    Option Summary.      (line 271)
 * get, summary:                          Operation Summary.   (line  42)
 * group:                                 override.            (line  75)
-* group, summary:                        Option Summary.      (line 271)
-* gunzip, summary:                       Option Summary.      (line 279)
-* gzip:                                  gzip.                (line 100)
-* gzip, summary:                         Option Summary.      (line 279)
+* group, summary:                        Option Summary.      (line 289)
+* gunzip, summary:                       Option Summary.      (line 297)
+* gzip:                                  gzip.                (line  79)
+* gzip, summary:                         Option Summary.      (line 297)
 * hard-dereference, described:           hard links.          (line  59)
-* hard-dereference, summary:             Option Summary.      (line 287)
+* hard-dereference, summary:             Option Summary.      (line 305)
 * help:                                  help tutorial.       (line   6)
 * help, introduction:                    help.                (line  27)
-* help, summary:                         Option Summary.      (line 293)
+* help, summary:                         Option Summary.      (line 311)
 * ignore-case:                           controlling pattern-matching.
                                                               (line  86)
-* ignore-case, summary:                  Option Summary.      (line 298)
+* ignore-case, summary:                  Option Summary.      (line 316)
 * ignore-command-error:                  Writing to an External Program.
                                                               (line  98)
-* ignore-command-error, summary:         Option Summary.      (line 302)
+* ignore-command-error, summary:         Option Summary.      (line 320)
 * ignore-failed-read:                    Ignore Failed Read.  (line   7)
-* ignore-failed-read, summary:           Option Summary.      (line 306)
+* ignore-failed-read, summary:           Option Summary.      (line 324)
 * ignore-zeros:                          Ignore Zeros.        (line   6)
 * ignore-zeros, short description:       Blocking Factor.     (line 156)
-* ignore-zeros, summary:                 Option Summary.      (line 310)
-* incremental, summary:                  Option Summary.      (line 315)
-* incremental, using with --list:        Incremental Dumps.   (line 157)
-* index-file, summary:                   Option Summary.      (line 322)
+* ignore-zeros, summary:                 Option Summary.      (line 328)
+* incremental, summary:                  Option Summary.      (line 333)
+* incremental, using with --list:        Incremental Dumps.   (line 186)
+* index-file, summary:                   Option Summary.      (line 340)
 * info-script:                           Multi-Volume Archives.
-                                                              (line  80)
-* info-script, short description:        Device.              (line 104)
-* info-script, summary:                  Option Summary.      (line 325)
+                                                              (line  88)
+* info-script, short description:        Device.              (line 122)
+* info-script, summary:                  Option Summary.      (line 343)
 * interactive:                           interactive.         (line  14)
-* interactive, summary:                  Option Summary.      (line 333)
+* interactive, summary:                  Option Summary.      (line 351)
 * keep-newer-files:                      Keep Newer Files.    (line   6)
-* keep-newer-files, summary:             Option Summary.      (line 340)
+* keep-newer-files, summary:             Option Summary.      (line 358)
 * keep-old-files:                        Keep Old Files.      (line   6)
 * keep-old-files, introduced:            Dealing with Old Files.
                                                               (line  16)
-* keep-old-files, summary:               Option Summary.      (line 344)
-* label <1>:                             label.               (line   8)
+* keep-old-files, summary:               Option Summary.      (line 362)
+* label <1>:                             label.               (line   6)
 * label:                                 Tape Files.          (line   6)
-* label, summary:                        Option Summary.      (line 349)
+* label, summary:                        Option Summary.      (line 367)
 * level, described:                      Incremental Dumps.   (line  76)
-* level, summary:                        Option Summary.      (line 356)
+* level, summary:                        Option Summary.      (line 374)
 * list:                                  list.                (line   6)
 * list, summary:                         Operation Summary.   (line  46)
-* list, using with --incremental:        Incremental Dumps.   (line 159)
-* list, using with --listed-incremental: Incremental Dumps.   (line 160)
+* list, using with --incremental:        Incremental Dumps.   (line 186)
+* list, using with --listed-incremental: Incremental Dumps.   (line 186)
 * list, using with --verbose:            list.                (line  30)
 * list, using with file name arguments:  list.                (line  68)
 * listed-incremental, described:         Incremental Dumps.   (line  14)
-* listed-incremental, summary:           Option Summary.      (line 366)
+* listed-incremental, summary:           Option Summary.      (line 384)
 * listed-incremental, using with --extract: Incremental Dumps.
                                                               (line 121)
-* listed-incremental, using with --list: Incremental Dumps.   (line 158)
-* lzip:                                  gzip.                (line 142)
-* lzip, summary:                         Option Summary.      (line 374)
-* lzma:                                  gzip.                (line 145)
-* lzma, summary:                         Option Summary.      (line 378)
-* lzop:                                  gzip.                (line 148)
+* listed-incremental, using with --list: Incremental Dumps.   (line 186)
+* lzip:                                  gzip.                (line  92)
+* lzip, summary:                         Option Summary.      (line 392)
+* lzma:                                  gzip.                (line  95)
+* lzma, summary:                         Option Summary.      (line 396)
+* lzop:                                  gzip.                (line  98)
 * mode:                                  override.            (line  14)
-* mode, summary:                         Option Summary.      (line 386)
+* mode, summary:                         Option Summary.      (line 404)
 * mtime:                                 override.            (line  29)
-* mtime, summary:                        Option Summary.      (line 392)
+* mtime, summary:                        Option Summary.      (line 410)
 * multi-volume:                          Multi-Volume Archives.
                                                               (line   6)
 * multi-volume, short description:       Device.              (line  88)
-* multi-volume, summary:                 Option Summary.      (line 401)
+* multi-volume, summary:                 Option Summary.      (line 419)
 * new-volume-script:                     Multi-Volume Archives.
-                                                              (line  80)
-* new-volume-script, short description:  Device.              (line 104)
-* new-volume-script, summary:            Option Summary.      (line 325)
+                                                              (line  88)
+* new-volume-script, short description:  Device.              (line 122)
+* new-volume-script, summary:            Option Summary.      (line 343)
 * newer:                                 after.               (line  24)
-* newer, summary:                        Option Summary.      (line 409)
+* newer, summary:                        Option Summary.      (line 427)
 * newer-mtime:                           after.               (line  35)
-* newer-mtime, summary:                  Option Summary.      (line 417)
+* newer-mtime, summary:                  Option Summary.      (line 435)
 * no-anchored:                           controlling pattern-matching.
                                                               (line  79)
-* no-anchored, summary:                  Option Summary.      (line 422)
-* no-auto-compress, summary:             Option Summary.      (line 426)
+* no-anchored, summary:                  Option Summary.      (line 440)
+* no-auto-compress, summary:             Option Summary.      (line 444)
 * no-check-device, described:            Incremental Dumps.   (line 104)
-* no-check-device, summary:              Option Summary.      (line 430)
+* no-check-device, summary:              Option Summary.      (line 448)
 * no-delay-directory-restore:            Directory Modification Times and Permissions.
                                                               (line  68)
-* no-delay-directory-restore, summary:   Option Summary.      (line 435)
+* no-delay-directory-restore, summary:   Option Summary.      (line 453)
 * no-ignore-case:                        controlling pattern-matching.
                                                               (line  86)
-* no-ignore-case, summary:               Option Summary.      (line 441)
+* no-ignore-case, summary:               Option Summary.      (line 459)
 * no-ignore-command-error:               Writing to an External Program.
                                                               (line 103)
-* no-ignore-command-error, summary:      Option Summary.      (line 444)
+* no-ignore-command-error, summary:      Option Summary.      (line 462)
 * no-null, described:                    nul.                 (line  15)
-* no-null, summary:                      Option Summary.      (line 448)
-* no-overwrite-dir, summary:             Option Summary.      (line 453)
-* no-quote-chars, summary:               Option Summary.      (line 457)
+* no-null, summary:                      Option Summary.      (line 466)
+* no-overwrite-dir, summary:             Option Summary.      (line 471)
+* no-quote-chars, summary:               Option Summary.      (line 475)
 * no-recursion:                          recurse.             (line  11)
-* no-recursion, summary:                 Option Summary.      (line 462)
+* no-recursion, summary:                 Option Summary.      (line 480)
 * no-same-owner:                         Attributes.          (line  63)
-* no-same-owner, summary:                Option Summary.      (line 466)
-* no-same-permissions, summary:          Option Summary.      (line 472)
-* no-seek, summary:                      Option Summary.      (line 477)
+* no-same-owner, summary:                Option Summary.      (line 484)
+* no-same-permissions, summary:          Option Summary.      (line 490)
+* no-seek, summary:                      Option Summary.      (line 495)
 * no-unquote:                            Selecting Archive Members.
                                                               (line  42)
-* no-unquote, summary:                   Option Summary.      (line 482)
+* no-unquote, summary:                   Option Summary.      (line 500)
 * no-wildcards:                          controlling pattern-matching.
                                                               (line  41)
-* no-wildcards, summary:                 Option Summary.      (line 486)
+* no-wildcards, summary:                 Option Summary.      (line 504)
 * no-wildcards-match-slash:              controlling pattern-matching.
                                                               (line  92)
-* no-wildcards-match-slash, summary:     Option Summary.      (line 489)
+* no-wildcards-match-slash, summary:     Option Summary.      (line 507)
 * null, described:                       nul.                 (line  11)
-* null, summary:                         Option Summary.      (line 492)
+* null, summary:                         Option Summary.      (line 510)
 * numeric-owner:                         Attributes.          (line  69)
-* numeric-owner, summary:                Option Summary.      (line 498)
+* numeric-owner, summary:                Option Summary.      (line 516)
 * occurrence, described:                 append.              (line  34)
-* occurrence, summary:                   Option Summary.      (line 515)
-* old-archive, summary:                  Option Summary.      (line 529)
+* occurrence, summary:                   Option Summary.      (line 533)
+* old-archive, summary:                  Option Summary.      (line 547)
 * one-file-system:                       one.                 (line  14)
-* one-file-system, summary:              Option Summary.      (line 532)
+* one-file-system, summary:              Option Summary.      (line 550)
 * overwrite:                             Overwrite Old Files. (line   6)
 * overwrite, introduced:                 Dealing with Old Files.
                                                               (line  22)
-* overwrite, summary:                    Option Summary.      (line 537)
+* overwrite, summary:                    Option Summary.      (line 555)
 * overwrite-dir:                         Overwrite Old Files. (line  28)
 * overwrite-dir, introduced:             Dealing with Old Files.
                                                               (line   6)
-* overwrite-dir, summary:                Option Summary.      (line 541)
+* overwrite-dir, summary:                Option Summary.      (line 559)
 * owner:                                 override.            (line  57)
-* owner, summary:                        Option Summary.      (line 545)
+* owner, summary:                        Option Summary.      (line 563)
 * pax-option:                            PAX keywords.        (line   6)
-* pax-option, summary:                   Option Summary.      (line 554)
-* portability, summary:                  Option Summary.      (line 560)
-* posix, summary:                        Option Summary.      (line 564)
+* pax-option, summary:                   Option Summary.      (line 572)
+* portability, summary:                  Option Summary.      (line 578)
+* posix, summary:                        Option Summary.      (line 582)
 * preserve:                              Attributes.          (line 122)
-* preserve, summary:                     Option Summary.      (line 567)
+* preserve, summary:                     Option Summary.      (line 585)
 * preserve-order:                        Same Order.          (line   6)
-* preserve-order, summary:               Option Summary.      (line 571)
+* preserve-order, summary:               Option Summary.      (line 589)
 * preserve-permissions:                  Setting Access Permissions.
                                                               (line  10)
 * preserve-permissions, short description: Attributes.        (line 109)
-* preserve-permissions, summary:         Option Summary.      (line 574)
-* quote-chars, summary:                  Option Summary.      (line 584)
+* preserve-permissions, summary:         Option Summary.      (line 592)
+* quote-chars, summary:                  Option Summary.      (line 602)
 * quoting-style:                         quoting styles.      (line  38)
-* quoting-style, summary:                Option Summary.      (line 588)
+* quoting-style, summary:                Option Summary.      (line 606)
 * read-full-records <1>:                 read full records.   (line   6)
 * read-full-records:                     Reading.             (line   6)
 * read-full-records, short description:  Blocking Factor.     (line 172)
-* read-full-records, summary:            Option Summary.      (line 595)
-* record-size, summary:                  Option Summary.      (line 600)
+* read-full-records, summary:            Option Summary.      (line 613)
+* record-size, summary:                  Option Summary.      (line 618)
 * recursion:                             recurse.             (line  22)
-* recursion, summary:                    Option Summary.      (line 604)
+* recursion, summary:                    Option Summary.      (line 625)
 * recursive-unlink:                      Recursive Unlink.    (line   6)
-* recursive-unlink, summary:             Option Summary.      (line 608)
+* recursive-unlink, summary:             Option Summary.      (line 629)
 * remove-files:                          remove files.        (line   6)
-* remove-files, summary:                 Option Summary.      (line 613)
-* restrict, summary:                     Option Summary.      (line 617)
-* rmt-command, summary:                  Option Summary.      (line 622)
+* remove-files, summary:                 Option Summary.      (line 634)
+* restrict, summary:                     Option Summary.      (line 638)
+* rmt-command, summary:                  Option Summary.      (line 643)
 * rsh-command:                           Device.              (line  73)
-* rsh-command, summary:                  Option Summary.      (line 626)
+* rsh-command, summary:                  Option Summary.      (line 647)
 * same-order:                            Same Order.          (line   6)
-* same-order, summary:                   Option Summary.      (line 630)
+* same-order, summary:                   Option Summary.      (line 651)
 * same-owner:                            Attributes.          (line  44)
-* same-owner, summary:                   Option Summary.      (line 638)
+* same-owner, summary:                   Option Summary.      (line 659)
 * same-permissions:                      Setting Access Permissions.
                                                               (line  10)
 * same-permissions, short description:   Attributes.          (line 109)
-* same-permissions, summary:             Option Summary.      (line 574)
-* seek, summary:                         Option Summary.      (line 647)
+* same-permissions, summary:             Option Summary.      (line 592)
+* seek, summary:                         Option Summary.      (line 668)
 * show-defaults:                         defaults.            (line   6)
-* show-defaults, summary:                Option Summary.      (line 656)
+* show-defaults, summary:                Option Summary.      (line 677)
 * show-omitted-dirs:                     verbose.             (line 107)
-* show-omitted-dirs, summary:            Option Summary.      (line 668)
+* show-omitted-dirs, summary:            Option Summary.      (line 689)
 * show-stored-names:                     list.                (line  60)
-* show-stored-names, summary:            Option Summary.      (line 672)
+* show-stored-names, summary:            Option Summary.      (line 693)
 * show-transformed-names:                transform.           (line  45)
-* show-transformed-names, summary:       Option Summary.      (line 672)
+* show-transformed-names, summary:       Option Summary.      (line 693)
 * sparse:                                sparse.              (line  22)
-* sparse, summary:                       Option Summary.      (line 680)
+* sparse, summary:                       Option Summary.      (line 701)
 * sparse-version:                        sparse.              (line  57)
-* sparse-version, summary:               Option Summary.      (line 685)
+* sparse-version, summary:               Option Summary.      (line 706)
 * starting-file:                         Starting File.       (line   6)
-* starting-file, summary:                Option Summary.      (line 690)
+* starting-file, summary:                Option Summary.      (line 711)
 * strip-components:                      transform.           (line  25)
-* strip-components, summary:             Option Summary.      (line 696)
+* strip-components, summary:             Option Summary.      (line 717)
 * suffix:                                backup.              (line  68)
-* suffix, summary:                       Option Summary.      (line 705)
+* suffix, summary:                       Option Summary.      (line 726)
 * tape-length:                           Multi-Volume Archives.
                                                               (line  33)
 * tape-length, short description:        Device.              (line  96)
-* tape-length, summary:                  Option Summary.      (line 709)
-* test-label:                            label.               (line  37)
-* test-label, summary:                   Option Summary.      (line 714)
+* tape-length, summary:                  Option Summary.      (line 730)
+* test-label:                            label.               (line  35)
+* test-label, summary:                   Option Summary.      (line 739)
 * to-command:                            Writing to an External Program.
                                                               (line   9)
-* to-command, summary:                   Option Summary.      (line 718)
+* to-command, summary:                   Option Summary.      (line 743)
 * to-stdout:                             Writing to Standard Output.
                                                               (line  14)
-* to-stdout, summary:                    Option Summary.      (line 722)
+* to-stdout, summary:                    Option Summary.      (line 747)
 * totals:                                verbose.             (line  46)
-* totals, summary:                       Option Summary.      (line 727)
+* totals, summary:                       Option Summary.      (line 752)
 * touch <1>:                             Attributes.          (line  33)
 * touch:                                 Data Modification Times.
                                                               (line  15)
-* touch, summary:                        Option Summary.      (line 732)
+* touch, summary:                        Option Summary.      (line 757)
 * transform:                             transform.           (line  74)
-* transform, summary:                    Option Summary.      (line 738)
-* uncompress:                            gzip.                (line 151)
+* transform, summary:                    Option Summary.      (line 763)
+* uncompress:                            gzip.                (line 101)
 * uncompress, summary:                   Option Summary.      (line 152)
-* ungzip:                                gzip.                (line 100)
-* ungzip, summary:                       Option Summary.      (line 279)
+* ungzip:                                gzip.                (line  79)
+* ungzip, summary:                       Option Summary.      (line 297)
 * unlink-first:                          Unlink First.        (line   6)
 * unlink-first, introduced:              Dealing with Old Files.
                                                               (line  42)
-* unlink-first, summary:                 Option Summary.      (line 758)
+* unlink-first, summary:                 Option Summary.      (line 783)
 * unquote:                               Selecting Archive Members.
                                                               (line  39)
-* unquote, summary:                      Option Summary.      (line 764)
+* unquote, summary:                      Option Summary.      (line 789)
 * update <1>:                            how to update.       (line   6)
 * update:                                update.              (line   6)
 * update, summary:                       Operation Summary.   (line  50)
 * usage:                                 help.                (line  54)
-* use-compress-program:                  gzip.                (line 156)
-* use-compress-program, summary:         Option Summary.      (line 768)
-* utc, summary:                          Option Summary.      (line 773)
+* use-compress-program:                  gzip.                (line 166)
+* use-compress-program, summary:         Option Summary.      (line 793)
+* utc, summary:                          Option Summary.      (line 798)
 * verbose:                               verbose.             (line  18)
 * verbose, introduced:                   verbose tutorial.    (line   6)
-* verbose, summary:                      Option Summary.      (line 777)
+* verbose, summary:                      Option Summary.      (line 802)
 * verbose, using with --create:          create verbose.      (line   6)
 * verbose, using with --list:            list.                (line  30)
 * verify, short description:             verify.              (line   8)
-* verify, summary:                       Option Summary.      (line 784)
+* verify, summary:                       Option Summary.      (line 809)
 * verify, using with --create:           verify.              (line  24)
 * version:                               help.                (line   6)
-* version, summary:                      Option Summary.      (line 789)
+* version, summary:                      Option Summary.      (line 814)
 * volno-file:                            Multi-Volume Archives.
-                                                              (line  71)
-* volno-file, summary:                   Option Summary.      (line 794)
+                                                              (line  79)
+* volno-file, summary:                   Option Summary.      (line 819)
 * warning, explained:                    warnings.            (line  12)
-* warning, summary:                      Option Summary.      (line 799)
+* warning, summary:                      Option Summary.      (line 824)
 * wildcards:                             controlling pattern-matching.
                                                               (line  38)
-* wildcards, summary:                    Option Summary.      (line 804)
+* wildcards, summary:                    Option Summary.      (line 829)
 * wildcards-match-slash:                 controlling pattern-matching.
                                                               (line  92)
-* wildcards-match-slash, summary:        Option Summary.      (line 808)
+* wildcards-match-slash, summary:        Option Summary.      (line 833)
 * xform:                                 transform.           (line  74)
-* xform, summary:                        Option Summary.      (line 738)
-* xz, summary:                           Option Summary.      (line 811)
+* xform, summary:                        Option Summary.      (line 763)
+* xz:                                    gzip.                (line  84)
+* xz, summary:                           Option Summary.      (line 836)
 
 \1f
 File: tar.info,  Node: Index,  Prev: Index of Command Line Options,  Up: Top
@@ -5185,7 +5588,8 @@ Appendix I Index
 * atrributes, files:                     Attributes.          (line   6)
 * Attempting extraction of symbolic links as hard links, warning message: warnings.
                                                               (line  77)
-* authors of get_date:                   Authors of get_date. (line   6)
+* authors of parse_datetime:             Authors of parse_datetime.
+                                                              (line   6)
 * Avoiding recursion in directories:     recurse.             (line   6)
 * backup options:                        backup.              (line   6)
 * backup suffix:                         backup.              (line  68)
@@ -5203,9 +5607,12 @@ Appendix I Index
 * beginning of time, for POSIX:          Seconds since the Epoch.
                                                               (line  13)
 * bell, checkpoint action:               checkpoints.         (line  65)
-* Bellovin, Steven M.:                   Authors of get_date. (line   6)
-* Berets, Jim:                           Authors of get_date. (line   6)
-* Berry, K.:                             Authors of get_date. (line  14)
+* Bellovin, Steven M.:                   Authors of parse_datetime.
+                                                              (line   6)
+* Berets, Jim:                           Authors of parse_datetime.
+                                                              (line   6)
+* Berry, K.:                             Authors of parse_datetime.
+                                                              (line  19)
 * binary equivalent archives, creating:  PAX keywords.        (line 132)
 * block:                                 Blocking.            (line   6)
 * Block number where error occurred:     verbose.             (line 115)
@@ -5232,7 +5639,7 @@ Appendix I Index
 * Concatenating Archives:                concatenate.         (line   6)
 * contains a cache directory tag, warning message: warnings.  (line  43)
 * contiguous-cast:                       warnings.            (line  74)
-* corrupted archives <1>:                gzip.                (line 119)
+* corrupted archives <1>:                gzip.                (line 134)
 * corrupted archives:                    Full Dumps.          (line   8)
 * Creation of the archive:               create.              (line   8)
 * Current %s is newer or same age, warning message: warnings. (line  83)
@@ -5277,10 +5684,11 @@ Appendix I Index
 * dup-args-note:                         Configuring Help Summary.
                                                               (line  68)
 * echo, checkpoint action:               checkpoints.         (line  25)
-* Eggert, Paul:                          Authors of get_date. (line   6)
+* Eggert, Paul:                          Authors of parse_datetime.
+                                                              (line   6)
 * End-of-archive blocks, ignoring:       Ignore Zeros.        (line   6)
 * End-of-archive info script:            Multi-Volume Archives.
-                                                              (line  80)
+                                                              (line  88)
 * entry:                                 Naming tar Archives. (line  11)
 * epoch, for POSIX:                      Seconds since the Epoch.
                                                               (line  13)
@@ -5303,8 +5711,6 @@ Appendix I Index
 * extracting Nth copy of the file:       append.              (line  34)
 * Extraction:                            extract.             (line   6)
 * extraction:                            Definitions.         (line  22)
-* FDL, GNU Free Documentation License:   GNU Free Documentation License.
-                                                              (line   6)
 * file archival:                         Top.                 (line  24)
 * file attributes:                       Attributes.          (line   6)
 * file changed as we read it, warning message: warnings.      (line  64)
@@ -5358,7 +5764,6 @@ Appendix I Index
 * genfile, generate mode:                Generate Mode.       (line   6)
 * genfile, reading a list of file names: Generate Mode.       (line  22)
 * genfile, seeking to a given offset:    Generate Mode.       (line  18)
-* get_date:                              Date input formats.  (line   6)
 * Getting program version number:        help.                (line   6)
 * git, excluding files:                  exclude.             (line  37)
 * GNU archive format:                    gnu.                 (line   6)
@@ -5372,8 +5777,8 @@ Appendix I Index
 * GNU.sparse.offset, extended header variable: PAX 0.         (line  18)
 * GNU.sparse.realsize, extended header variable: PAX 1.       (line  24)
 * GNU.sparse.size, extended header variable: PAX 0.           (line  11)
-* gnupg, using with tar:                 gzip.                (line 171)
-* gpg, using with tar:                   gzip.                (line 171)
+* gnupg, using with tar:                 gzip.                (line 181)
+* gpg, using with tar:                   gzip.                (line 181)
 * gzip:                                  gzip.                (line   6)
 * hard links, dereferencing:             hard links.          (line   6)
 * header-col:                            Configuring Help Summary.
@@ -5388,7 +5793,7 @@ Appendix I Index
                                                               (line  86)
 * implausibly old time stamp %s, warning message: warnings.   (line  72)
 * Info script:                           Multi-Volume Archives.
-                                                              (line  80)
+                                                              (line  88)
 * Interactive operation:                 interactive.         (line   6)
 * ISO 8601 date format:                  Calendar date items. (line  30)
 * items in date strings:                 General date syntax. (line   6)
@@ -5402,9 +5807,11 @@ Appendix I Index
                                                               (line   6)
 * last DAY:                              Day of week items.   (line  15)
 * last in date strings:                  General date syntax. (line  26)
+* Laszlo Ersek:                          lbzip2.              (line   6)
+* lbzip2:                                lbzip2.              (line   6)
 * Listing all tar options:               help.                (line  27)
 * listing member and file names:         list.                (line  41)
-* Listing volume label:                  label.               (line  29)
+* Listing volume label:                  label.               (line  27)
 * Lists of file names:                   files.               (line   6)
 * Local and remote archives:             file.                (line  71)
 * long options:                          Long Options.        (line   6)
@@ -5415,7 +5822,8 @@ Appendix I Index
 * lzip:                                  gzip.                (line   6)
 * lzma:                                  gzip.                (line   6)
 * lzop:                                  gzip.                (line   6)
-* MacKenzie, David:                      Authors of get_date. (line   6)
+* MacKenzie, David:                      Authors of parse_datetime.
+                                                              (line   6)
 * Malformed dumpdir: 'X' never used, warning message: warnings.
                                                               (line 102)
 * member:                                Definitions.         (line  15)
@@ -5423,7 +5831,8 @@ Appendix I Index
 * members, multiple:                     multiple.            (line   6)
 * Members, replacing with other members: append.              (line  47)
 * Mercurial, excluding files:            exclude.             (line  37)
-* Meyering, Jim:                         Authors of get_date. (line   6)
+* Meyering, Jim:                         Authors of parse_datetime.
+                                                              (line   6)
 * Middle of the archive, starting in the: Starting File.      (line  11)
 * midnight in date strings:              Time of day items.   (line  22)
 * minute in date strings:                Relative items in date strings.
@@ -5498,11 +5907,13 @@ Appendix I Index
 * ordinal numbers:                       General date syntax. (line  26)
 * Overwriting old files, prevention:     Dealing with Old Files.
                                                               (line  16)
+* parse_datetime:                        Date input formats.  (line   6)
 * pattern, genfile:                      Generate Mode.       (line  39)
 * PAX archive format:                    posix.               (line   6)
 * Permissions of extracted files:        Setting Access Permissions.
                                                               (line   6)
-* Pinard, F.:                            Authors of get_date. (line  14)
+* Pinard, F.:                            Authors of parse_datetime.
+                                                              (line  19)
 * pm in date strings:                    Time of day items.   (line  22)
 * POSIX archive format:                  posix.               (line   6)
 * Progress information:                  verbose.             (line  83)
@@ -5538,7 +5949,8 @@ Appendix I Index
 * RSH_COMMAND:                           General-Purpose Variables.
                                                               (line  77)
 * Running out of space:                  Scarce.              (line   8)
-* Salz, Rich:                            Authors of get_date. (line   6)
+* Salz, Rich:                            Authors of parse_datetime.
+                                                              (line   6)
 * SCCS, excluding files:                 exclude.             (line  37)
 * short options:                         Short Options.       (line   6)
 * short options with mandatory arguments: Short Options.      (line  13)
@@ -5609,7 +6021,7 @@ Appendix I Index
                                                               (line  15)
 * TAR_ARCHIVE, checkpoint script environment: checkpoints.    (line 108)
 * TAR_ARCHIVE, info script environment variable: Multi-Volume Archives.
-                                                              (line 100)
+                                                              (line 108)
 * TAR_ARCHIVE, to-command environment:   Writing to an External Program.
                                                               (line  76)
 * TAR_ATIME, to-command environment:     Writing to an External Program.
@@ -5617,21 +6029,21 @@ Appendix I Index
 * TAR_BLOCKING_FACTOR, checkpoint script environment: checkpoints.
                                                               (line 111)
 * TAR_BLOCKING_FACTOR, info script environment variable: Multi-Volume Archives.
-                                                              (line 103)
+                                                              (line 111)
 * TAR_BLOCKING_FACTOR, to-command environment: Writing to an External Program.
                                                               (line  79)
 * TAR_CHECKPOINT, checkpoint script environment: checkpoints. (line 114)
 * TAR_CTIME, to-command environment:     Writing to an External Program.
                                                               (line  58)
 * TAR_FD, info script environment variable: Multi-Volume Archives.
-                                                              (line 117)
+                                                              (line 125)
 * TAR_FILENAME, to-command environment:  Writing to an External Program.
                                                               (line  37)
 * TAR_FILETYPE, to-command environment:  Writing to an External Program.
                                                               (line  22)
 * TAR_FORMAT, checkpoint script environment: checkpoints.     (line 121)
 * TAR_FORMAT, info script environment variable: Multi-Volume Archives.
-                                                              (line 113)
+                                                              (line 121)
 * TAR_FORMAT, to-command environment:    Writing to an External Program.
                                                               (line  85)
 * TAR_GID, to-command environment:       Writing to an External Program.
@@ -5649,18 +6061,18 @@ Appendix I Index
                                                               (line  61)
 * TAR_SUBCOMMAND, checkpoint script environment: checkpoints. (line 117)
 * TAR_SUBCOMMAND, info script environment variable: Multi-Volume Archives.
-                                                              (line 109)
+                                                              (line 117)
 * TAR_UID, to-command environment:       Writing to an External Program.
                                                               (line  64)
 * TAR_UNAME, to-command environment:     Writing to an External Program.
                                                               (line  43)
 * TAR_VERSION, checkpoint script environment: checkpoints.    (line 105)
 * TAR_VERSION, info script environment variable: Multi-Volume Archives.
-                                                              (line  97)
+                                                              (line 105)
 * TAR_VERSION, to-command environment:   Writing to an External Program.
                                                               (line  73)
 * TAR_VOLUME, info script environment variable: Multi-Volume Archives.
-                                                              (line 106)
+                                                              (line 114)
 * TAR_VOLUME, to-command environment:    Writing to an External Program.
                                                               (line  82)
 * tarcat:                                Tarcat.              (line   6)
@@ -5690,7 +6102,7 @@ Appendix I Index
 * Updating an archive:                   update.              (line   6)
 * usage-indent:                          Configuring Help Summary.
                                                               (line 154)
-* Using encrypted archives:              gzip.                (line 171)
+* Using encrypted archives:              gzip.                (line 181)
 * ustar archive format:                  ustar.               (line   6)
 * uuencode:                              Applications.        (line   8)
 * v7 archive format:                     old.                 (line   6)
@@ -5703,12 +6115,12 @@ Appendix I Index
 * version-control Emacs variable:        backup.              (line  49)
 * VERSION_CONTROL:                       backup.              (line  41)
 * volno file:                            Multi-Volume Archives.
-                                                              (line  71)
+                                                              (line  79)
 * VOLNO_FILE:                            General-Purpose Variables.
                                                               (line  82)
-* Volume label, listing:                 label.               (line  29)
+* Volume label, listing:                 label.               (line  27)
 * Volume number file:                    Multi-Volume Archives.
-                                                              (line  71)
+                                                              (line  79)
 * week in date strings:                  Relative items in date strings.
                                                               (line  15)
 * Where is the archive?:                 file.                (line   6)
index 0fcd04bc57e2b22074dc2b9d5c94fff87992c6ed..6d9d9cc52e97202edb71bcffa3bc8da435b060f5 100644 (file)
@@ -41,11 +41,12 @@ Copyright @copyright{} 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
+under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
 and with the Back-Cover Texts as in (a) below.  A copy of the license
-is included in the section entitled "GNU Free Documentation License".
+is included in the section entitled ``GNU Free Documentation
+License''.
 
 (a) The FSF's Back-Cover Text is: ``You have the freedom to
 copy and modify this GNU manual.  Buying copies from the FSF
@@ -106,6 +107,7 @@ document.  The rest of the menu lists all the lower level nodes.
 * Date input formats::
 * Formats::
 * Media::
+* Reliability and security::
 
 Appendices
 
@@ -115,7 +117,7 @@ Appendices
 * Tar Internals::
 * Genfile::
 * Free Software Needs Free Documentation::
-* Copying This Manual::
+* GNU Free Documentation License::
 * Index of Command Line Options::
 * Index::
 
@@ -316,7 +318,7 @@ Date input formats
 * Pure numbers in date strings::   19931219, 1440.
 * Seconds since the Epoch::        @@1078100502.
 * Specifying time zone rules::     TZ="America/New_York", TZ="UTC0".
-* Authors of get_date::            Bellovin, Eggert, Salz, Berets, et al.
+* Authors of parse_datetime::      Bellovin, Eggert, Salz, Berets, et al.
 
 Controlling the Archive Format
 
@@ -330,6 +332,10 @@ Using Less Space through Compression
 * gzip::                        Creating and Reading Compressed Archives
 * sparse::                      Archiving Sparse Files
 
+Creating and Reading Compressed Archives
+
+* lbzip2::  Using lbzip2 with @GNUTAR{}.
+
 Making @command{tar} Archives More Portable
 
 * Portable Names::              Portable Names
@@ -449,7 +455,7 @@ operations (@samp{create}, @samp{list}, and @samp{extract}) as well as
 two frequently used options (@samp{file} and @samp{verbose}).  The other
 chapters do not refer to the tutorial frequently; however, if a section
 discusses something which is a complex variant of a basic concept, there
-may be a cross reference to that basic concept.  (The entire book,
+may be a cross-reference to that basic concept.  (The entire book,
 including the tutorial, assumes that the reader understands some basic
 concepts of using a Unix-type operating system; @pxref{Tutorial}.)
 
@@ -2461,7 +2467,7 @@ This option tells @command{tar} to read or write archives through
 @item --check-device
 Check device numbers when creating a list of modified files for
 incremental archiving.  This is the default.  @xref{device numbers},
-for a detailed description. 
+for a detailed description.
 
 @opsummary{checkpoint}
 @item --checkpoint[=@var{number}]
@@ -2553,9 +2559,9 @@ directories until the end of extraction. @xref{Directory Modification Times and
 @item --dereference
 @itemx -h
 
-When creating a @command{tar} archive, @command{tar} will archive the
-file that a symbolic link points to, rather than archiving the
-symlink.  @xref{dereference}.
+When reading or writing a file to be archived, @command{tar} accesses
+the file that a symbolic link points to, rather than the symlink
+itself.  @xref{dereference}.
 
 @opsummary{directory}
 @item --directory=@var{dir}
@@ -2684,6 +2690,30 @@ Creates a @acronym{POSIX.1-2001 archive}.
 
 @xref{Formats}, for a detailed discussion of these formats.
 
+@opsummary{full-time}
+@item --full-time
+This option instructs @command{tar} to print file times to their full
+resolution.  Usually this means 1-second resolution, but that depends
+on the underlying file system.  The @option{--full-time} option takes
+effect only when detailed output (verbosity level 2 or higher) has
+been requested using the @option{--verbose} option, e.g., when listing
+or extracting archives:
+
+@smallexample
+$ @kbd{tar -t -v --full-time -f archive.tar}
+@end smallexample
+
+@noindent
+or, when creating an archive:
+
+@smallexample
+$ @kbd{tar -c -vv --full-time -f archive.tar .}
+@end smallexample
+
+Notice, thar when creating the archive you need to specify
+@option{--verbose} twice to get a detailed output (@pxref{verbose
+tutorial}).
+
 @opsummary{group}
 @item --group=@var{group}
 
@@ -2900,7 +2930,7 @@ suffix.  @xref{--auto-compress}.  @xref{gzip}.
 @item --no-check-device
 Do not check device numbers when creating a list of modified files
 for incremental archiving.  @xref{device numbers}, for
-a detailed description. 
+a detailed description.
 
 @opsummary{no-delay-directory-restore}
 @item --no-delay-directory-restore
@@ -3125,10 +3155,13 @@ Specifies that @command{tar} should reblock its input, for reading
 from pipes on systems with buggy implementations.  @xref{Reading}.
 
 @opsummary{record-size}
-@item --record-size=@var{size}
+@item --record-size=@var{size}[@var{suf}]
 
 Instructs @command{tar} to use @var{size} bytes per record when accessing the
-archive.  @xref{Blocking Factor}.
+archive.  The argument can be suffixed with a @dfn{size suffix}, e.g.
+@option{--record-size=10K} for 10 Kilobytes.  @xref{size-suffixes},
+for a list of valid suffixes.   @xref{Blocking Factor}, for a detailed
+description of this option.
 
 @opsummary{recursion}
 @item --recursion
@@ -3210,7 +3243,7 @@ successfully.  This option is intended for use in shell scripts.
 Here is an example of what you can see using this option:
 
 @smallexample
-$ tar --show-defaults
+$ @kbd{tar --show-defaults}
 --format=gnu -f- -b20 --quoting-style=escape
 --rmt-command=/usr/libexec/rmt --rsh-command=/usr/bin/rsh
 @end smallexample
@@ -3278,11 +3311,15 @@ Alters the suffix @command{tar} uses when backing up files from the default
 @samp{~}.  @xref{backup}.
 
 @opsummary{tape-length}
-@item --tape-length=@var{num}
-@itemx -L @var{num}
+@item --tape-length=@var{num}[@var{suf}]
+@itemx -L @var{num}[@var{suf}]
 
 Specifies the length of tapes that @command{tar} is writing as being
-@w{@var{num} x 1024} bytes long.  @xref{Using Multiple Tapes}.
+@w{@var{num} x 1024} bytes long.  If optional @var{suf} is given, it
+specifies a multiplicative factor to be used instead of 1024.  For
+example, @samp{-L2M} means 2 megabytes.  @xref{size-suffixes}, for a
+list of allowed suffixes.  @xref{Using Multiple Tapes}, for a detailed
+discussion of this option.
 
 @opsummary{test-label}
 @item --test-label
@@ -3342,12 +3379,12 @@ To see transformed member names in verbose listings, use
 @opsummary{uncompress}
 @item --uncompress
 
-(See @option{--compress}. @pxref{gzip})
+(See @option{--compress}, @pxref{gzip})
 
 @opsummary{ungzip}
 @item --ungzip
 
-(See @option{--gzip}. @pxref{gzip})
+(See @option{--gzip}, @pxref{gzip})
 
 @opsummary{unlink-first}
 @item --unlink-first
@@ -4127,7 +4164,7 @@ Disable all warning messages.
 @samp{Current %s is newer or same age}
 @kwindex unknown-keyword
 @cindex @samp{Ignoring unknown extended header keyword `%s'}, warning message
-@item unknown-keyword           
+@item unknown-keyword
 @samp{Ignoring unknown extended header keyword `%s'}
 @end table
 
@@ -4383,7 +4420,7 @@ of those members listed, with their data modification times, owners, etc.
 
 Other operations don't deal with these members as perfectly as you might
 prefer; if you were to use @option{--extract} to extract the archive,
-only the most recently added copy of a member with the same name as 
+only the most recently added copy of a member with the same name as
 other members would end up in the working directory.  This is because
 @option{--extract} extracts an archive in the order the members appeared
 in the archive; the most recently archived members will be extracted
@@ -4551,7 +4588,7 @@ $ @kbd{tar --extract -vv --occurrence --file=collection.tar blues}
 @end smallexample
 
 @xref{Writing}, for more information on @option{--extract} and
-@xref{Option Summary, --occurrence}, for the description of
+see @ref{Option Summary, --occurrence}, for a description of
 @option{--occurrence} option.
 
 @node update
@@ -4599,7 +4636,7 @@ To see the @option{--update} option at work, create a new file,
 @file{classical}, in your practice directory, and some extra text to the
 file @file{blues}, using any text editor.  Then invoke @command{tar} with
 the @samp{update} operation and the @option{--verbose} (@option{-v})
-option specified, using the names of all the files in the practice
+option specified, using the names of all the files in the @file{practice}
 directory as file name arguments:
 
 @smallexample
@@ -4646,8 +4683,8 @@ To use @option{--concatenate}, give the first archive with
 @option{--file} option and name the rest of archives to be
 concatenated on the command line.  The members, and their member
 names, will be copied verbatim from those archives to the first
-one@footnote{This can cause multiple members to have the same name, for
-information on how this affects reading the archive, @ref{multiple}.}.
+one@footnote{This can cause multiple members to have the same name.  For
+information on how this affects reading the archive, see @ref{multiple}.}.
 The new, concatenated archive will be called by the same name as the
 one given with the @option{--file} option.  As usual, if you omit
 @option{--file}, @command{tar} will use the value of the environment
@@ -4811,7 +4848,7 @@ tar: funk not found in archive
 The spirit behind the @option{--compare} (@option{--diff},
 @option{-d}) option is to check whether the archive represents the
 current state of files on disk, more than validating the integrity of
-the archive media.  For this latter goal, @xref{verify}.
+the archive media.  For this latter goal, see @ref{verify}.
 
 @node create options
 @section Options Used by @option{--create}
@@ -4869,7 +4906,7 @@ either a textual date representation in almost arbitrary format
 with @samp{/} or @samp{.}.  In the latter case, the modification time
 of that file will be used.
 
-The following example will set the modification date to 00:00:00 UTC,
+The following example will set the modification date to 00:00:00,
 January 1, 1970:
 
 @smallexample
@@ -5536,9 +5573,9 @@ space, you can use @option{--starting-file=@var{name}} (@option{-K
 archive.  This assumes, of course, that there is now free space, or
 that you are now extracting into a different file system.  (You could
 also choose to suspend @command{tar}, remove unnecessary files from
-the file system, and then restart the same @command{tar} operation.
-In this case, @option{--starting-file} is not necessary.
-@xref{Incremental Dumps}, @xref{interactive}, and @ref{exclude}.)
+the file system, and then resume the same @command{tar} operation.
+In this case, @option{--starting-file} is not necessary.)  See also
+@ref{interactive}, and @ref{exclude}.
 
 @node Same Order
 @unnumberedsubsubsec Same Order
@@ -5692,16 +5729,20 @@ $ @kbd{tar -C sourcedir -cf - . | tar -C targetdir -xf -}
 The command also works using long option forms:
 
 @smallexample
+@group
 $ @kbd{(cd sourcedir; tar --create --file=- . ) \
        | (cd targetdir; tar --extract --file=-)}
+@end group
 @end smallexample
 
 @noindent
 or
 
 @smallexample
-$ @kbd{tar --directory sourcedir --create --file=- . ) \
+@group
+$ @kbd{tar --directory sourcedir --create --file=- . \
        | tar --directory targetdir --extract --file=-}
+@end group
 @end smallexample
 
 @noindent
@@ -5741,7 +5782,7 @@ sophisticated packages dedicated to that purpose.
 Some users are enthusiastic about @code{Amanda} (The Advanced Maryland
 Automatic Network Disk Archiver), a backup system developed by James
 da Silva @file{jds@@cs.umd.edu} and available on many Unix systems.
-This is free software, and it is available from @uref{http://www.amanda.org}. 
+This is free software, and it is available from @uref{http://www.amanda.org}.
 
 @FIXME{
 
@@ -5983,7 +6024,7 @@ Use device numbers when preparing a list of changed files
 for an incremental dump.  This is the default behavior.  The purpose
 of this option is to undo the effect of the @option{--no-check-device}
 if it was given in @env{TAR_OPTIONS} environment variable
-(@pxref{TAR_OPTIONS}). 
+(@pxref{TAR_OPTIONS}).
 @end table
 
 There is also another way to cope with changing device numbers.  It is
@@ -8069,8 +8110,8 @@ $ @kbd{tar --transform 's,^,/usr/local/,S', -c -v -f arch.tar \
        --show-transformed /lib}
 drwxr-xr-x root/root       0 2008-07-08 16:20 /usr/local/lib/
 -rwxr-xr-x root/root 1250840 2008-05-25 07:44 /usr/local/lib/libc-2.3.2.so
-lrwxrwxrwx root/root       0 2008-06-24 17:12 /usr/local/lib/libc.so.6 ->
-libc-2.3.2.so
+lrwxrwxrwx root/root       0 2008-06-24 17:12 /usr/local/lib/libc.so.6 \
+ -> libc-2.3.2.so
 @end smallexample
 
 Unlike @option{--strip-components}, @option{--transform} can be used
@@ -8516,7 +8557,10 @@ For example:
 $ @kbd{tar -c -f archive.tar -C / home}
 @end smallexample
 
-@include getdate.texi
+@xref{Integrity}, for some of the security-related implications
+of using this option.
+
+@include parse-datetime.texi
 
 @node Formats
 @chapter Controlling the Archive Format
@@ -8653,7 +8697,7 @@ switch to @samp{posix}.
 a wide variety of compression programs, namely: @command{gzip},
 @command{bzip2}, @command{lzip}, @command{lzma}, @command{lzop},
 @command{xz} and traditional @command{compress}. The latter is
-supported mostly for backward compatibility, and we recommend 
+supported mostly for backward compatibility, and we recommend
 against using it, because it is by far less effective than the other
 compression programs@footnote{It also had patent problems in the past.}.
 
@@ -8663,7 +8707,7 @@ 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{-J} (@option{--xz}) to create an @asis{XZ} archive,
 @option{--lzma} to create an @asis{LZMA} compressed
 archive, @option{--lzop} to create an @asis{LSOP} archive, and
 @option{-Z} (@option{--compress}) to use @command{compress} program.
@@ -8673,7 +8717,7 @@ For example:
 $ @kbd{tar cfz archive.tar.gz .}
 @end smallexample
 
-You can also let @GNUTAR{} select the compression program basing on
+You can also let @GNUTAR{} select the compression program based on
 the suffix of the archive file name. This is done using
 @option{--auto-compress} (@option{-a}) command line option. For
 example, the following invocation will use @command{bzip2} for
@@ -8691,7 +8735,7 @@ $ @kbd{tar cfa archive.tar.lzma .}
 @end smallexample
 
 For a complete list of file name suffixes recognized by @GNUTAR{},
-@ref{auto-compress}.
+see @ref{auto-compress}.
 
 Reading compressed archive is even simpler: you don't need to specify
 any additional options as @GNUTAR{} recognizes its format
@@ -8709,7 +8753,7 @@ The format recognition algorithm is based on @dfn{signatures}, a
 special byte sequences in the beginning of file, that are specific for
 certain compression formats.  If this approach fails, @command{tar}
 falls back to using archive name suffix to determine its format
-(@xref{auto-compress}, for a list of recognized suffixes).
+(@pxref{auto-compress}, for a list of recognized suffixes).
 
 The only case when you have to specify a decompression option while
 reading the archive is when reading from a pipe or from a tape drive
@@ -8738,34 +8782,9 @@ cannot append another @command{tar} archive to a compressed archive using
 @option{--concatenate} (@option{-A}).  Secondly, multi-volume
 archives cannot be compressed.
 
-The following table summarizes compression options used by @GNUTAR{}.
+The following options allow to select a particular compressor program:
 
 @table @option
-@anchor{auto-compress}
-@opindex auto-compress
-@item --auto-compress
-@itemx -a
-Select a compression program to use by the archive file name
-suffix.  The following suffixes are recognized:
-
-@multitable @columnfractions 0.3 0.6
-@headitem Suffix @tab Compression program
-@item @samp{.gz} @tab @command{gzip}
-@item @samp{.tgz} @tab @command{gzip}
-@item @samp{.taz} @tab @command{gzip}
-@item @samp{.Z} @tab @command{compress}
-@item @samp{.taZ} @tab @command{compress}
-@item @samp{.bz2} @tab @command{bzip2}
-@item @samp{.tz2} @tab @command{bzip2}
-@item @samp{.tbz2} @tab @command{bzip2}
-@item @samp{.tbz} @tab @command{bzip2}
-@item @samp{.lz} @tab @command{lzip}
-@item @samp{.lzma} @tab @command{lzma}
-@item @samp{.tlz} @tab @command{lzma}
-@item @samp{.lzo} @tab @command{lzop}
-@item @samp{.xz} @tab @command{xz}
-@end multitable
-
 @opindex gzip
 @opindex ungzip
 @item -z
@@ -8773,69 +8792,110 @@ suffix.  The following suffixes are recognized:
 @itemx --ungzip
 Filter the archive through @command{gzip}.
 
-You can use @option{--gzip} and @option{--gunzip} on physical devices
-(tape drives, etc.) and remote files as well as on normal files; data
-to or from such devices or remote files is reblocked by another copy
-of the @command{tar} program to enforce the specified (or default) record
-size.  The default compression parameters are used; if you need to
-override them, set @env{GZIP} environment variable, e.g.:
-
-@smallexample
-$ @kbd{GZIP=--best tar cfz archive.tar.gz subdir}
-@end smallexample
-
-@noindent
-Another way would be to avoid the @option{--gzip} (@option{--gunzip}, @option{--ungzip}, @option{-z}) option and run
-@command{gzip} explicitly:
-
-@smallexample
-$ @kbd{tar cf - subdir | gzip --best -c - > archive.tar.gz}
-@end smallexample
-
-@cindex corrupted archives
-About corrupted compressed archives: @command{gzip}'ed files have no
-redundancy, for maximum compression.  The adaptive nature of the
-compression scheme means that the compression tables are implicitly
-spread all over the archive.  If you lose a few blocks, the dynamic
-construction of the compression tables becomes unsynchronized, and there
-is little chance that you could recover later in the archive.
-
-There are pending suggestions for having a per-volume or per-file
-compression in @GNUTAR{}.  This would allow for viewing the
-contents without decompression, and for resynchronizing decompression at
-every volume or file, in case of corrupted archives.  Doing so, we might
-lose some compressibility.  But this would have make recovering easier.
-So, there are pros and cons.  We'll see!
-
-@opindex bzip2
+@opindex xz
 @item -J
 @itemx --xz
-Filter the archive through @code{xz}.  Otherwise like
-@option{--gzip}.
+Filter the archive through @code{xz}.
 
 @item -j
 @itemx --bzip2
-Filter the archive through @code{bzip2}.  Otherwise like @option{--gzip}.
+Filter the archive through @code{bzip2}.
 
 @opindex lzip
 @item --lzip
-Filter the archive through @command{lzip}.  Otherwise like @option{--gzip}.
+Filter the archive through @command{lzip}.
 
 @opindex lzma
 @item --lzma
-Filter the archive through @command{lzma}.  Otherwise like @option{--gzip}.
+Filter the archive through @command{lzma}.
 
 @opindex lzop
 @item --lzop
-Filter the archive through @command{lzop}.  Otherwise like
-@option{--gzip}.
+Filter the archive through @command{lzop}.
 
 @opindex compress
 @opindex uncompress
 @item -Z
 @itemx --compress
 @itemx --uncompress
-Filter the archive through @command{compress}.  Otherwise like @option{--gzip}.
+Filter the archive through @command{compress}.
+@end table
+
+When any of these options is given, @GNUTAR{} searches the compressor
+binary in the current path and invokes it.  The name of the compressor
+program is specified at compilation time using a corresponding
+@option{--with-@var{compname}} option to @command{configure}, e.g.
+@option{--with-bzip2} to select a specific @command{bzip2} binary.
+@xref{lbzip2}, for a detailed discussion.
+
+The output produced by @command{tar --help} shows the actual
+compressor names along with each of these options.
+
+You can use any of these options on physical devices (tape drives,
+etc.) and remote files as well as on normal files; data to or from
+such devices or remote files is reblocked by another copy of the
+@command{tar} program to enforce the specified (or default) record
+size.  The default compression parameters are used.  Most compression
+programs allow to override these by setting a program-specific
+environment variable.  For example, when using @command{gzip} you can
+use @env{GZIP} as in the example below:
+
+@smallexample
+$ @kbd{GZIP=--best tar cfz archive.tar.gz subdir}
+@end smallexample
+
+@noindent
+Another way would be to use the @option{-I} option instead (see
+below), e.g.:
+
+@smallexample
+$ @kbd{tar -cf archive.tar.gz -I 'gzip --best' subdir}
+@end smallexample
+
+@noindent
+Finally, the third, traditional, way to achieve the same result is to
+use pipe:
+
+@smallexample
+$ @kbd{tar cf - subdir | gzip --best -c - > archive.tar.gz}
+@end smallexample
+
+@cindex corrupted archives
+About corrupted compressed archives: compressed files have no
+redundancy, for maximum compression.  The adaptive nature of the
+compression scheme means that the compression tables are implicitly
+spread all over the archive.  If you lose a few blocks, the dynamic
+construction of the compression tables becomes unsynchronized, and there
+is little chance that you could recover later in the archive.
+
+Another compression options provide a better control over creating
+compressed archives.  These are:
+
+@table @option
+@anchor{auto-compress}
+@opindex auto-compress
+@item --auto-compress
+@itemx -a
+Select a compression program to use by the archive file name
+suffix.  The following suffixes are recognized:
+
+@multitable @columnfractions 0.3 0.6
+@headitem Suffix @tab Compression program
+@item @samp{.gz} @tab @command{gzip}
+@item @samp{.tgz} @tab @command{gzip}
+@item @samp{.taz} @tab @command{gzip}
+@item @samp{.Z} @tab @command{compress}
+@item @samp{.taZ} @tab @command{compress}
+@item @samp{.bz2} @tab @command{bzip2}
+@item @samp{.tz2} @tab @command{bzip2}
+@item @samp{.tbz2} @tab @command{bzip2}
+@item @samp{.tbz} @tab @command{bzip2}
+@item @samp{.lz} @tab @command{lzip}
+@item @samp{.lzma} @tab @command{lzma}
+@item @samp{.tlz} @tab @command{lzma}
+@item @samp{.lzo} @tab @command{lzop}
+@item @samp{.xz} @tab @command{xz}
+@end multitable
 
 @opindex use-compress-program
 @item --use-compress-program=@var{prog}
@@ -8929,6 +8989,45 @@ The above is based on the following discussion:
   end up with less space on the tape.
 @end ignore
 
+@menu
+* lbzip2::  Using lbzip2 with @GNUTAR{}.
+@end menu
+
+@node lbzip2
+@subsubsection Using lbzip2 with @GNUTAR{}.
+@cindex lbzip2
+@cindex Laszlo Ersek
+  @command{Lbzip2} is a multithreaded utility for handling
+@samp{bzip2} compression, written by Laszlo Ersek.  It makes use of
+multiple processors to speed up its operation and in general works
+considerably faster than @command{bzip2}.  For a detailed description
+of @command{lbzip2} see @uref{http://freshmeat.net/@/projects/@/lbzip2} and
+@uref{http://www.linuxinsight.com/@/lbzip2-parallel-bzip2-utility.html,
+lbzip2: parallel bzip2 utility}.
+
+  Recent versions of @command{lbzip2} are mostly command line compatible
+with @command{bzip2}, which makes it possible to automatically invoke
+it via the @option{--bzip2} @GNUTAR{} command line option.  To do so,
+@GNUTAR{} must be configured with the @option{--with-bzip2} command
+line option, like this:
+
+@smallexample
+$ @kbd{./configure --with-bzip2=lbzip2 [@var{other-options}]}
+@end smallexample
+
+  Once configured and compiled this way, @command{tar --help} will show the
+following:
+
+@smallexample
+@group
+$ @kbd{tar --help | grep -- --bzip2}
+  -j, --bzip2                filter the archive through lbzip2
+@end group
+@end smallexample
+
+@noindent
+which means that running @command{tar --bzip2} will invoke @command{lbzip2}.
+
 @node sparse
 @subsection Archiving Sparse Files
 @cindex Sparse Files
@@ -9220,28 +9319,26 @@ than System V's.
 Normally, when @command{tar} archives a symbolic link, it writes a
 block to the archive naming the target of the link.  In that way, the
 @command{tar} archive is a faithful record of the file system contents.
-@option{--dereference} (@option{-h}) is used with @option{--create} (@option{-c}), and causes
-@command{tar} to archive the files symbolic links point to, instead of
-the links themselves.  When this option is used, when @command{tar}
-encounters a symbolic link, it will archive the linked-to file,
-instead of simply recording the presence of a symbolic link.
-
-The name under which the file is stored in the file system is not
-recorded in the archive.  To record both the symbolic link name and
-the file name in the system, archive the file under both names.  If
-all links were recorded automatically by @command{tar}, an extracted file
-might be linked to a file name that no longer exists in the file
-system.
-
-If a linked-to file is encountered again by @command{tar} while creating
-the same archive, an entire second copy of it will be stored.  (This
-@emph{might} be considered a bug.)
+When @option{--dereference} (@option{-h}) is used with
+@option{--create} (@option{-c}), @command{tar} archives the files
+symbolic links point to, instead of
+the links themselves.
 
-So, for portable archives, do not archive symbolic links as such,
-and use @option{--dereference} (@option{-h}): many systems do not support
+When creating portable archives, use @option{--dereference}
+(@option{-h}): some systems do not support
 symbolic links, and moreover, your distribution might be unusable if
 it contains unresolved symbolic links.
 
+When reading from an archive, the @option{--dereference} (@option{-h})
+option causes @command{tar} to follow an already-existing symbolic
+link when @command{tar} writes or reads a file named in the archive.
+Ordinarily, @command{tar} does not follow such a link, though it may
+remove the link before writing a new file.  @xref{Dealing with Old
+Files}.
+
+The @option{--dereference} option is unsafe if an untrusted user can
+modify directories while @command{tar} is running.  @xref{Security}.
+
 @node hard links
 @subsection Hard Links
 @cindex File names, using hard links
@@ -9370,7 +9467,7 @@ free from many of @samp{v7}'s drawbacks.
 @cindex ustar archive format
 Archive format defined by @acronym{POSIX}.1-1988 specification is called
 @code{ustar}.  Although it is more flexible than the V7 format, it
-still has many restrictions (@xref{Formats,ustar}, for the detailed
+still has many restrictions (@pxref{Formats,ustar}, for the detailed
 description of @code{ustar} format).  Along with V7 format,
 @code{ustar} format is a good choice for archives intended to be read
 with other implementations of @command{tar}.
@@ -9800,7 +9897,7 @@ The condensed file will contain both file map and file data, so no
 additional data will be needed to restore it.  If the original file
 name was @file{@var{dir}/@var{name}}, then the condensed file will be
 named @file{@var{dir}/@/GNUSparseFile.@var{n}/@/@var{name}}, where
-@var{n} is a decimal number@footnote{technically speaking, @var{n} is a
+@var{n} is a decimal number@footnote{Technically speaking, @var{n} is a
 @dfn{process @acronym{ID}} of the @command{tar} process which created the
 archive (@pxref{PAX keywords}).}.
 
@@ -10258,8 +10355,27 @@ that may be larger than will fit on the medium used to hold it.
 
 @xopindex{tape-length, short description}
 @item -L @var{num}
-@itemx --tape-length=@var{num}
-Change tape after writing @var{num} x 1024 bytes.
+@itemx --tape-length=@var{size}[@var{suf}]
+Change tape after writing @var{size} units of data.  Unless @var{suf} is
+given, @var{size} is treated as kilobytes, i.e. @samp{@var{size} x
+1024} bytes.  The following suffixes alter this behavior:
+
+@float Table, size-suffixes
+@caption{Size Suffixes}
+@multitable @columnfractions 0.2 0.3 0.3
+@headitem Suffix @tab Units            @tab Byte Equivalent
+@item b          @tab Blocks           @tab @var{size} x 512
+@item B          @tab Kilobytes        @tab @var{size} x 1024
+@item c          @tab Bytes            @tab @var{size}
+@item G          @tab Gigabytes        @tab @var{size} x 1024^3
+@item K          @tab Kilobytes        @tab @var{size} x 1024
+@item k          @tab Kilobytes        @tab @var{size} x 1024
+@item M          @tab Megabytes        @tab @var{size} x 1024^2
+@item P          @tab Petabytes        @tab @var{size} x 1024^5
+@item T          @tab Terabytes        @tab @var{size} x 1024^4
+@item w          @tab Words            @tab @var{size} x 2
+@end multitable
+@end float
 
 This option might be useful when your tape drivers do not properly
 detect end of physical tapes.  By being slightly conservative on the
@@ -11067,15 +11183,26 @@ tape:
 @anchor{tape-length}
 @table @option
 @opindex tape-length
-@item --tape-length=@var{size}
-@itemx -L @var{size}
-Set maximum length of a volume.  The @var{size} argument should then
-be the usable size of the tape in units of 1024 bytes.  This option
-selects @option{--multi-volume} automatically.  For example:
+@item --tape-length=@var{size}[@var{suf}]
+@itemx -L @var{size}[@var{suf}]
+Set maximum length of a volume.  The @var{suf}, if given, specifies
+units in which @var{size} is expressed, e.g. @samp{2M} mean 2
+megabytes (@pxref{size-suffixes}, for a list of allowed size
+suffixes).  Without @var{suf}, units of 1024 bytes (kilobyte) are
+assumed.
+
+This option selects @option{--multi-volume} automatically.  For example:
 
 @smallexample
 $ @kbd{tar --create --tape-length=41943040 --file=/dev/tape @var{files}}
 @end smallexample
+
+@noindent
+or, which is equivalent:
+
+@smallexample
+$ @kbd{tar --create --tape-length=4G --file=/dev/tape @var{files}}
+@end smallexample
 @end table
 
 @anchor{change volume prompt}
@@ -11300,9 +11427,9 @@ archive which will be displayed when the archive is listed with
 @option{--multi-volume} (@pxref{Using Multiple Tapes}), then the
 volume label will have @samp{Volume @var{nnn}} appended to the name
 you give, where @var{nnn} is the number of the volume of the archive.
-If you use the @option{--label=@var{volume-label}}) option when
+If you use the @option{--label=@var{volume-label}} option when
 reading an archive, it checks to make sure the label on the tape
-matches the one you give. @xref{label}.
+matches the one you gave.  @xref{label}.
 
 When @command{tar} writes an archive to tape, it creates a single
 tape file.  If multiple archives are written to the same tape, one
@@ -11351,15 +11478,16 @@ will usually see lots of spurious messages.
 @cindex Labeling an archive
 @cindex Labels on the archive media
 @cindex Labeling multi-volume archives
-@UNREVISED
 
 @opindex label
   To avoid problems caused by misplaced paper labels on the archive
-media, you can include a @dfn{label} entry---an archive member which
-contains the name of the archive---in the archive itself.  Use the
+media, you can include a @dfn{label} entry --- an archive member which
+contains the name of the archive --- in the archive itself.  Use the
 @option{--label=@var{archive-label}} (@option{-V @var{archive-label}})
-option in conjunction with the @option{--create} operation to include
-a label entry in the archive as it is being created.
+option@footnote{Until version 1.10, that option was called
+@option{--volume}, but is not available under that name anymore.} in
+conjunction with the @option{--create} operation to include a label
+entry in the archive as it is being created.
 
 @table @option
 @item --label=@var{archive-label}
@@ -11398,7 +11526,7 @@ V--------- 0 0        0 1992-03-07 12:01 iamalabel--Volume Header--
   However, @option{--list} option will cause listing entire
 contents of the archive, which may be undesirable (for example, if the
 archive is stored on a tape).  You can request checking only the volume
-by specifying @option{--test-label} option.  This option reads only the
+label by specifying @option{--test-label} option.  This option reads only the
 first block of an archive, so it can be used with slow storage
 devices.  For example:
 
@@ -11409,16 +11537,35 @@ iamalabel
 @end group
 @end smallexample
 
-  If @option{--test-label} is used with a single command line
-argument, @command{tar} compares the volume label with the
-argument.  It exits with code 0 if the two strings match, and with code
-2 otherwise.  In this case no output is displayed.  For example:
+  If @option{--test-label} is used with one or more command line
+arguments, @command{tar} compares the volume label with each
+argument.  It exits with code 0 if a match is found, and with code 1
+otherwise@footnote{Note that @GNUTAR{} versions up to 1.23 indicated
+mismatch with an exit code 2 and printed a spurious diagnostics on
+stderr.}.  No output is displayed, unless you also used the
+@option{--verbose} option.  For example:
 
 @smallexample
 @group
-$ @kbd{tar --test-label --file=iamanarchive 'iamalable'}
+$ @kbd{tar --test-label --file=iamanarchive 'iamalabel'}
 @result{} 0
-$ @kbd{tar --test-label --file=iamanarchive 'iamalable' alabel}
+$ @kbd{tar --test-label --file=iamanarchive 'alabel'}
+@result{} 1
+@end group
+@end smallexample
+
+  When used with the @option{--verbose} option, @command{tar}
+prints the actual volume label (if any), and a verbose diagnostics in
+case of a mismatch:
+
+@smallexample
+@group
+$ @kbd{tar --test-label --verbose --file=iamanarchive 'iamalabel'}
+iamalabel
+@result{} 0
+$ @kbd{tar --test-label --verbose --file=iamanarchive 'alabel'}
+iamalabel
+tar: Archive label mismatch
 @result{} 1
 @end group
 @end smallexample
@@ -11458,9 +11605,6 @@ up.  Since the volume numbering is automatically added in labels at
 creation time, it sounded logical to equally help the user taking care
 of it when the archive is being read.
 
-  The @option{--label} was once called @option{--volume}, but is not
-available under that name anymore.
-
   You can also use @option{--label} to get a common information on
 all tapes of a series.  For having this information different in each
 series created through a single script used on a regular basis, just
@@ -11474,13 +11618,19 @@ $ @kbd{tar --create --file=/dev/tape --multi-volume \
 @end group
 @end smallexample
 
-  Also note that each label has its own date and time, which corresponds
-to when @GNUTAR{} initially attempted to write it,
+  Some more notes about volume labels:
+
+@itemize @bullet
+@item Each label has its own date and time, which corresponds
+to the time when @GNUTAR{} initially attempted to write it,
 often soon after the operator launches @command{tar} or types the
-carriage return telling that the next tape is ready.  Comparing date
-labels does give an idea of tape throughput only if the delays for
-rewinding tapes and the operator switching them were negligible, which
-is usually not the case.
+carriage return telling that the next tape is ready.
+
+@item Comparing date labels to get an idea of tape throughput is
+unreliable.  It gives correct results only if the delays for rewinding
+tapes and the operator switching them were negligible, which is
+usually not the case.
+@end itemize
 
 @node verify
 @section Verifying Data as It is Stored
@@ -11573,6 +11723,275 @@ disabled) switch, a notch which can be popped out or covered, a ring
 which can be removed from the center of a tape reel, or some other
 changeable feature.
 
+@node Reliability and security
+@chapter Reliability and Security
+
+The @command{tar} command reads and writes files as any other
+application does, and is subject to the usual caveats about
+reliability and security.  This section contains some commonsense
+advice on the topic.
+
+@menu
+* Reliability::
+* Security::
+@end menu
+
+@node Reliability
+@section Reliability
+
+Ideally, when @command{tar} is creating an archive, it reads from a
+file system that is not being modified, and encounters no errors or
+inconsistencies while reading and writing.  If this is the case, the
+archive should faithfully reflect what was read.  Similarly, when
+extracting from an archive, ideally @command{tar} ideally encounters
+no errors and the extracted files faithfully reflect what was in the
+archive.
+
+However, when reading or writing real-world file systems, several
+things can go wrong; these include permissions problems, corruption of
+data, and race conditions.
+
+@menu
+* Permissions problems::
+* Data corruption and repair::
+* Race conditions::
+@end menu
+
+@node Permissions problems
+@subsection Permissions Problems
+
+If @command{tar} encounters errors while reading or writing files, it
+normally reports an error and exits with nonzero status.  The work it
+does may therefore be incomplete.  For example, when creating an
+archive, if @command{tar} cannot read a file then it cannot copy the
+file into the archive.
+
+@node Data corruption and repair
+@subsection Data Corruption and Repair
+
+If an archive becomes corrupted by an I/O error, this may corrupt the
+data in an extracted file.  Worse, it may corrupt the file's metadata,
+which may cause later parts of the archive to become misinterpreted.
+An tar-format archive contains a checksum that most likely will detect
+errors in the metadata, but it will not detect errors in the data.
+
+If data corruption is a concern, you can compute and check your own
+checksums of an archive by using other programs, such as
+@command{cksum}.
+
+When attempting to recover from a read error or data corruption in an
+archive, you may need to skip past the questionable data and read the
+rest of the archive.  This requires some expertise in the archive
+format and in other software tools.
+
+@node Race conditions
+@subsection Race conditions
+
+If some other process is modifying the file system while @command{tar}
+is reading or writing files, the result may well be inconsistent due
+to race conditions.  For example, if another process creates some
+files in a directory while @command{tar} is creating an archive
+containing the directory's files, @command{tar} may see some of the
+files but not others, or it may see a file that is in the process of
+being created.  The resulting archive may not be a snapshot of the
+file system at any point in time.  If an application such as a
+database system depends on an accurate snapshot, restoring from the
+@command{tar} archive of a live file system may therefore break that
+consistency and may break the application.  The simplest way to avoid
+the consistency issues is to avoid making other changes to the file
+system while tar is reading it or writing it.
+
+When creating an archive, several options are available to avoid race
+conditions.  Some hosts have a way of snapshotting a file system, or
+of temporarily suspending all changes to a file system, by (say)
+suspending the only virtual machine that can modify a file system; if
+you use these facilities and have @command{tar -c} read from a
+snapshot when creating an archive, you can avoid inconsistency
+problems.  More drastically, before starting @command{tar} you could
+suspend or shut down all processes other than @command{tar} that have
+access to the file system, or you could unmount the file system and
+then mount it read-only.
+
+When extracting from an archive, one approach to avoid race conditions
+is to create a directory that no other process can write to, and
+extract into that.
+
+@node Security
+@section Security
+
+In some cases @command{tar} may be used in an adversarial situation,
+where an untrusted user is attempting to gain information about or
+modify otherwise-inaccessible files.  Dealing with untrusted data
+(that is, data generated by an untrusted user) typically requires
+extra care, because even the smallest mistake in the use of
+@command{tar} is more likely to be exploited by an adversary than by a
+race condition.
+
+@menu
+* Privacy::
+* Integrity::
+* Live untrusted data::
+* Security rules of thumb::
+@end menu
+
+@node Privacy
+@subsection Privacy
+
+Standard privacy concerns apply when using @command{tar}.  For
+example, suppose you are archiving your home directory into a file
+@file{/archive/myhome.tar}.  Any secret information in your home
+directory, such as your SSH secret keys, are copied faithfully into
+the archive.  Therefore, if your home directory contains any file that
+should not be read by some other user, the archive itself should be
+not be readable by that user.  And even if the archive's data are
+inaccessible to untrusted users, its metadata (such as size or
+last-modified date) may reveal some information about your home
+directory; if the metadata are intended to be private, the archive's
+parent directory should also be inaccessible to untrusted users.
+
+One precaution is to create @file{/archive} so that it is not
+accessible to any user, unless that user also has permission to access
+all the files in your home directory.
+
+Similarly, when extracting from an archive, take care that the
+permissions of the extracted files are not more generous than what you
+want.  Even if the archive itself is readable only to you, files
+extracted from it have their own permissions that may differ.
+
+@node Integrity
+@subsection Integrity
+
+When creating archives, take care that they are not writable by a
+untrusted user; otherwise, that user could modify the archive, and
+when you later extract from the archive you will get incorrect data.
+
+When @command{tar} extracts from an archive, by default it writes into
+files relative to the working directory.  If the archive was generated
+by an untrusted user, that user therefore can write into any file
+under the working directory.  If the working directory contains a
+symbolic link to another directory, the untrusted user can also write
+into any file under the referenced directory.  When extracting from an
+untrusted archive, it is therefore good practice to create an empty
+directory and run @command{tar} in that directory.
+
+When extracting from two or more untrusted archives, each one should
+be extracted independently, into different empty directories.
+Otherwise, the first archive could create a symbolic link into an area
+outside the working directory, and the second one could follow the
+link and overwrite data that is not under the working directory.  For
+example, when restoring from a series of incremental dumps, the
+archives should have been created by a trusted process, as otherwise
+the incremental restores might alter data outside the working
+directory.
+
+If you use the @option{--absolute-names} (@option{-P}) option when
+extracting, @command{tar} respects any file names in the archive, even
+file names that begin with @file{/} or contain @file{..}.  As this
+lets the archive overwrite any file in your system that you can write,
+the @option{--absolute-names} (@option{-P}) option should be used only
+for trusted archives.
+
+Conversely, with the @option{--keep-old-files} (@option{-k}) option,
+@command{tar} refuses to replace existing files when extracting; and
+with the @option{--no-overwrite-dir} option, @command{tar} refuses to
+replace the permissions or ownership of already-existing directories.
+These options may help when extracting from untrusted archives.
+
+@node Live untrusted data
+@subsection Dealing with Live Untrusted Data
+
+Extra care is required when creating from or extracting into a file
+system that is accessible to untrusted users.  For example, superusers
+who invoke @command{tar} must be wary about its actions being hijacked
+by an adversary who is reading or writing the file system at the same
+time that @command{tar} is operating.
+
+When creating an archive from a live file system, @command{tar} is
+vulnerable to denial-of-service attacks.  For example, an adversarial
+user could create the illusion of an indefinitely-deep directory
+hierarchy @file{d/e/f/g/...} by creating directories one step ahead of
+@command{tar}, or the illusion of an indefinitely-long file by
+creating a sparse file but arranging for blocks to be allocated just
+before @command{tar} reads them.  There is no easy way for
+@command{tar} to distinguish these scenarios from legitimate uses, so
+you may need to monitor @command{tar}, just as you'd need to monitor
+any other system service, to detect such attacks.
+
+While a superuser is extracting from an archive into a live file
+system, an untrusted user might replace a directory with a symbolic
+link, in hopes that @command{tar} will follow the symbolic link and
+extract data into files that the untrusted user does not have access
+to.  Even if the archive was generated by the superuser, it may
+contain a file such as @file{d/etc/passwd} that the untrusted user
+earlier created in order to break in; if the untrusted user replaces
+the directory @file{d/etc} with a symbolic link to @file{/etc} while
+@command{tar} is running, @command{tar} will overwrite
+@file{/etc/passwd}.  This attack can be prevented by extracting into a
+directory that is inaccessible to untrusted users.
+
+Similar attacks via symbolic links are also possible when creating an
+archive, if the untrusted user can modify an ancestor of a top-level
+argument of @command{tar}.  For example, an untrusted user that can
+modify @file{/home/eve} can hijack a running instance of @samp{tar -cf
+- /home/eve/Documents/yesterday} by replacing
+@file{/home/eve/Documents} with a symbolic link to some other
+location.  Attacks like these can be prevented by making sure that
+untrusted users cannot modify any files that are top-level arguments
+to @command{tar}, or any ancestor directories of these files.
+
+@node Security rules of thumb
+@subsection Security Rules of Thumb
+
+This section briefly summarizes rules of thumb for avoiding security
+pitfalls.
+
+@itemize @bullet
+
+@item
+Protect archives at least as much as you protect any of the files
+being archived.
+
+@item
+Extract from an untrusted archive only into an otherwise-empty
+directory.  This directory and its parent should be accessible only to
+trusted users.  For example:
+
+@example
+@group
+$ @kbd{chmod go-rwx .}
+$ @kbd{mkdir -m go-rwx dir}
+$ @kbd{cd dir}
+$ @kbd{tar -xvf /archives/got-it-off-the-net.tar.gz}
+@end group
+@end example
+
+As a corollary, do not do an incremental restore from an untrusted archive.
+
+@item
+Do not let untrusted users access files extracted from untrusted
+archives without checking first for problems such as setuid programs.
+
+@item
+Do not let untrusted users modify directories that are ancestors of
+top-level arguments of @command{tar}.  For example, while you are
+executing @samp{tar -cf /archive/u-home.tar /u/home}, do not let an
+untrusted user modify @file{/}, @file{/archive}, or @file{/u}.
+
+@item
+Pay attention to the diagnostics and exit status of @command{tar}.
+
+@item
+When archiving live file systems, monitor running instances of
+@command{tar} to detect denial-of-service attacks.
+
+@item
+Avoid unusual options such as @option{--absolute-names} (@option{-P}),
+@option{--dereference} (@option{-h}), @option{--overwrite},
+@option{--recursive-unlink}, and @option{--remove-files} unless you
+understand their security implications.
+
+@end itemize
+
 @node Changes
 @appendix Changes
 
@@ -11893,12 +12312,8 @@ Right margin of the text output. Used for wrapping.
 @appendix Free Software Needs Free Documentation
 @include freemanuals.texi
 
-@node Copying This Manual
-@appendix Copying This Manual
-
-@menu
-* GNU Free Documentation License::  License for copying this manual
-@end menu
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
 
 @include fdl.texi
 
@@ -11907,7 +12322,8 @@ Right margin of the text output. Used for wrapping.
 
 This appendix contains an index of all @GNUTAR{} long command line
 options. The options are listed without the preceding double-dash.
-For a cross-reference of short command line options, @ref{Short Option Summary}.
+For a cross-reference of short command line options, see
+@ref{Short Option Summary}.
 
 @printindex op
 
index e80311fc006ff87cac11f487acc4e6907cef2aab..d7cd620e74557b1e06cd0aee03ec1afd1609cd1f 100644 (file)
@@ -18,5 +18,3 @@
 @end ifclear
 @xopindex{\option\, summary}
 @end macro
-
-
index 591fd0e3e70cd7e317ae7161a8aad8152c98946e..f38c5d8ccf6879b4b41d0898f6a963e620c7b054 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 9 March 2010
-@set UPDATED-MONTH March 2010
-@set EDITION 1.23
-@set VERSION 1.23
+@set UPDATED 24 October 2010
+@set UPDATED-MONTH October 2010
+@set EDITION 1.24
+@set VERSION 1.24
index b34cc13297dd27fc9e91345ffb2c9c618493fd7a..5fca573fbb808f453a8d085ad557232573c8a93d 100644 (file)
@@ -1,3 +1,5 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
 ## DO NOT EDIT! GENERATED AUTOMATICALLY!
 ## Process this file with automake to produce Makefile.in.
 # Copyright (C) 2002-2010 Free Software Foundation, Inc.
@@ -9,7 +11,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libgnu --source-base=gnu --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=lock --no-libtool --macro-prefix=gl alloca argmatch argp argp-version-etc backupfile canonicalize closeout configmake dirname error exclude exitfail fileblocks fnmatch-gnu fseeko ftruncate full-write getdate getline getopt getopt-gnu getpagesize gettext gettime gitlog-to-changelog hash human inttostr inttypes lchown localcharset mkdtemp modechange obstack priv-set progname quote quotearg rpmatch safe-read save-cwd savedir setenv snprintf stat-time stdbool stdint stpcpy strdup-posix strerror strtol strtoul timespec unlinkdir unlocked-io utimens version-etc-fsf xalloc xalloc-die xgetcwd xstrtoumax xvasprintf
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libgnu --source-base=gnu --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=lock --no-libtool --macro-prefix=gl alloca argmatch argp argp-version-etc backupfile closeout configmake dirname error exclude exitfail fdopendir fdutimensat fileblocks fnmatch-gnu fseeko full-write futimens getline getopt-gnu getpagesize gettext gettime gitlog-to-changelog hash human inttostr inttypes lchown linkat localcharset mkdtemp mkfifoat modechange obstack openat parse-datetime priv-set progname quote quotearg readlinkat renameat rpmatch safe-read savedir setenv snprintf stat-time stdbool stdint stpcpy strdup-posix strerror strtol strtoul symlinkat timespec unlinkdir unlocked-io utimensat version-etc-fsf xalloc xalloc-die xgetcwd xstrtoumax xvasprintf
 
 AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
 
@@ -65,13 +67,21 @@ EXTRA_DIST += alloca.in.h
 
 ## end   gnulib module alloca-opt
 
-## begin gnulib module areadlink-with-size
+## begin gnulib module areadlink
 
-libgnu_a_SOURCES += areadlink-with-size.c
+libgnu_a_SOURCES += areadlink.c
 
 EXTRA_DIST += areadlink.h
 
-## end   gnulib module areadlink-with-size
+## end   gnulib module areadlink
+
+## begin gnulib module areadlinkat
+
+libgnu_a_SOURCES += areadlinkat.c
+
+EXTRA_DIST += areadlink.h
+
+## end   gnulib module areadlinkat
 
 ## begin gnulib module arg-nonnull
 
@@ -175,14 +185,14 @@ libgnu_a_SOURCES += c-ctype.h c-ctype.c
 
 ## end   gnulib module c-ctype
 
-## begin gnulib module canonicalize
+## begin gnulib module canonicalize-lgpl
 
 
-EXTRA_DIST += canonicalize.c canonicalize.h
+EXTRA_DIST += canonicalize-lgpl.c
 
-EXTRA_libgnu_a_SOURCES += canonicalize.c
+EXTRA_libgnu_a_SOURCES += canonicalize-lgpl.c
 
-## end   gnulib module canonicalize
+## end   gnulib module canonicalize-lgpl
 
 ## begin gnulib module chdir-long
 
@@ -202,6 +212,15 @@ EXTRA_libgnu_a_SOURCES += chown.c fchown-stub.c
 
 ## end   gnulib module chown
 
+## begin gnulib module cloexec
+
+
+EXTRA_DIST += cloexec.c cloexec.h
+
+EXTRA_libgnu_a_SOURCES += cloexec.c
+
+## end   gnulib module cloexec
+
 ## begin gnulib module close
 
 
@@ -309,16 +328,19 @@ dirent.h: dirent.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \
              -e 's|@''GNULIB_DIRFD''@|$(GNULIB_DIRFD)|g' \
              -e 's|@''GNULIB_FDOPENDIR''@|$(GNULIB_FDOPENDIR)|g' \
              -e 's|@''GNULIB_SCANDIR''@|$(GNULIB_SCANDIR)|g' \
              -e 's|@''GNULIB_ALPHASORT''@|$(GNULIB_ALPHASORT)|g' \
              -e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \
+             -e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \
              -e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \
              -e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \
              -e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \
              -e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \
+             -e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \
              -e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|g' \
              -e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -389,6 +411,7 @@ errno.h: errno.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
              -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
              -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
@@ -469,6 +492,7 @@ fcntl.h: fcntl.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
              -e 's|@''GNULIB_FCNTL''@|$(GNULIB_FCNTL)|g' \
              -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \
@@ -499,13 +523,13 @@ EXTRA_libgnu_a_SOURCES += fdopendir.c openat-proc.c
 
 ## end   gnulib module fdopendir
 
-## begin gnulib module file-set
+## begin gnulib module fdutimensat
 
-libgnu_a_SOURCES += file-set.c
+libgnu_a_SOURCES += fdutimensat.c
 
-EXTRA_DIST += file-set.h
+EXTRA_DIST += utimens.h
 
-## end   gnulib module file-set
+## end   gnulib module fdutimensat
 
 ## begin gnulib module fileblocks
 
@@ -516,6 +540,15 @@ EXTRA_libgnu_a_SOURCES += fileblocks.c
 
 ## end   gnulib module fileblocks
 
+## begin gnulib module filenamecat-lgpl
+
+
+EXTRA_DIST += filenamecat-lgpl.c filenamecat.h
+
+EXTRA_libgnu_a_SOURCES += filenamecat-lgpl.c
+
+## end   gnulib module filenamecat-lgpl
+
 ## begin gnulib module float
 
 BUILT_SOURCES += $(FLOAT_H)
@@ -527,6 +560,7 @@ float.h: float.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
              < $(srcdir)/float.in.h; \
        } > $@-t && \
@@ -576,20 +610,20 @@ EXTRA_libgnu_a_SOURCES += fseeko.c
 
 ## end   gnulib module fseeko
 
-## begin gnulib module ftruncate
+## begin gnulib module full-write
 
+libgnu_a_SOURCES += full-write.h full-write.c
 
-EXTRA_DIST += ftruncate.c
+## end   gnulib module full-write
 
-EXTRA_libgnu_a_SOURCES += ftruncate.c
+## begin gnulib module futimens
 
-## end   gnulib module ftruncate
 
-## begin gnulib module full-write
+EXTRA_DIST += futimens.c
 
-libgnu_a_SOURCES += full-write.h full-write.c
+EXTRA_libgnu_a_SOURCES += futimens.c
 
-## end   gnulib module full-write
+## end   gnulib module futimens
 
 ## begin gnulib module getcwd
 
@@ -600,17 +634,6 @@ EXTRA_libgnu_a_SOURCES += getcwd.c
 
 ## end   gnulib module getcwd
 
-## begin gnulib module getdate
-
-libgnu_a_SOURCES += getdate.y
-BUILT_SOURCES += getdate.c
-MAINTAINERCLEANFILES += getdate.c
-EXTRA_DIST += getdate.c
-
-EXTRA_DIST += getdate.h
-
-## end   gnulib module getdate
-
 ## begin gnulib module getdelim
 
 
@@ -650,6 +673,7 @@ getopt.h: getopt.in.h $(ARG_NONNULL_H)
          sed -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              < $(srcdir)/getopt.in.h; \
@@ -682,7 +706,7 @@ EXTRA_libgnu_a_SOURCES += getpagesize.c
 # This option has no effect when the user disables NLS (because then the intl
 # directory contains no libintl.h file) or when the project does not use
 # "gettextize --intl".
-#AM_CPPFLAGS += -I$(top_builddir)/intl
+AM_CPPFLAGS += -I$(top_builddir)/intl
 
 EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
 
@@ -728,20 +752,6 @@ EXTRA_libgnu_a_SOURCES += hash.c
 
 ## end   gnulib module hash
 
-## begin gnulib module hash-pjw
-
-libgnu_a_SOURCES += hash-pjw.h hash-pjw.c
-
-## end   gnulib module hash-pjw
-
-## begin gnulib module hash-triple
-
-libgnu_a_SOURCES += hash-triple.c
-
-EXTRA_DIST += hash-triple.h
-
-## end   gnulib module hash-triple
-
 ## begin gnulib module havelib
 
 
@@ -767,10 +777,16 @@ EXTRA_DIST += intprops.h
 
 ## begin gnulib module inttostr
 
+libgnu_a_SOURCES += \
+  imaxtostr.c \
+  inttostr.c \
+  offtostr.c \
+  uinttostr.c \
+  umaxtostr.c
 
-EXTRA_DIST += imaxtostr.c inttostr.c inttostr.h offtostr.c uinttostr.c umaxtostr.c
+EXTRA_DIST += anytostr.c inttostr.h
 
-EXTRA_libgnu_a_SOURCES += imaxtostr.c inttostr.c offtostr.c uinttostr.c umaxtostr.c
+EXTRA_libgnu_a_SOURCES += anytostr.c
 
 ## end   gnulib module inttostr
 
@@ -786,6 +802,7 @@ inttypes.h: inttypes.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H)
          sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
              -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
              -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
@@ -827,10 +844,13 @@ langinfo.h: langinfo.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
          sed -e 's|@''HAVE_LANGINFO_H''@|$(HAVE_LANGINFO_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
              -e 's|@''GNULIB_NL_LANGINFO''@|$(GNULIB_NL_LANGINFO)|g' \
              -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
+             -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
              -e 's|@''HAVE_LANGINFO_ERA''@|$(HAVE_LANGINFO_ERA)|g' \
+             -e 's|@''HAVE_LANGINFO_YESEXPR''@|$(HAVE_LANGINFO_YESEXPR)|g' \
              -e 's|@''HAVE_NL_LANGINFO''@|$(HAVE_NL_LANGINFO)|g' \
              -e 's|@''REPLACE_NL_LANGINFO''@|$(REPLACE_NL_LANGINFO)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -853,6 +873,24 @@ EXTRA_libgnu_a_SOURCES += lchown.c
 
 ## end   gnulib module lchown
 
+## begin gnulib module link
+
+
+EXTRA_DIST += link.c
+
+EXTRA_libgnu_a_SOURCES += link.c
+
+## end   gnulib module link
+
+## begin gnulib module linkat
+
+
+EXTRA_DIST += at-func2.c linkat.c
+
+EXTRA_libgnu_a_SOURCES += at-func2.c linkat.c
+
+## end   gnulib module linkat
+
 ## begin gnulib module localcharset
 
 libgnu_a_SOURCES += localcharset.h localcharset.c
@@ -945,14 +983,14 @@ EXTRA_libgnu_a_SOURCES += lstat.c
 
 ## end   gnulib module lstat
 
-## begin gnulib module malloc
+## begin gnulib module malloc-gnu
 
 
 EXTRA_DIST += malloc.c
 
 EXTRA_libgnu_a_SOURCES += malloc.c
 
-## end   gnulib module malloc
+## end   gnulib module malloc-gnu
 
 ## begin gnulib module malloc-posix
 
@@ -1063,6 +1101,33 @@ EXTRA_libgnu_a_SOURCES += mkdtemp.c
 
 ## end   gnulib module mkdtemp
 
+## begin gnulib module mkfifo
+
+
+EXTRA_DIST += mkfifo.c
+
+EXTRA_libgnu_a_SOURCES += mkfifo.c
+
+## end   gnulib module mkfifo
+
+## begin gnulib module mkfifoat
+
+
+EXTRA_DIST += mkfifoat.c mknodat.c
+
+EXTRA_libgnu_a_SOURCES += mkfifoat.c mknodat.c
+
+## end   gnulib module mkfifoat
+
+## begin gnulib module mknod
+
+
+EXTRA_DIST += mknod.c
+
+EXTRA_libgnu_a_SOURCES += mknod.c
+
+## end   gnulib module mknod
+
 ## begin gnulib module mktime
 
 
@@ -1123,6 +1188,29 @@ libgnu_a_SOURCES += openat-die.c
 
 ## end   gnulib module openat-die
 
+## begin gnulib module parse-datetime
+
+# This rule overrides the Automake generated .y.c rule, to ensure that the
+# parse-datetime.c file gets generated in the source directory, not in the
+# build directory.
+parse-datetime.c: parse-datetime.y
+       $(AM_V_GEN)$(SHELL) $(YLWRAP) $(srcdir)/parse-datetime.y \
+                                     y.tab.c parse-datetime.c \
+                                     y.tab.h parse-datetime.h \
+                                     y.output parse-datetime.output \
+                                     -- $(YACC) $(YFLAGS) $(AM_YFLAGS) && \
+       mv parse-datetime.c parse-datetime.c-t && \
+       mv parse-datetime.c-t $(srcdir)/parse-datetime.c
+libgnu_a_SOURCES += parse-datetime.y
+BUILT_SOURCES += parse-datetime.c
+MOSTLYCLEANFILES += parse-datetime.c-t
+MAINTAINERCLEANFILES += parse-datetime.c
+EXTRA_DIST += parse-datetime.c
+
+EXTRA_DIST += parse-datetime.h
+
+## end   gnulib module parse-datetime
+
 ## begin gnulib module pathmax
 
 
@@ -1180,6 +1268,15 @@ EXTRA_libgnu_a_SOURCES += readlink.c
 
 ## end   gnulib module readlink
 
+## begin gnulib module readlinkat
+
+
+EXTRA_DIST += readlinkat.c
+
+EXTRA_libgnu_a_SOURCES += readlinkat.c
+
+## end   gnulib module readlinkat
+
 ## begin gnulib module realloc-posix
 
 
@@ -1198,6 +1295,24 @@ EXTRA_libgnu_a_SOURCES += regcomp.c regex.c regex_internal.c regexec.c
 
 ## end   gnulib module regex
 
+## begin gnulib module rename
+
+
+EXTRA_DIST += rename.c
+
+EXTRA_libgnu_a_SOURCES += rename.c
+
+## end   gnulib module rename
+
+## begin gnulib module renameat
+
+
+EXTRA_DIST += at-func2.c renameat.c
+
+EXTRA_libgnu_a_SOURCES += at-func2.c renameat.c
+
+## end   gnulib module renameat
+
 ## begin gnulib module rmdir
 
 
@@ -1234,15 +1349,6 @@ EXTRA_libgnu_a_SOURCES += safe-write.c
 
 ## end   gnulib module safe-write
 
-## begin gnulib module same
-
-
-EXTRA_DIST += same.c same.h
-
-EXTRA_libgnu_a_SOURCES += same.c
-
-## end   gnulib module same
-
 ## begin gnulib module same-inode
 
 
@@ -1335,6 +1441,7 @@ stdarg.h: stdarg.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
              < $(srcdir)/stdarg.in.h; \
        } > $@-t && \
@@ -1374,6 +1481,7 @@ stddef.h: stddef.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
              -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
              -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
@@ -1398,6 +1506,7 @@ stdint.h: stdint.in.h
          sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
              -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
              -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
@@ -1439,6 +1548,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
              -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
              -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
@@ -1472,6 +1582,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
              -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
              -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_TMPFILE''@|$(GNULIB_TMPFILE)|g' \
              -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
              -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
              -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
@@ -1488,6 +1599,8 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
              -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
              -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+             -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
              -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
              -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
              -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
@@ -1514,12 +1627,14 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
              -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
              -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
              -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
              -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
              -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
              -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
              -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
              -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
@@ -1544,18 +1659,22 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+             -e 's|@''GNULIB__EXIT''@|$(GNULIB__EXIT)|g' \
              -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
              -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
              -e 's|@''GNULIB_CANONICALIZE_FILE_NAME''@|$(GNULIB_CANONICALIZE_FILE_NAME)|g' \
              -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
              -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+             -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
              -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
              -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
              -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
              -e 's|@''GNULIB_MKSTEMPS''@|$(GNULIB_MKSTEMPS)|g' \
+             -e 's|@''GNULIB_PTSNAME''@|$(GNULIB_PTSNAME)|g' \
              -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
              -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
              -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
@@ -1565,20 +1684,23 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
              -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
              -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+             -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
+             -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
              -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
              -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
-             -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
              -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
              -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
              -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
-             -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
+             -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
              -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
              -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
              -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
+             -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
              -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+             -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
              -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
              -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
-             -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
              -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
              -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
              -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
@@ -1587,10 +1709,14 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
              -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
              -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+             -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
              -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+             -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
              -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
              -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
              -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+             -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
              -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
              -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
              -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
@@ -1670,6 +1796,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
              -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
              -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
@@ -1694,6 +1821,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
              -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
              -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNCAT''@|$(GNULIB_STRNCAT)|g' \
              -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
              -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
              -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
@@ -1706,6 +1834,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
              < $(srcdir)/string.in.h | \
          sed -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
              -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
              -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
              -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
@@ -1720,16 +1849,18 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
              -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
              -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
-             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
              -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
              -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
              -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
              -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
              -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
              -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
              -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
              -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
              -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
              -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
              -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
              -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
@@ -1756,6 +1887,7 @@ strings.h: strings.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
              -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
              -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
@@ -1848,6 +1980,24 @@ EXTRA_libgnu_a_SOURCES += strtoumax.c
 
 ## end   gnulib module strtoumax
 
+## begin gnulib module symlink
+
+
+EXTRA_DIST += symlink.c
+
+EXTRA_libgnu_a_SOURCES += symlink.c
+
+## end   gnulib module symlink
+
+## begin gnulib module symlinkat
+
+
+EXTRA_DIST += symlinkat.c
+
+EXTRA_libgnu_a_SOURCES += symlinkat.c
+
+## end   gnulib module symlinkat
+
 ## begin gnulib module sys_stat
 
 BUILT_SOURCES += sys/stat.h
@@ -1860,6 +2010,7 @@ sys/stat.h: sys_stat.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
              -e 's|@''GNULIB_FCHMODAT''@|$(GNULIB_FCHMODAT)|g' \
              -e 's|@''GNULIB_FSTATAT''@|$(GNULIB_FSTATAT)|g' \
@@ -1919,6 +2070,7 @@ sys/time.h: sys_time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
          sed -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \
              -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \
              -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \
@@ -1948,6 +2100,7 @@ sysexits.h: sysexits.in.h
          sed -e 's|@''HAVE_SYSEXITS_H''@|$(HAVE_SYSEXITS_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYSEXITS_H''@|$(NEXT_SYSEXITS_H)|g' \
              < $(srcdir)/sysexits.in.h; \
        } > $@-t && \
@@ -1978,16 +2131,22 @@ time.h: time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
              -e 's|@''GNULIB_MKTIME''@|$(GNULIB_MKTIME)|g' \
              -e 's|@''GNULIB_NANOSLEEP''@|$(GNULIB_NANOSLEEP)|g' \
              -e 's|@''GNULIB_STRPTIME''@|$(GNULIB_STRPTIME)|g' \
              -e 's|@''GNULIB_TIMEGM''@|$(GNULIB_TIMEGM)|g' \
+             -e 's|@''GNULIB_TIME_R''@|$(GNULIB_TIME_R)|g' \
+             -e 's|@''HAVE_LOCALTIME_R''@|$(HAVE_LOCALTIME_R)|g' \
+             -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+             -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+             -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \
              -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
              -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
              -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-             -e 's|@''REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
              -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+             -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
              -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
              -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -2030,6 +2189,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
          sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
              -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
              -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
@@ -2057,12 +2217,14 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
              -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
              -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
+             -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
              -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
              -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
              -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
              -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
              -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
              -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
+             -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
              -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
              -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
              -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
@@ -2075,6 +2237,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
              -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
              -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+             -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
              -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
              -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
              -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
@@ -2084,28 +2247,30 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
              -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
              -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
-             -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
              -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
              -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
              -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
              -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
              -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+             -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
              -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
              -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
              -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
              -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
              -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+             -e 's|@''HAVE_TTYNAME_R''@|$(HAVE_TTYNAME_R)|g' \
              -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
              -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
              -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
              -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
              -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
              -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
              -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
              -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
              -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
              -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
-             -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
              -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
              -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
              -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
@@ -2115,10 +2280,12 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
              -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
              -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+             -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
              -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
              -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
              -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
              -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+             -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
              -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
              -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
              -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
@@ -2147,21 +2314,41 @@ EXTRA_libgnu_a_SOURCES += dup-safer.c fd-safer.c pipe-safer.c
 
 ## begin gnulib module unitypes
 
+BUILT_SOURCES += $(LIBUNISTRING_UNITYPES_H)
 
-EXTRA_DIST += unitypes.h
+unitypes.h: unitypes.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/unitypes.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += unitypes.h unitypes.h-t
+
+EXTRA_DIST += unitypes.in.h
 
 ## end   gnulib module unitypes
 
 ## begin gnulib module uniwidth/base
 
+BUILT_SOURCES += $(LIBUNISTRING_UNIWIDTH_H)
+
+uniwidth.h: uniwidth.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/uniwidth.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+MOSTLYCLEANFILES += uniwidth.h uniwidth.h-t
 
-EXTRA_DIST += localcharset.h uniwidth.h
+EXTRA_DIST += localcharset.h uniwidth.in.h
 
 ## end   gnulib module uniwidth/base
 
 ## begin gnulib module uniwidth/width
 
+if LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH
 libgnu_a_SOURCES += uniwidth/width.c
+endif
 
 EXTRA_DIST += uniwidth/cjk.h
 
@@ -2210,6 +2397,15 @@ EXTRA_libgnu_a_SOURCES += utimens.c
 
 ## end   gnulib module utimens
 
+## begin gnulib module utimensat
+
+
+EXTRA_DIST += utimensat.c
+
+EXTRA_libgnu_a_SOURCES += utimensat.c
+
+## end   gnulib module utimensat
+
 ## begin gnulib module vasnprintf
 
 
@@ -2285,6 +2481,7 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
              -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
              -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
@@ -2355,9 +2552,12 @@ wctype.h: wctype.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
          sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
              -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
              -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
              -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
index de497b903ec32a059bc5bd83f9256cbb380b7246..752456c0a3f281f982def50ca0bdc728780e86ce 100644 (file)
@@ -15,6 +15,8 @@
 
 @SET_MAKE@
 
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
 # Copyright (C) 2002-2010 Free Software Foundation, Inc.
 #
 # This file is free software, distributed under the terms of the GNU
@@ -24,7 +26,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libgnu --source-base=gnu --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=lock --no-libtool --macro-prefix=gl alloca argmatch argp argp-version-etc backupfile canonicalize closeout configmake dirname error exclude exitfail fileblocks fnmatch-gnu fseeko ftruncate full-write getdate getline getopt getopt-gnu getpagesize gettext gettime gitlog-to-changelog hash human inttostr inttypes lchown localcharset mkdtemp modechange obstack priv-set progname quote quotearg rpmatch safe-read save-cwd savedir setenv snprintf stat-time stdbool stdint stpcpy strdup-posix strerror strtol strtoul timespec unlinkdir unlocked-io utimens version-etc-fsf xalloc xalloc-die xgetcwd xstrtoumax xvasprintf
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libgnu --source-base=gnu --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=lock --no-libtool --macro-prefix=gl alloca argmatch argp argp-version-etc backupfile closeout configmake dirname error exclude exitfail fdopendir fdutimensat fileblocks fnmatch-gnu fseeko full-write futimens getline getopt-gnu getpagesize gettext gettime gitlog-to-changelog hash human inttostr inttypes lchown linkat localcharset mkdtemp mkfifoat modechange obstack openat parse-datetime priv-set progname quote quotearg readlinkat renameat rpmatch safe-read savedir setenv snprintf stat-time stdbool stdint stpcpy strdup-posix strerror strtol strtoul symlinkat timespec unlinkdir unlocked-io utimensat version-etc-fsf xalloc xalloc-die xgetcwd xstrtoumax xvasprintf
 
 
 
@@ -47,17 +49,18 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_1 = uniwidth/width.c
 subdir = gnu
 DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in alloca.c getdate.c
+       $(srcdir)/Makefile.in alloca.c parse-datetime.c
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -70,17 +73,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -90,54 +93,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -165,19 +175,34 @@ am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
 am__v_at_0 = @
 libgnu_a_AR = $(AR) $(ARFLAGS)
 am__DEPENDENCIES_1 =
+am__libgnu_a_SOURCES_DIST = areadlink.c areadlinkat.c argp.h argp-ba.c \
+       argp-eexst.c argp-fmtstream.c argp-fmtstream.h argp-fs-xinl.c \
+       argp-help.c argp-namefrob.h argp-parse.c argp-pin.c argp-pv.c \
+       argp-pvh.c argp-xinl.c argp-version-etc.h argp-version-etc.c \
+       bitrotate.h c-ctype.h c-ctype.c close-hook.c exitfail.c \
+       fdutimensat.c full-write.h full-write.c gettext.h imaxtostr.c \
+       inttostr.c offtostr.c uinttostr.c umaxtostr.c localcharset.h \
+       localcharset.c malloca.c mbchar.c mbscasecmp.c mbuiter.h \
+       openat-die.c parse-datetime.y priv-set.c progname.h progname.c \
+       size_max.h strnlen1.h strnlen1.c uniwidth/width.c verify.h \
+       version-etc.h version-etc.c version-etc-fsf.c xalloc-die.c \
+       xsize.h xstrndup.h xstrndup.c xstrtoumax.c xvasprintf.h \
+       xvasprintf.c xasprintf.c
 am__dirstamp = $(am__leading_dot)dirstamp
-am_libgnu_a_OBJECTS = areadlink-with-size.$(OBJEXT) argp-ba.$(OBJEXT) \
-       argp-eexst.$(OBJEXT) argp-fmtstream.$(OBJEXT) \
-       argp-fs-xinl.$(OBJEXT) argp-help.$(OBJEXT) \
-       argp-parse.$(OBJEXT) argp-pin.$(OBJEXT) argp-pv.$(OBJEXT) \
-       argp-pvh.$(OBJEXT) argp-xinl.$(OBJEXT) \
+@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_1 = uniwidth/width.$(OBJEXT)
+am_libgnu_a_OBJECTS = areadlink.$(OBJEXT) areadlinkat.$(OBJEXT) \
+       argp-ba.$(OBJEXT) argp-eexst.$(OBJEXT) \
+       argp-fmtstream.$(OBJEXT) argp-fs-xinl.$(OBJEXT) \
+       argp-help.$(OBJEXT) argp-parse.$(OBJEXT) argp-pin.$(OBJEXT) \
+       argp-pv.$(OBJEXT) argp-pvh.$(OBJEXT) argp-xinl.$(OBJEXT) \
        argp-version-etc.$(OBJEXT) c-ctype.$(OBJEXT) \
-       close-hook.$(OBJEXT) exitfail.$(OBJEXT) file-set.$(OBJEXT) \
-       full-write.$(OBJEXT) getdate.$(OBJEXT) hash-pjw.$(OBJEXT) \
-       hash-triple.$(OBJEXT) localcharset.$(OBJEXT) malloca.$(OBJEXT) \
-       mbchar.$(OBJEXT) mbscasecmp.$(OBJEXT) openat-die.$(OBJEXT) \
-       priv-set.$(OBJEXT) progname.$(OBJEXT) strnlen1.$(OBJEXT) \
-       uniwidth/width.$(OBJEXT) version-etc.$(OBJEXT) \
+       close-hook.$(OBJEXT) exitfail.$(OBJEXT) fdutimensat.$(OBJEXT) \
+       full-write.$(OBJEXT) imaxtostr.$(OBJEXT) inttostr.$(OBJEXT) \
+       offtostr.$(OBJEXT) uinttostr.$(OBJEXT) umaxtostr.$(OBJEXT) \
+       localcharset.$(OBJEXT) malloca.$(OBJEXT) mbchar.$(OBJEXT) \
+       mbscasecmp.$(OBJEXT) openat-die.$(OBJEXT) \
+       parse-datetime.$(OBJEXT) priv-set.$(OBJEXT) progname.$(OBJEXT) \
+       strnlen1.$(OBJEXT) $(am__objects_1) version-etc.$(OBJEXT) \
        version-etc-fsf.$(OBJEXT) xalloc-die.$(OBJEXT) \
        xstrndup.$(OBJEXT) xstrtoumax.$(OBJEXT) xvasprintf.$(OBJEXT) \
        xasprintf.$(OBJEXT)
@@ -206,7 +231,7 @@ AM_V_GEN = $(am__v_GEN_$(V))
 am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
-DIST_SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
+DIST_SOURCES = $(am__libgnu_a_SOURCES_DIST) $(EXTRA_libgnu_a_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
        install-dvi-recursive install-exec-recursive \
@@ -255,6 +280,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -352,6 +378,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -407,10 +434,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -435,6 +464,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -451,11 +481,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -473,20 +508,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -494,7 +532,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -510,12 +547,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -527,25 +567,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -555,18 +599,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -583,6 +630,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -599,8 +647,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -615,6 +666,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -633,6 +685,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -699,21 +753,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -736,6 +793,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -743,6 +801,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -768,7 +827,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -780,17 +841,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -860,6 +925,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -893,68 +959,60 @@ SUBDIRS =
 noinst_HEADERS = 
 noinst_LIBRARIES = libgnu.a
 noinst_LTLIBRARIES = 
-
-# This is for those projects which use "gettextize --intl" to put a source-code
-# copy of libintl into their package. In such projects, every Makefile.am needs
-# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
-# For the Makefile.ams in other directories it is the maintainer's
-# responsibility; for the one from gnulib we do it here.
-# This option has no effect when the user disables NLS (because then the intl
-# directory contains no libintl.h file) or when the project does not use
-# "gettextize --intl".
-#AM_CPPFLAGS += -I$(top_builddir)/intl
-EXTRA_DIST = alloca.c alloca.in.h areadlink.h \
+EXTRA_DIST = alloca.c alloca.in.h areadlink.h areadlink.h \
        $(top_srcdir)/build-aux/arg-nonnull.h argmatch.c argmatch.h \
        backupfile.c backupfile.h btowc.c \
-       $(top_srcdir)/build-aux/c++defs.h canonicalize.c \
-       canonicalize.h chdir-long.c chdir-long.h chown.c fchown-stub.c \
-       close.c close-hook.h close-stream.c close-stream.h closeout.c \
-       closeout.h dirent.in.h dirent--.h dirent-safer.h \
+       $(top_srcdir)/build-aux/c++defs.h canonicalize-lgpl.c \
+       chdir-long.c chdir-long.h chown.c fchown-stub.c cloexec.c \
+       cloexec.h close.c close-hook.h close-stream.c close-stream.h \
+       closeout.c closeout.h dirent.in.h dirent--.h dirent-safer.h \
        opendir-safer.c dirfd.c basename.c dirname.c stripslash.c \
        basename-lgpl.c dirname-lgpl.c dirname.h stripslash.c dup2.c \
        errno.in.h error.c error.h exclude.c exclude.h exitfail.h \
        fchdir.c fclose.c fcntl.c fcntl.in.h fdopendir.c openat-priv.h \
-       openat-proc.c file-set.h fileblocks.c float.in.h fnmatch.c \
-       fnmatch.in.h fnmatch_loop.c fpending.c fpending.h fseeko.c \
-       stdio-impl.h ftruncate.c getcwd.c getdate.c getdate.h \
-       getdelim.c getdtablesize.c getline.c getopt.c getopt.in.h \
-       getopt1.c getopt_int.h getpagesize.c \
+       openat-proc.c utimens.h fileblocks.c filenamecat-lgpl.c \
+       filenamecat.h float.in.h fnmatch.c fnmatch.in.h fnmatch_loop.c \
+       fpending.c fpending.h fseeko.c stdio-impl.h futimens.c \
+       getcwd.c getdelim.c getdtablesize.c getline.c getopt.c \
+       getopt.in.h getopt1.c getopt_int.h getpagesize.c \
        $(top_srcdir)/build-aux/config.rpath gettime.c gettimeofday.c \
        $(top_srcdir)/build-aux/gitlog-to-changelog hash.c hash.h \
-       hash-triple.h $(top_srcdir)/build-aux/config.rpath human.c \
-       human.h intprops.h imaxtostr.c inttostr.c inttostr.h \
-       offtostr.c uinttostr.c umaxtostr.c inttypes.in.h langinfo.in.h \
-       lchown.c config.charset ref-add.sin ref-del.sin lseek.c \
-       lstat.c malloc.c malloc.c malloca.h malloca.valgrind mbchar.h \
-       mbrtowc.c mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memchr.c \
-       memchr.valgrind mempcpy.c memrchr.c mkdir.c mkdtemp.c \
-       mktime-internal.h mktime.c modechange.c modechange.h \
-       nl_langinfo.c obstack.c obstack.h open.c at-func.c fchmodat.c \
-       fchownat.c fstatat.c mkdirat.c openat-priv.h openat-proc.c \
-       openat.c openat.h unlinkat.c pathmax.h priv-set.h quote.c \
+       $(top_srcdir)/build-aux/config.rpath human.c human.h \
+       intprops.h anytostr.c inttostr.h inttypes.in.h langinfo.in.h \
+       lchown.c link.c at-func2.c linkat.c config.charset ref-add.sin \
+       ref-del.sin lseek.c lstat.c malloc.c malloc.c malloca.h \
+       malloca.valgrind mbchar.h mbrtowc.c mbsinit.c \
+       mbsrtowcs-state.c mbsrtowcs.c memchr.c memchr.valgrind \
+       mempcpy.c memrchr.c mkdir.c mkdtemp.c mkfifo.c mkfifoat.c \
+       mknodat.c mknod.c mktime-internal.h mktime.c modechange.c \
+       modechange.h nl_langinfo.c obstack.c obstack.h open.c \
+       at-func.c fchmodat.c fchownat.c fstatat.c mkdirat.c \
+       openat-priv.h openat-proc.c openat.c openat.h unlinkat.c \
+       parse-datetime.c parse-datetime.h pathmax.h priv-set.h quote.c \
        quote.h quotearg.c quotearg.h rawmemchr.c rawmemchr.valgrind \
-       readlink.c realloc.c regcomp.c regex.c regex.h \
-       regex_internal.c regex_internal.h regexec.c rmdir.c rpmatch.c \
-       safe-read.c safe-read.h safe-write.c safe-write.h same.c \
-       same.h same-inode.h save-cwd.c save-cwd.h savedir.c savedir.h \
-       setenv.c sleep.c snprintf.c stat.c stat-macros.h stat-time.h \
-       stdarg.in.h stdbool.in.h stddef.in.h stdint.in.h stdio-write.c \
-       stdio.in.h stdlib.in.h stpcpy.c strcasecmp.c strncasecmp.c \
-       strchrnul.c strchrnul.valgrind strdup.c streq.h strerror.c \
-       string.in.h strings.in.h strndup.c strnlen.c strtoimax.c \
-       strtol.c strtoll.c strtoul.c strtoull.c strtoumax.c \
-       sys_stat.in.h sys_time.in.h sysexits.in.h tempname.c \
-       tempname.h time.in.h time_r.c timespec.h unistd.in.h \
-       dup-safer.c fd-safer.c pipe-safer.c unistd--.h unistd-safer.h \
-       unitypes.h localcharset.h uniwidth.h uniwidth/cjk.h unlink.c \
-       unlinkdir.c unlinkdir.h unlocked-io.h unsetenv.c utimens.c \
-       utimens.h asnprintf.c float+.h printf-args.c printf-args.h \
-       printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h \
-       asprintf.c vasprintf.c vsnprintf.c \
-       $(top_srcdir)/build-aux/warn-on-use.h wchar.in.h wcrtomb.c \
-       wctype.in.h wcwidth.c write.c xalloc.h xmalloc.c xgetcwd.c \
-       xgetcwd.h xstrtol-error.c xstrtol.c xstrtol.h xstrtoul.c \
-       xalloc.h
+       readlink.c readlinkat.c realloc.c regcomp.c regex.c regex.h \
+       regex_internal.c regex_internal.h regexec.c rename.c \
+       at-func2.c renameat.c rmdir.c rpmatch.c safe-read.c \
+       safe-read.h safe-write.c safe-write.h same-inode.h save-cwd.c \
+       save-cwd.h savedir.c savedir.h setenv.c sleep.c snprintf.c \
+       stat.c stat-macros.h stat-time.h stdarg.in.h stdbool.in.h \
+       stddef.in.h stdint.in.h stdio-write.c stdio.in.h stdlib.in.h \
+       stpcpy.c strcasecmp.c strncasecmp.c strchrnul.c \
+       strchrnul.valgrind strdup.c streq.h strerror.c string.in.h \
+       strings.in.h strndup.c strnlen.c strtoimax.c strtol.c \
+       strtoll.c strtoul.c strtoull.c strtoumax.c symlink.c \
+       symlinkat.c sys_stat.in.h sys_time.in.h sysexits.in.h \
+       tempname.c tempname.h time.in.h time_r.c timespec.h \
+       unistd.in.h dup-safer.c fd-safer.c pipe-safer.c unistd--.h \
+       unistd-safer.h unitypes.in.h localcharset.h uniwidth.in.h \
+       uniwidth/cjk.h unlink.c unlinkdir.c unlinkdir.h unlocked-io.h \
+       unsetenv.c utimens.c utimens.h utimensat.c asnprintf.c \
+       float+.h printf-args.c printf-args.h printf-parse.c \
+       printf-parse.h vasnprintf.c vasnprintf.h asprintf.c \
+       vasprintf.c vsnprintf.c $(top_srcdir)/build-aux/warn-on-use.h \
+       wchar.in.h wcrtomb.c wctype.in.h wcwidth.c write.c xalloc.h \
+       xmalloc.c xgetcwd.c xgetcwd.h xstrtol-error.c xstrtol.c \
+       xstrtol.h xstrtoul.c xalloc.h
 
 # The BUILT_SOURCES created by this Makefile snippet are not used via #include
 # statements but through direct file reference. Therefore this snippet must be
@@ -966,71 +1024,85 @@ EXTRA_DIST = alloca.c alloca.in.h areadlink.h \
 # present in all Makefile.am that need it. This is ensured by the applicability
 # 'all' defined above.
 BUILT_SOURCES = $(ALLOCA_H) arg-nonnull.h c++defs.h configmake.h \
-       dirent.h $(ERRNO_H) fcntl.h $(FLOAT_H) $(FNMATCH_H) getdate.c \
-       $(GETOPT_H) inttypes.h langinfo.h $(STDARG_H) $(STDBOOL_H) \
-       $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h strings.h \
-       sys/stat.h sys/time.h $(SYSEXITS_H) time.h unistd.h \
+       dirent.h $(ERRNO_H) fcntl.h $(FLOAT_H) $(FNMATCH_H) \
+       $(GETOPT_H) inttypes.h langinfo.h parse-datetime.c $(STDARG_H) \
+       $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h stdlib.h string.h \
+       strings.h sys/stat.h sys/time.h $(SYSEXITS_H) time.h unistd.h \
+       $(LIBUNISTRING_UNITYPES_H) $(LIBUNISTRING_UNIWIDTH_H) \
        warn-on-use.h wchar.h wctype.h
 SUFFIXES = .sed .sin
 MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arg-nonnull.h \
        arg-nonnull.h-t c++defs.h c++defs.h-t dirent.h dirent.h-t \
        errno.h errno.h-t fcntl.h fcntl.h-t float.h float.h-t \
        fnmatch.h fnmatch.h-t getopt.h getopt.h-t inttypes.h \
-       inttypes.h-t langinfo.h langinfo.h-t stdarg.h stdarg.h-t \
-       stdbool.h stdbool.h-t stddef.h stddef.h-t stdint.h stdint.h-t \
-       stdio.h stdio.h-t stdlib.h stdlib.h-t string.h string.h-t \
-       strings.h strings.h-t sys/stat.h sys/stat.h-t sys/time.h \
-       sys/time.h-t sysexits.h sysexits.h-t time.h time.h-t unistd.h \
-       unistd.h-t warn-on-use.h warn-on-use.h-t wchar.h wchar.h-t \
-       wctype.h wctype.h-t
+       inttypes.h-t langinfo.h langinfo.h-t parse-datetime.c-t \
+       stdarg.h stdarg.h-t stdbool.h stdbool.h-t stddef.h stddef.h-t \
+       stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \
+       string.h string.h-t strings.h strings.h-t sys/stat.h \
+       sys/stat.h-t sys/time.h sys/time.h-t sysexits.h sysexits.h-t \
+       time.h time.h-t unistd.h unistd.h-t unitypes.h unitypes.h-t \
+       uniwidth.h uniwidth.h-t warn-on-use.h warn-on-use.h-t wchar.h \
+       wchar.h-t wctype.h wctype.h-t
 MOSTLYCLEANDIRS = sys
 CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
        ref-del.sed
 DISTCLEANFILES = 
-MAINTAINERCLEANFILES = getdate.c
-AM_CPPFLAGS = 
+MAINTAINERCLEANFILES = parse-datetime.c
+
+# This is for those projects which use "gettextize --intl" to put a source-code
+# copy of libintl into their package. In such projects, every Makefile.am needs
+# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
+# For the Makefile.ams in other directories it is the maintainer's
+# responsibility; for the one from gnulib we do it here.
+# This option has no effect when the user disables NLS (because then the intl
+# directory contains no libintl.h file) or when the project does not use
+# "gettextize --intl".
+AM_CPPFLAGS = -I$(top_builddir)/intl
 AM_CFLAGS = 
-libgnu_a_SOURCES = areadlink-with-size.c argp.h argp-ba.c argp-eexst.c \
-       argp-fmtstream.c argp-fmtstream.h argp-fs-xinl.c argp-help.c \
-       argp-namefrob.h argp-parse.c argp-pin.c argp-pv.c argp-pvh.c \
-       argp-xinl.c argp-version-etc.h argp-version-etc.c bitrotate.h \
-       c-ctype.h c-ctype.c close-hook.c exitfail.c file-set.c \
-       full-write.h full-write.c getdate.y gettext.h hash-pjw.h \
-       hash-pjw.c hash-triple.c localcharset.h localcharset.c \
-       malloca.c mbchar.c mbscasecmp.c mbuiter.h openat-die.c \
-       priv-set.c progname.h progname.c size_max.h strnlen1.h \
-       strnlen1.c uniwidth/width.c verify.h version-etc.h \
-       version-etc.c version-etc-fsf.c xalloc-die.c xsize.h \
-       xstrndup.h xstrndup.c xstrtoumax.c xvasprintf.h xvasprintf.c \
-       xasprintf.c
+libgnu_a_SOURCES = areadlink.c areadlinkat.c argp.h argp-ba.c \
+       argp-eexst.c argp-fmtstream.c argp-fmtstream.h argp-fs-xinl.c \
+       argp-help.c argp-namefrob.h argp-parse.c argp-pin.c argp-pv.c \
+       argp-pvh.c argp-xinl.c argp-version-etc.h argp-version-etc.c \
+       bitrotate.h c-ctype.h c-ctype.c close-hook.c exitfail.c \
+       fdutimensat.c full-write.h full-write.c gettext.h imaxtostr.c \
+       inttostr.c offtostr.c uinttostr.c umaxtostr.c localcharset.h \
+       localcharset.c malloca.c mbchar.c mbscasecmp.c mbuiter.h \
+       openat-die.c parse-datetime.y priv-set.c progname.h progname.c \
+       size_max.h strnlen1.h strnlen1.c $(am__append_1) verify.h \
+       version-etc.h version-etc.c version-etc-fsf.c xalloc-die.c \
+       xsize.h xstrndup.h xstrndup.c xstrtoumax.c xvasprintf.h \
+       xvasprintf.c xasprintf.c
 libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
 libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
 EXTRA_libgnu_a_SOURCES = alloca.c argmatch.c backupfile.c btowc.c \
-       canonicalize.c chdir-long.c chown.c fchown-stub.c close.c \
-       close-stream.c closeout.c opendir-safer.c dirfd.c basename.c \
-       dirname.c stripslash.c basename-lgpl.c dirname-lgpl.c \
-       stripslash.c dup2.c error.c exclude.c fchdir.c fclose.c \
-       fcntl.c fdopendir.c openat-proc.c fileblocks.c fnmatch.c \
-       fnmatch_loop.c fpending.c fseeko.c ftruncate.c getcwd.c \
-       getdelim.c getdtablesize.c getline.c getopt.c getopt1.c \
-       getpagesize.c gettime.c gettimeofday.c hash.c human.c \
-       imaxtostr.c inttostr.c offtostr.c uinttostr.c umaxtostr.c \
-       lchown.c lseek.c lstat.c malloc.c malloc.c mbrtowc.c mbsinit.c \
-       mbsrtowcs-state.c mbsrtowcs.c memchr.c mempcpy.c memrchr.c \
-       mkdir.c mkdtemp.c mktime.c modechange.c nl_langinfo.c \
+       canonicalize-lgpl.c chdir-long.c chown.c fchown-stub.c \
+       cloexec.c close.c close-stream.c closeout.c opendir-safer.c \
+       dirfd.c basename.c dirname.c stripslash.c basename-lgpl.c \
+       dirname-lgpl.c stripslash.c dup2.c error.c exclude.c fchdir.c \
+       fclose.c fcntl.c fdopendir.c openat-proc.c fileblocks.c \
+       filenamecat-lgpl.c fnmatch.c fnmatch_loop.c fpending.c \
+       fseeko.c futimens.c getcwd.c getdelim.c getdtablesize.c \
+       getline.c getopt.c getopt1.c getpagesize.c gettime.c \
+       gettimeofday.c hash.c human.c anytostr.c lchown.c link.c \
+       at-func2.c linkat.c lseek.c lstat.c malloc.c malloc.c \
+       mbrtowc.c mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memchr.c \
+       mempcpy.c memrchr.c mkdir.c mkdtemp.c mkfifo.c mkfifoat.c \
+       mknodat.c mknod.c mktime.c modechange.c nl_langinfo.c \
        obstack.c open.c at-func.c fchmodat.c fchownat.c fstatat.c \
        mkdirat.c openat-proc.c openat.c unlinkat.c quote.c quotearg.c \
-       rawmemchr.c readlink.c realloc.c regcomp.c regex.c \
-       regex_internal.c regexec.c rmdir.c rpmatch.c safe-read.c \
-       safe-write.c same.c save-cwd.c savedir.c setenv.c sleep.c \
-       snprintf.c stat.c stdio-write.c stpcpy.c strcasecmp.c \
-       strncasecmp.c strchrnul.c strdup.c strerror.c strndup.c \
-       strnlen.c strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
-       strtoumax.c tempname.c time_r.c dup-safer.c fd-safer.c \
+       rawmemchr.c readlink.c readlinkat.c realloc.c regcomp.c \
+       regex.c regex_internal.c regexec.c rename.c at-func2.c \
+       renameat.c rmdir.c rpmatch.c safe-read.c safe-write.c \
+       save-cwd.c savedir.c setenv.c sleep.c snprintf.c stat.c \
+       stdio-write.c stpcpy.c strcasecmp.c strncasecmp.c strchrnul.c \
+       strdup.c strerror.c strndup.c strnlen.c strtoimax.c strtol.c \
+       strtoll.c strtoul.c strtoull.c strtoumax.c symlink.c \
+       symlinkat.c tempname.c time_r.c dup-safer.c fd-safer.c \
        pipe-safer.c unlink.c unlinkdir.c unsetenv.c utimens.c \
-       asnprintf.c printf-args.c printf-parse.c vasnprintf.c \
-       asprintf.c vasprintf.c vsnprintf.c wcrtomb.c wcwidth.c write.c \
-       xmalloc.c xgetcwd.c xstrtol-error.c xstrtol.c xstrtoul.c
+       utimensat.c asnprintf.c printf-args.c printf-parse.c \
+       vasnprintf.c asprintf.c vasprintf.c vsnprintf.c wcrtomb.c \
+       wcwidth.c write.c xmalloc.c xgetcwd.c xstrtol-error.c \
+       xstrtol.c xstrtoul.c
 ARG_NONNULL_H = arg-nonnull.h
 CXXDEFS_H = c++defs.h
 charset_alias = $(DESTDIR)$(libdir)/charset.alias
@@ -1105,7 +1177,9 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/areadlink-with-size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/anytostr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/areadlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/areadlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argmatch.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argp-ba.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argp-eexst.Po@am__quote@
@@ -1121,14 +1195,16 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asnprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/at-func.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/at-func2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backupfile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btowc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-ctype.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonicalize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonicalize-lgpl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chdir-long.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cloexec.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close-hook.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close-stream.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@
@@ -1149,17 +1225,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-safer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdopendir.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-set.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdutimensat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileblocks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filenamecat-lgpl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch_loop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpending.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fseeko.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatat.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftruncate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futimens.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdelim.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdtablesize.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@
@@ -1168,13 +1244,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpagesize.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-triple.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/human.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imaxtostr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inttostr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
@@ -1192,6 +1268,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdirat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdtemp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkfifo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkfifoat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mknod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mknodat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modechange.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nl_langinfo.Po@am__quote@
@@ -1202,6 +1282,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-proc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opendir-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse-datetime.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe-safer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-args.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-parse.Po@am__quote@
@@ -1211,16 +1292,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawmemchr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regcomp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex_internal.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regexec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renameat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpmatch.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-read.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-write.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/same.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savedir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setenv.Po@am__quote@
@@ -1244,6 +1327,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoul.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoull.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoumax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tempname.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uinttostr.Po@am__quote@
@@ -1253,6 +1338,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkdir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unsetenv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimens.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimensat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasnprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc-fsf.Po@am__quote@
@@ -1524,7 +1610,7 @@ distclean-generic:
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
-       -rm -f getdate.c
+       -rm -f parse-datetime.c
        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-recursive
@@ -1704,16 +1790,19 @@ dirent.h: dirent.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \
              -e 's|@''GNULIB_DIRFD''@|$(GNULIB_DIRFD)|g' \
              -e 's|@''GNULIB_FDOPENDIR''@|$(GNULIB_FDOPENDIR)|g' \
              -e 's|@''GNULIB_SCANDIR''@|$(GNULIB_SCANDIR)|g' \
              -e 's|@''GNULIB_ALPHASORT''@|$(GNULIB_ALPHASORT)|g' \
              -e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \
+             -e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \
              -e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \
              -e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \
              -e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \
              -e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \
+             -e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \
              -e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|g' \
              -e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -1730,6 +1819,7 @@ errno.h: errno.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
              -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
              -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
@@ -1748,6 +1838,7 @@ fcntl.h: fcntl.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
              -e 's|@''GNULIB_FCNTL''@|$(GNULIB_FCNTL)|g' \
              -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \
@@ -1771,6 +1862,7 @@ float.h: float.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \
              < $(srcdir)/float.in.h; \
        } > $@-t && \
@@ -1794,6 +1886,7 @@ getopt.h: getopt.in.h $(ARG_NONNULL_H)
          sed -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              < $(srcdir)/getopt.in.h; \
@@ -1808,6 +1901,7 @@ inttypes.h: inttypes.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H)
          sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
              -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
              -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
@@ -1840,10 +1934,13 @@ langinfo.h: langinfo.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
          sed -e 's|@''HAVE_LANGINFO_H''@|$(HAVE_LANGINFO_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
              -e 's|@''GNULIB_NL_LANGINFO''@|$(GNULIB_NL_LANGINFO)|g' \
              -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
+             -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
              -e 's|@''HAVE_LANGINFO_ERA''@|$(HAVE_LANGINFO_ERA)|g' \
+             -e 's|@''HAVE_LANGINFO_YESEXPR''@|$(HAVE_LANGINFO_YESEXPR)|g' \
              -e 's|@''HAVE_NL_LANGINFO''@|$(HAVE_NL_LANGINFO)|g' \
              -e 's|@''REPLACE_NL_LANGINFO''@|$(REPLACE_NL_LANGINFO)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -1911,6 +2008,18 @@ charset.alias: config.charset
        sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
        mv t-$@ $@
 
+# This rule overrides the Automake generated .y.c rule, to ensure that the
+# parse-datetime.c file gets generated in the source directory, not in the
+# build directory.
+parse-datetime.c: parse-datetime.y
+       $(AM_V_GEN)$(SHELL) $(YLWRAP) $(srcdir)/parse-datetime.y \
+                                     y.tab.c parse-datetime.c \
+                                     y.tab.h parse-datetime.h \
+                                     y.output parse-datetime.output \
+                                     -- $(YACC) $(YFLAGS) $(AM_YFLAGS) && \
+       mv parse-datetime.c parse-datetime.c-t && \
+       mv parse-datetime.c-t $(srcdir)/parse-datetime.c
+
 # We need the following in order to create <stdarg.h> when the system
 # doesn't have one that works with the given compiler.
 stdarg.h: stdarg.in.h
@@ -1918,6 +2027,7 @@ stdarg.h: stdarg.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
              < $(srcdir)/stdarg.in.h; \
        } > $@-t && \
@@ -1939,6 +2049,7 @@ stddef.h: stddef.in.h
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
              -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
              -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
@@ -1954,6 +2065,7 @@ stdint.h: stdint.in.h
          sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
              -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
              -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
@@ -1986,6 +2098,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
              -e 's|@''GNULIB_DPRINTF''@|$(GNULIB_DPRINTF)|g' \
              -e 's|@''GNULIB_FCLOSE''@|$(GNULIB_FCLOSE)|g' \
@@ -2019,6 +2132,7 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
              -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
              -e 's|@''GNULIB_STDIO_H_SIGPIPE''@|$(GNULIB_STDIO_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_TMPFILE''@|$(GNULIB_TMPFILE)|g' \
              -e 's|@''GNULIB_VASPRINTF''@|$(GNULIB_VASPRINTF)|g' \
              -e 's|@''GNULIB_VDPRINTF''@|$(GNULIB_VDPRINTF)|g' \
              -e 's|@''GNULIB_VFPRINTF''@|$(GNULIB_VFPRINTF)|g' \
@@ -2035,6 +2149,8 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
              -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
              -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+             -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+             -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
              -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
              -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
              -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
@@ -2061,12 +2177,14 @@ stdio.h: stdio.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
              -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
              -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+             -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
              -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
              -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
              -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
              -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
              -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
              -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+             -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
@@ -2080,18 +2198,22 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+             -e 's|@''GNULIB__EXIT''@|$(GNULIB__EXIT)|g' \
              -e 's|@''GNULIB_ATOLL''@|$(GNULIB_ATOLL)|g' \
              -e 's|@''GNULIB_CALLOC_POSIX''@|$(GNULIB_CALLOC_POSIX)|g' \
              -e 's|@''GNULIB_CANONICALIZE_FILE_NAME''@|$(GNULIB_CANONICALIZE_FILE_NAME)|g' \
              -e 's|@''GNULIB_GETLOADAVG''@|$(GNULIB_GETLOADAVG)|g' \
              -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+             -e 's|@''GNULIB_GRANTPT''@|$(GNULIB_GRANTPT)|g' \
              -e 's|@''GNULIB_MALLOC_POSIX''@|$(GNULIB_MALLOC_POSIX)|g' \
              -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMP''@|$(GNULIB_MKOSTEMP)|g' \
              -e 's|@''GNULIB_MKOSTEMPS''@|$(GNULIB_MKOSTEMPS)|g' \
              -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
              -e 's|@''GNULIB_MKSTEMPS''@|$(GNULIB_MKSTEMPS)|g' \
+             -e 's|@''GNULIB_PTSNAME''@|$(GNULIB_PTSNAME)|g' \
              -e 's|@''GNULIB_PUTENV''@|$(GNULIB_PUTENV)|g' \
              -e 's|@''GNULIB_RANDOM_R''@|$(GNULIB_RANDOM_R)|g' \
              -e 's|@''GNULIB_REALLOC_POSIX''@|$(GNULIB_REALLOC_POSIX)|g' \
@@ -2101,20 +2223,23 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_STRTOD''@|$(GNULIB_STRTOD)|g' \
              -e 's|@''GNULIB_STRTOLL''@|$(GNULIB_STRTOLL)|g' \
              -e 's|@''GNULIB_STRTOULL''@|$(GNULIB_STRTOULL)|g' \
+             -e 's|@''GNULIB_SYSTEM_POSIX''@|$(GNULIB_SYSTEM_POSIX)|g' \
+             -e 's|@''GNULIB_UNLOCKPT''@|$(GNULIB_UNLOCKPT)|g' \
              -e 's|@''GNULIB_UNSETENV''@|$(GNULIB_UNSETENV)|g' \
+             -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
              -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
-             -e 's|@''HAVE_CALLOC_POSIX''@|$(HAVE_CALLOC_POSIX)|g' \
              -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
              -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
              -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
-             -e 's|@''HAVE_MALLOC_POSIX''@|$(HAVE_MALLOC_POSIX)|g' \
+             -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
              -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
              -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
              -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
+             -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
              -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+             -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
              -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
              -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
-             -e 's|@''HAVE_REALLOC_POSIX''@|$(HAVE_REALLOC_POSIX)|g' \
              -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
              -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
              -e 's|@''HAVE_SETENV''@|$(HAVE_SETENV)|g' \
@@ -2123,10 +2248,14 @@ stdlib.h: stdlib.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
              -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
              -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+             -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
              -e 's|@''HAVE_UNSETENV''@|$(HAVE_UNSETENV)|g' \
+             -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
              -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+             -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
              -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
              -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+             -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
              -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
              -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
              -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
@@ -2145,6 +2274,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
              -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
              -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
@@ -2169,6 +2299,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
              -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
              -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNCAT''@|$(GNULIB_STRNCAT)|g' \
              -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
              -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
              -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
@@ -2181,6 +2312,7 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
              < $(srcdir)/string.in.h | \
          sed -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+             -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
              -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
              -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
              -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
@@ -2195,16 +2327,18 @@ string.h: string.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
              -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
              -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
-             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
              -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
              -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
              -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
              -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
              -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
              -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
              -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
              -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
              -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+             -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
              -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
              -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
              -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
@@ -2222,6 +2356,7 @@ strings.h: strings.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
              -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
              -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
@@ -2239,6 +2374,7 @@ sys/stat.h: sys_stat.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
              -e 's|@''GNULIB_FCHMODAT''@|$(GNULIB_FCHMODAT)|g' \
              -e 's|@''GNULIB_FSTATAT''@|$(GNULIB_FSTATAT)|g' \
@@ -2288,6 +2424,7 @@ sys/time.h: sys_time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
          sed -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \
              -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \
              -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \
@@ -2308,6 +2445,7 @@ sysexits.h: sysexits.in.h
          sed -e 's|@''HAVE_SYSEXITS_H''@|$(HAVE_SYSEXITS_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_SYSEXITS_H''@|$(NEXT_SYSEXITS_H)|g' \
              < $(srcdir)/sysexits.in.h; \
        } > $@-t && \
@@ -2320,16 +2458,22 @@ time.h: time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
              -e 's|@''GNULIB_MKTIME''@|$(GNULIB_MKTIME)|g' \
              -e 's|@''GNULIB_NANOSLEEP''@|$(GNULIB_NANOSLEEP)|g' \
              -e 's|@''GNULIB_STRPTIME''@|$(GNULIB_STRPTIME)|g' \
              -e 's|@''GNULIB_TIMEGM''@|$(GNULIB_TIMEGM)|g' \
+             -e 's|@''GNULIB_TIME_R''@|$(GNULIB_TIME_R)|g' \
+             -e 's|@''HAVE_LOCALTIME_R''@|$(HAVE_LOCALTIME_R)|g' \
+             -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+             -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+             -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \
              -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
              -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
              -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-             -e 's|@''REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
              -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+             -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
              -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
              -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -2347,6 +2491,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
          sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
              -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
              -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
@@ -2374,12 +2519,14 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
              -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
              -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
+             -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
              -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
              -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
              -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
              -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
              -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
              -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
+             -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
              -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
              -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
              -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
@@ -2392,6 +2539,7 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
              -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
              -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+             -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
              -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
              -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
              -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
@@ -2401,28 +2549,30 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
              -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
              -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
-             -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
              -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
              -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
              -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
              -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
              -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+             -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
              -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
              -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
              -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
              -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
              -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+             -e 's|@''HAVE_TTYNAME_R''@|$(HAVE_TTYNAME_R)|g' \
              -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
              -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
              -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
              -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
              -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
              -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
              -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
              -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
              -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
              -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
-             -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
              -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
              -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
              -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
@@ -2432,10 +2582,12 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
              -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
              -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+             -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
              -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
              -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
              -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
              -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+             -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
              -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
              -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
              -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
@@ -2447,6 +2599,20 @@ unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
        } > $@-t && \
        mv $@-t $@
+
+unitypes.h: unitypes.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/unitypes.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
+
+uniwidth.h: uniwidth.in.h
+       $(AM_V_GEN)rm -f $@-t $@ && \
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/uniwidth.in.h; \
+       } > $@-t && \
+       mv -f $@-t $@
 # The warn-on-use.h that gets inserted into generated .h files is the same as
 # build-aux/warn-on-use.h, except that it has the copyright header cut off.
 warn-on-use.h: $(top_srcdir)/build-aux/warn-on-use.h
@@ -2463,6 +2629,7 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
        { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
          sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
              -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
              -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
@@ -2515,9 +2682,12 @@ wctype.h: wctype.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
          sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
              -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
              -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
              -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+             -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
              -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
              -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+             -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
              -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
              -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
              -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
diff --git a/gnu/anytostr.c b/gnu/anytostr.c
new file mode 100644 (file)
index 0000000..902e7a4
--- /dev/null
@@ -0,0 +1,56 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* anytostr.c -- convert integers to printable strings
+
+   Copyright (C) 2001, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert */
+
+#include <config.h>
+
+#include "inttostr.h"
+#include "verify.h"
+
+/* Convert I to a printable string in BUF, which must be at least
+   INT_BUFSIZE_BOUND (INTTYPE) bytes long.  Return the address of the
+   printable string, which need not start at BUF.  */
+
+char * __attribute_warn_unused_result__
+anytostr (inttype i, char *buf)
+{
+  verify (TYPE_SIGNED (inttype) == inttype_is_signed);
+  char *p = buf + INT_STRLEN_BOUND (inttype);
+  *p = 0;
+
+#if inttype_is_signed
+  if (i < 0)
+    {
+      do
+        *--p = '0' - i % 10;
+      while ((i /= 10) != 0);
+
+      *--p = '-';
+    }
+  else
+#endif
+    {
+      do
+        *--p = '0' + i % 10;
+      while ((i /= 10) != 0);
+    }
+
+  return p;
+}
diff --git a/gnu/areadlink-with-size.c b/gnu/areadlink-with-size.c
deleted file mode 100644 (file)
index 8370184..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* readlink wrapper to return the link name in malloc'd storage.
-   Unlike xreadlink and xreadlink_with_size, don't ever call exit.
-
-   Copyright (C) 2001, 2003-2007, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Written by Jim Meyering <jim@meyering.net>  */
-
-#include <config.h>
-
-#include "areadlink.h"
-
-#include <errno.h>
-#include <limits.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#ifndef SSIZE_MAX
-# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
-#endif
-
-/* SYMLINK_MAX is used only for an initial memory-allocation sanity
-   check, so it's OK to guess too small on hosts where there is no
-   arbitrary limit to symbolic link length.  */
-#ifndef SYMLINK_MAX
-# define SYMLINK_MAX 1024
-#endif
-
-#define MAXSIZE (SIZE_MAX < SSIZE_MAX ? SIZE_MAX : SSIZE_MAX)
-
-/* Call readlink to get the symbolic link value of FILE.
-   SIZE is a hint as to how long the link is expected to be;
-   typically it is taken from st_size.  It need not be correct.
-   Return a pointer to that NUL-terminated string in malloc'd storage.
-   If readlink fails, malloc fails, or if the link value is longer
-   than SSIZE_MAX, return NULL (caller may use errno to diagnose).  */
-
-char *
-areadlink_with_size (char const *file, size_t size)
-{
-  /* Some buggy file systems report garbage in st_size.  Defend
-     against them by ignoring outlandish st_size values in the initial
-     memory allocation.  */
-  size_t symlink_max = SYMLINK_MAX;
-  size_t INITIAL_LIMIT_BOUND = 8 * 1024;
-  size_t initial_limit = (symlink_max < INITIAL_LIMIT_BOUND
-                          ? symlink_max + 1
-                          : INITIAL_LIMIT_BOUND);
-
-  /* The initial buffer size for the link value.  */
-  size_t buf_size = size < initial_limit ? size + 1 : initial_limit;
-
-  while (1)
-    {
-      ssize_t r;
-      size_t link_length;
-      char *buffer = malloc (buf_size);
-
-      if (buffer == NULL)
-        return NULL;
-      r = readlink (file, buffer, buf_size);
-      link_length = r;
-
-      /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
-         with errno == ERANGE if the buffer is too small.  */
-      if (r < 0 && errno != ERANGE)
-        {
-          int saved_errno = errno;
-          free (buffer);
-          errno = saved_errno;
-          return NULL;
-        }
-
-      if (link_length < buf_size)
-        {
-          buffer[link_length] = 0;
-          return buffer;
-        }
-
-      free (buffer);
-      if (buf_size <= MAXSIZE / 2)
-        buf_size *= 2;
-      else if (buf_size < MAXSIZE)
-        buf_size = MAXSIZE;
-      else
-        {
-          errno = ENOMEM;
-          return NULL;
-        }
-    }
-}
diff --git a/gnu/areadlink.c b/gnu/areadlink.c
new file mode 100644 (file)
index 0000000..f1c5d7d
--- /dev/null
@@ -0,0 +1,133 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* areadlink.c -- readlink wrapper to return the link name in malloc'd storage
+   Unlike xreadlink and xreadlink_with_size, don't ever call exit.
+
+   Copyright (C) 2001, 2003-2007, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering <jim@meyering.net>
+   and Bruno Haible <bruno@clisp.org>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "areadlink.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+/* Use the system functions, not the gnulib overrides in this file.  */
+#undef malloc
+#undef realloc
+
+/* The initial buffer size for the link value.  A power of 2
+   detects arithmetic overflow earlier, but is not required.  */
+enum {
+  INITIAL_BUF_SIZE = 1024
+};
+
+/* Call readlink to get the symbolic link value of FILENAME.
+   Return a pointer to that NUL-terminated string in malloc'd storage.
+   If readlink fails, return NULL and set errno.
+   If realloc fails, or if the link value is longer than SIZE_MAX :-),
+   return NULL and set errno to ENOMEM.  */
+
+char *
+areadlink (char const *filename)
+{
+  /* Allocate the initial buffer on the stack.  This way, in the common
+     case of a symlink of small size, we get away with a single small malloc()
+     instead of a big malloc() followed by a shrinking realloc().  */
+  char initial_buf[INITIAL_BUF_SIZE];
+
+  char *buffer = initial_buf;
+  size_t buf_size = sizeof initial_buf;
+
+  while (1)
+    {
+      /* Attempt to read the link into the current buffer.  */
+      ssize_t link_length = readlink (filename, buffer, buf_size);
+
+      /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
+         with errno == ERANGE if the buffer is too small.  */
+      if (link_length < 0 && errno != ERANGE)
+        {
+          if (buffer != initial_buf)
+            {
+              int saved_errno = errno;
+              free (buffer);
+              errno = saved_errno;
+            }
+          return NULL;
+        }
+
+      if ((size_t) link_length < buf_size)
+        {
+          buffer[link_length++] = '\0';
+
+          /* Return it in a chunk of memory as small as possible.  */
+          if (buffer == initial_buf)
+            {
+              buffer = (char *) malloc (link_length);
+              if (buffer == NULL)
+                {
+                  /* It's easier to set errno to ENOMEM than to rely on the
+                     'malloc-posix' gnulib module.  */
+                  errno = ENOMEM;
+                  return NULL;
+                }
+              memcpy (buffer, initial_buf, link_length);
+            }
+          else
+            {
+              /* Shrink buffer before returning it.  */
+              if ((size_t) link_length < buf_size)
+                {
+                  char *smaller_buffer = (char *) realloc (buffer, link_length);
+
+                  if (smaller_buffer != NULL)
+                    buffer = smaller_buffer;
+                }
+            }
+          return buffer;
+        }
+
+      if (buffer != initial_buf)
+        free (buffer);
+      buf_size *= 2;
+      if (SSIZE_MAX < buf_size || (SIZE_MAX / 2 < SSIZE_MAX && buf_size == 0))
+        {
+          errno = ENOMEM;
+          return NULL;
+        }
+      buffer = (char *) malloc (buf_size);
+      if (buffer == NULL)
+        {
+          /* It's easier to set errno to ENOMEM than to rely on the
+             'malloc-posix' gnulib module.  */
+          errno = ENOMEM;
+          return NULL;
+        }
+    }
+}
diff --git a/gnu/areadlinkat.c b/gnu/areadlinkat.c
new file mode 100644 (file)
index 0000000..47fd1ba
--- /dev/null
@@ -0,0 +1,147 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* areadlinkat.c -- readlinkat wrapper to return malloc'd link name
+   Unlike xreadlinkat, only call exit on failure to change directory.
+
+   Copyright (C) 2001, 2003-2007, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering <jim@meyering.net>,
+   and Bruno Haible <bruno@clisp.org>,
+   and Eric Blake <ebb9@byu.net>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "areadlink.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+#if HAVE_READLINKAT
+
+/* The initial buffer size for the link value.  A power of 2
+   detects arithmetic overflow earlier, but is not required.  */
+enum {
+  INITIAL_BUF_SIZE = 1024
+};
+
+/* Call readlinkat to get the symbolic link value of FILENAME relative to FD.
+   Return a pointer to that NUL-terminated string in malloc'd storage.
+   If readlinkat fails, return NULL and set errno (although failure to
+   change directory will issue a diagnostic and exit).
+   If realloc fails, or if the link value is longer than SIZE_MAX :-),
+   return NULL and set errno to ENOMEM.  */
+
+char *
+areadlinkat (int fd, char const *filename)
+{
+  /* Allocate the initial buffer on the stack.  This way, in the common
+     case of a symlink of small size, we get away with a single small malloc()
+     instead of a big malloc() followed by a shrinking realloc().  */
+  char initial_buf[INITIAL_BUF_SIZE];
+
+  char *buffer = initial_buf;
+  size_t buf_size = sizeof initial_buf;
+
+  while (1)
+    {
+      /* Attempt to read the link into the current buffer.  */
+       ssize_t link_length = readlinkat (fd, filename, buffer, buf_size);
+
+      /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
+         with errno == ERANGE if the buffer is too small.  */
+      if (link_length < 0 && errno != ERANGE)
+        {
+          if (buffer != initial_buf)
+            {
+              int saved_errno = errno;
+              free (buffer);
+              errno = saved_errno;
+            }
+          return NULL;
+        }
+
+      if ((size_t) link_length < buf_size)
+        {
+          buffer[link_length++] = '\0';
+
+          /* Return it in a chunk of memory as small as possible.  */
+          if (buffer == initial_buf)
+            {
+              buffer = (char *) malloc (link_length);
+              if (buffer == NULL)
+                /* errno is ENOMEM.  */
+                return NULL;
+              memcpy (buffer, initial_buf, link_length);
+            }
+          else
+            {
+              /* Shrink buffer before returning it.  */
+              if ((size_t) link_length < buf_size)
+                {
+                  char *smaller_buffer = (char *) realloc (buffer, link_length);
+
+                  if (smaller_buffer != NULL)
+                    buffer = smaller_buffer;
+                }
+            }
+          return buffer;
+        }
+
+      if (buffer != initial_buf)
+        free (buffer);
+      buf_size *= 2;
+      if (SSIZE_MAX < buf_size || (SIZE_MAX / 2 < SSIZE_MAX && buf_size == 0))
+        {
+          errno = ENOMEM;
+          return NULL;
+        }
+      buffer = (char *) malloc (buf_size);
+      if (buffer == NULL)
+        /* errno is ENOMEM.  */
+        return NULL;
+    }
+}
+
+#else /* !HAVE_READLINKAT */
+
+/* It is more efficient to change directories only once and call
+   areadlink, rather than repeatedly call the replacement
+   readlinkat.  */
+
+# define AT_FUNC_NAME areadlinkat
+# define AT_FUNC_F1 areadlink
+# define AT_FUNC_POST_FILE_PARAM_DECLS /* empty */
+# define AT_FUNC_POST_FILE_ARGS        /* empty */
+# define AT_FUNC_RESULT char *
+# define AT_FUNC_FAIL NULL
+# include "at-func.c"
+# undef AT_FUNC_NAME
+# undef AT_FUNC_F1
+# undef AT_FUNC_POST_FILE_PARAM_DECLS
+# undef AT_FUNC_POST_FILE_ARGS
+# undef AT_FUNC_RESULT
+# undef AT_FUNC_FAIL
+
+#endif /* !HAVE_READLINKAT */
index 09bec84683f401d70607d43d08a0f6e688cc609c..ab1262a623c8cff9c853487ee0168d96f89e7153 100644 (file)
@@ -766,7 +766,7 @@ hol_entry_cmp (const struct hol_entry *entry1,
       else
         /* Both entries are in clusters, we can just compare the clusters.  */
         return (rc = hol_cluster_cmp (entry1->cluster, entry2->cluster)) ?
-                rc : HOL_ENTRY_PTRCMP(entry1, entry2);
+               rc : HOL_ENTRY_PTRCMP (entry1, entry2);
     }
   else if (group1 == group2)
     /* The entries are both in the same cluster and group, so compare them
@@ -791,7 +791,7 @@ hol_entry_cmp (const struct hol_entry *entry1,
       else if (!short1 && !short2 && long1 && long2)
         /* Only long options.  */
         return (rc = __strcasecmp (long1, long2)) ?
-                 rc : HOL_ENTRY_PTRCMP(entry1, entry2);
+               rc : HOL_ENTRY_PTRCMP (entry1, entry2);
       else
         /* Compare short/short, long/short, short/long, using the first
            character of long options.  Entries without *any* valid
@@ -807,14 +807,14 @@ hol_entry_cmp (const struct hol_entry *entry1,
           /* Compare ignoring case, except when the options are both the
              same letter, in which case lower-case always comes first.  */
           return lower_cmp ? lower_cmp :
-                    (rc = first2 - first1) ?
-                     rc : HOL_ENTRY_PTRCMP(entry1, entry2);
+                 (rc = first2 - first1) ?
+                 rc : HOL_ENTRY_PTRCMP (entry1, entry2);
         }
     }
   else
     /* Within the same cluster, but not the same group, so just compare
        groups.  */
-    return group_cmp (group1, group2, HOL_ENTRY_PTRCMP(entry1, entry2));
+    return group_cmp (group1, group2, HOL_ENTRY_PTRCMP (entry1, entry2));
 }
 
 /* Version of hol_entry_cmp with correct signature for qsort.  */
index 67d36b9c96477cf21eb8019a52e1102f524719c0..13b15a1a18fcf082fc38b7c5de3c5ec1833184d8 100644 (file)
 #if defined GNULIB_ARGP_DISABLE_DIRNAME
 # define __argp_base_name(arg) arg
 #elif defined GNULIB_ARGP_EXTERN_BASENAME
-extern char *__argp_base_name(const char *arg);
+extern char *__argp_base_name (const char *arg);
 #else
 # include "dirname.h"
 # define __argp_base_name last_component
diff --git a/gnu/at-func2.c b/gnu/at-func2.c
new file mode 100644 (file)
index 0000000..4150117
--- /dev/null
@@ -0,0 +1,284 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Define an at-style functions like linkat or renameat.
+   Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering and Eric Blake */
+
+#include <config.h>
+
+#include "openat-priv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
+#include "filenamecat.h"
+#include "openat.h"
+#include "same-inode.h"
+#include "save-cwd.h"
+
+/* Call FUNC to operate on a pair of files, where FILE1 is relative to FD1,
+   and FILE2 is relative to FD2.  If possible, do it without changing the
+   working directory.  Otherwise, resort to using save_cwd/fchdir,
+   FUNC, restore_cwd (up to two times).  If either the save_cwd or the
+   restore_cwd fails, then give a diagnostic and exit nonzero.  */
+int
+at_func2 (int fd1, char const *file1,
+          int fd2, char const *file2,
+          int (*func) (char const *file1, char const *file2))
+{
+  struct saved_cwd saved_cwd;
+  int saved_errno;
+  int err;
+  char *file1_alt;
+  char *file2_alt;
+  struct stat st1;
+  struct stat st2;
+
+  /* There are 16 possible scenarios, based on whether an fd is
+     AT_FDCWD or real, and whether a file is absolute or relative:
+
+         fd1  file1 fd2  file2  action
+     0   cwd  abs   cwd  abs    direct call
+     1   cwd  abs   cwd  rel    direct call
+     2   cwd  abs   fd   abs    direct call
+     3   cwd  abs   fd   rel    chdir to fd2
+     4   cwd  rel   cwd  abs    direct call
+     5   cwd  rel   cwd  rel    direct call
+     6   cwd  rel   fd   abs    direct call
+     7   cwd  rel   fd   rel    convert file1 to abs, then case 3
+     8   fd   abs   cwd  abs    direct call
+     9   fd   abs   cwd  rel    direct call
+     10  fd   abs   fd   abs    direct call
+     11  fd   abs   fd   rel    chdir to fd2
+     12  fd   rel   cwd  abs    chdir to fd1
+     13  fd   rel   cwd  rel    convert file2 to abs, then case 12
+     14  fd   rel   fd   abs    chdir to fd1
+     15a fd1  rel   fd1  rel    chdir to fd1
+     15b fd1  rel   fd2  rel    chdir to fd1, then case 7
+
+     Try some optimizations to reduce fd to AT_FDCWD, or to at least
+     avoid converting an absolute name or doing a double chdir.  */
+
+  if ((fd1 == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file1))
+      && (fd2 == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file2)))
+    return func (file1, file2); /* Case 0-2, 4-6, 8-10.  */
+
+  /* If /proc/self/fd works, we don't need any stat or chdir.  */
+  {
+    char proc_buf1[OPENAT_BUFFER_SIZE];
+    char *proc_file1 = ((fd1 == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file1))
+                        ? (char *) file1
+                        : openat_proc_name (proc_buf1, fd1, file1));
+    if (proc_file1)
+      {
+        char proc_buf2[OPENAT_BUFFER_SIZE];
+        char *proc_file2 = ((fd2 == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file2))
+                            ? (char *) file2
+                            : openat_proc_name (proc_buf2, fd2, file2));
+        if (proc_file2)
+          {
+            int proc_result = func (proc_file1, proc_file2);
+            int proc_errno = errno;
+            if (proc_file1 != proc_buf1 && proc_file1 != file1)
+              free (proc_file1);
+            if (proc_file2 != proc_buf2 && proc_file2 != file2)
+              free (proc_file2);
+            /* If the syscall succeeds, or if it fails with an unexpected
+               errno value, then return right away.  Otherwise, fall through
+               and resort to using save_cwd/restore_cwd.  */
+            if (0 <= proc_result)
+              return proc_result;
+            if (! EXPECTED_ERRNO (proc_errno))
+              {
+                errno = proc_errno;
+                return proc_result;
+              }
+          }
+        else if (proc_file1 != proc_buf1 && proc_file1 != file1)
+          free (proc_file1);
+      }
+  }
+
+  /* Cases 3, 7, 11-15 remain.  Time to normalize directory fds, if
+     possible.  */
+  if (IS_ABSOLUTE_FILE_NAME (file1))
+    fd1 = AT_FDCWD; /* Case 11 reduced to 3.  */
+  else if (IS_ABSOLUTE_FILE_NAME (file2))
+    fd2 = AT_FDCWD; /* Case 14 reduced to 12.  */
+
+  /* Cases 3, 7, 12, 13, 15 remain.  */
+
+  if (fd1 == AT_FDCWD) /* Cases 3, 7.  */
+    {
+      if (stat (".", &st1) == -1 || fstat (fd2, &st2) == -1)
+        return -1;
+      if (!S_ISDIR (st2.st_mode))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+      if (SAME_INODE (st1, st2)) /* Reduced to cases 1, 5.  */
+        return func (file1, file2);
+    }
+  else if (fd2 == AT_FDCWD) /* Cases 12, 13.  */
+    {
+      if (stat (".", &st2) == -1 || fstat (fd1, &st1) == -1)
+        return -1;
+      if (!S_ISDIR (st1.st_mode))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+      if (SAME_INODE (st1, st2)) /* Reduced to cases 4, 5.  */
+        return func (file1, file2);
+    }
+  else if (fd1 != fd2) /* Case 15b.  */
+    {
+      if (fstat (fd1, &st1) == -1 || fstat (fd2, &st2) == -1)
+        return -1;
+      if (!S_ISDIR (st1.st_mode) || !S_ISDIR (st2.st_mode))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+      if (SAME_INODE (st1, st2)) /* Reduced to case 15a.  */
+        {
+          fd2 = fd1;
+          if (stat (".", &st1) == 0 && SAME_INODE (st1, st2))
+            return func (file1, file2); /* Further reduced to case 5.  */
+        }
+    }
+  else /* Case 15a.  */
+    {
+      if (fstat (fd1, &st1) == -1)
+        return -1;
+      if (!S_ISDIR (st1.st_mode))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+      if (stat (".", &st2) == 0 && SAME_INODE (st1, st2))
+        return func (file1, file2); /* Reduced to case 5.  */
+    }
+
+  /* Cases 3, 7, 12, 13, 15a, 15b remain.  With all reductions in
+     place, it is time to start changing directories.  */
+
+  if (save_cwd (&saved_cwd) != 0)
+    openat_save_fail (errno);
+
+  if (fd1 != AT_FDCWD && fd2 != AT_FDCWD && fd1 != fd2) /* Case 15b.  */
+    {
+      if (fchdir (fd1) != 0)
+        {
+          saved_errno = errno;
+          free_cwd (&saved_cwd);
+          errno = saved_errno;
+          return -1;
+        }
+      fd1 = AT_FDCWD; /* Reduced to case 7.  */
+    }
+
+  /* Cases 3, 7, 12, 13, 15a remain.  Convert one relative name to
+     absolute, if necessary.  */
+
+  file1_alt = (char *) file1;
+  file2_alt = (char *) file2;
+
+  if (fd1 == AT_FDCWD && !IS_ABSOLUTE_FILE_NAME (file1)) /* Case 7.  */
+    {
+      /* It would be nicer to use:
+         file1_alt = file_name_concat (xgetcwd (), file1, NULL);
+         but libraries should not call xalloc_die.  */
+      char *cwd = getcwd (NULL, 0);
+      if (!cwd)
+        {
+          saved_errno = errno;
+          free_cwd (&saved_cwd);
+          errno = saved_errno;
+          return -1;
+        }
+      file1_alt = mfile_name_concat (cwd, file1, NULL);
+      if (!file1_alt)
+        {
+          saved_errno = errno;
+          free (cwd);
+          free_cwd (&saved_cwd);
+          errno = saved_errno;
+          return -1;
+        }
+      free (cwd); /* Reduced to case 3.  */
+    }
+  else if (fd2 == AT_FDCWD && !IS_ABSOLUTE_FILE_NAME (file2)) /* Case 13.  */
+    {
+      char *cwd = getcwd (NULL, 0);
+      if (!cwd)
+        {
+          saved_errno = errno;
+          free_cwd (&saved_cwd);
+          errno = saved_errno;
+          return -1;
+        }
+      file2_alt = mfile_name_concat (cwd, file2, NULL);
+      if (!file2_alt)
+        {
+          saved_errno = errno;
+          free (cwd);
+          free_cwd (&saved_cwd);
+          errno = saved_errno;
+          return -1;
+        }
+      free (cwd); /* Reduced to case 12.  */
+    }
+
+  /* Cases 3, 12, 15a remain.  Change to the correct directory.  */
+  if (fchdir (fd1 == AT_FDCWD ? fd2 : fd1) != 0)
+    {
+      saved_errno = errno;
+      free_cwd (&saved_cwd);
+      if (file1 != file1_alt)
+        free (file1_alt);
+      else if (file2 != file2_alt)
+        free (file2_alt);
+      errno = saved_errno;
+      return -1;
+    }
+
+  /* Finally safe to perform the user's function, then clean up.  */
+
+  err = func (file1_alt, file2_alt);
+  saved_errno = (err < 0 ? errno : 0);
+
+  if (file1 != file1_alt)
+    free (file1_alt);
+  else if (file2 != file2_alt)
+    free (file2_alt);
+
+  if (restore_cwd (&saved_cwd) != 0)
+    openat_restore_fail (errno);
+
+  free_cwd (&saved_cwd);
+
+  if (saved_errno)
+    errno = saved_errno;
+  return err;
+}
+#undef CALL_FUNC
+#undef FUNC_RESULT
index 1ff29eea9fc72cf689aa53102266e64aade4fac7..b40d8e72957c29449351021b939f205f975f06ea 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Convert unibyte character to wide character.
-   Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2008, 2010 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2008.
 
    This program is free software: you can redistribute it and/or modify
@@ -23,6 +23,7 @@
 #include <wchar.h>
 
 #include <stdio.h>
+#include <stdlib.h>
 
 wint_t
 btowc (int c)
diff --git a/gnu/canonicalize-lgpl.c b/gnu/canonicalize-lgpl.c
new file mode 100644 (file)
index 0000000..9c5a12e
--- /dev/null
@@ -0,0 +1,381 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Return the canonical absolute name of a given file.
+   Copyright (C) 1996-2010 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#if !HAVE_CANONICALIZE_FILE_NAME || !FUNC_REALPATH_WORKS || defined _LIBC
+
+/* Don't use __attribute__ __nonnull__ in this compilation unit.  Otherwise gcc
+   optimizes away the name == NULL test below.  */
+#define _GL_ARG_NONNULL(params)
+
+/* Specification.  */
+#include <stdlib.h>
+
+#include <alloca.h>
+#include <string.h>
+#include <unistd.h>
+#include <limits.h>
+#if HAVE_SYS_PARAM_H || defined _LIBC
+# include <sys/param.h>
+#endif
+#include <sys/stat.h>
+#include <errno.h>
+#include <stddef.h>
+
+#ifdef _LIBC
+# include <shlib-compat.h>
+#else
+# define SHLIB_COMPAT(lib, introduced, obsoleted) 0
+# define versioned_symbol(lib, local, symbol, version) extern int dummy
+# define compat_symbol(lib, local, symbol, version)
+# define weak_alias(local, symbol)
+# define __canonicalize_file_name canonicalize_file_name
+# define __realpath realpath
+# include "pathmax.h"
+# include "malloca.h"
+# if HAVE_GETCWD
+#  if IN_RELOCWRAPPER
+    /* When building the relocatable program wrapper, use the system's getcwd
+       function, not the gnulib override, otherwise we would get a link error.
+     */
+#   undef getcwd
+#  endif
+#  ifdef VMS
+    /* We want the directory in Unix syntax, not in VMS syntax.  */
+#   define __getcwd(buf, max) getcwd (buf, max, 0)
+#  else
+#   define __getcwd getcwd
+#  endif
+# else
+#  define __getcwd(buf, max) getwd (buf)
+# endif
+# define __readlink readlink
+# define __set_errno(e) errno = (e)
+/* Use the system functions, not the gnulib overrides in this file.  */
+# undef malloc
+# ifndef MAXSYMLINKS
+#  ifdef SYMLOOP_MAX
+#   define MAXSYMLINKS SYMLOOP_MAX
+#  else
+#   define MAXSYMLINKS 20
+#  endif
+# endif
+#endif
+
+#ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
+#endif
+
+#if !FUNC_REALPATH_WORKS || defined _LIBC
+/* Return the canonical absolute name of file NAME.  A canonical name
+   does not contain any `.', `..' components nor any repeated path
+   separators ('/') or symlinks.  All path components must exist.  If
+   RESOLVED is null, the result is malloc'd; otherwise, if the
+   canonical name is PATH_MAX chars or more, returns null with `errno'
+   set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
+   returns the name in RESOLVED.  If the name cannot be resolved and
+   RESOLVED is non-NULL, it contains the path of the first component
+   that cannot be resolved.  If the path can be resolved, RESOLVED
+   holds the same value as the value returned.  */
+
+char *
+__realpath (const char *name, char *resolved)
+{
+  char *rpath, *dest, *extra_buf = NULL;
+  const char *start, *end, *rpath_limit;
+  long int path_max;
+  int num_links = 0;
+
+  if (name == NULL)
+    {
+      /* As per Single Unix Specification V2 we must return an error if
+         either parameter is a null pointer.  We extend this to allow
+         the RESOLVED parameter to be NULL in case the we are expected to
+         allocate the room for the return value.  */
+      __set_errno (EINVAL);
+      return NULL;
+    }
+
+  if (name[0] == '\0')
+    {
+      /* As per Single Unix Specification V2 we must return an error if
+         the name argument points to an empty string.  */
+      __set_errno (ENOENT);
+      return NULL;
+    }
+
+#ifdef PATH_MAX
+  path_max = PATH_MAX;
+#else
+  path_max = pathconf (name, _PC_PATH_MAX);
+  if (path_max <= 0)
+    path_max = 1024;
+#endif
+
+  if (resolved == NULL)
+    {
+      rpath = malloc (path_max);
+      if (rpath == NULL)
+        {
+          /* It's easier to set errno to ENOMEM than to rely on the
+             'malloc-posix' gnulib module.  */
+          errno = ENOMEM;
+          return NULL;
+        }
+    }
+  else
+    rpath = resolved;
+  rpath_limit = rpath + path_max;
+
+  if (name[0] != '/')
+    {
+      if (!__getcwd (rpath, path_max))
+        {
+          rpath[0] = '\0';
+          goto error;
+        }
+      dest = strchr (rpath, '\0');
+    }
+  else
+    {
+      rpath[0] = '/';
+      dest = rpath + 1;
+      if (DOUBLE_SLASH_IS_DISTINCT_ROOT && name[1] == '/')
+        *dest++ = '/';
+    }
+
+  for (start = end = name; *start; start = end)
+    {
+#ifdef _LIBC
+      struct stat64 st;
+#else
+      struct stat st;
+#endif
+      int n;
+
+      /* Skip sequence of multiple path-separators.  */
+      while (*start == '/')
+        ++start;
+
+      /* Find end of path component.  */
+      for (end = start; *end && *end != '/'; ++end)
+        /* Nothing.  */;
+
+      if (end - start == 0)
+        break;
+      else if (end - start == 1 && start[0] == '.')
+        /* nothing */;
+      else if (end - start == 2 && start[0] == '.' && start[1] == '.')
+        {
+          /* Back up to previous component, ignore if at root already.  */
+          if (dest > rpath + 1)
+            while ((--dest)[-1] != '/');
+          if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1
+              && *dest == '/')
+            dest++;
+        }
+      else
+        {
+          size_t new_size;
+
+          if (dest[-1] != '/')
+            *dest++ = '/';
+
+          if (dest + (end - start) >= rpath_limit)
+            {
+              ptrdiff_t dest_offset = dest - rpath;
+              char *new_rpath;
+
+              if (resolved)
+                {
+                  __set_errno (ENAMETOOLONG);
+                  if (dest > rpath + 1)
+                    dest--;
+                  *dest = '\0';
+                  goto error;
+                }
+              new_size = rpath_limit - rpath;
+              if (end - start + 1 > path_max)
+                new_size += end - start + 1;
+              else
+                new_size += path_max;
+              new_rpath = (char *) realloc (rpath, new_size);
+              if (new_rpath == NULL)
+                {
+                  /* It's easier to set errno to ENOMEM than to rely on the
+                     'realloc-posix' gnulib module.  */
+                  errno = ENOMEM;
+                  goto error;
+                }
+              rpath = new_rpath;
+              rpath_limit = rpath + new_size;
+
+              dest = rpath + dest_offset;
+            }
+
+#ifdef _LIBC
+          dest = __mempcpy (dest, start, end - start);
+#else
+          memcpy (dest, start, end - start);
+          dest += end - start;
+#endif
+          *dest = '\0';
+
+#ifdef _LIBC
+          if (__lxstat64 (_STAT_VER, rpath, &st) < 0)
+#else
+          if (lstat (rpath, &st) < 0)
+#endif
+            goto error;
+
+          if (S_ISLNK (st.st_mode))
+            {
+              char *buf;
+              size_t len;
+
+              if (++num_links > MAXSYMLINKS)
+                {
+                  __set_errno (ELOOP);
+                  goto error;
+                }
+
+              buf = malloca (path_max);
+              if (!buf)
+                {
+                  errno = ENOMEM;
+                  goto error;
+                }
+
+              n = __readlink (rpath, buf, path_max - 1);
+              if (n < 0)
+                {
+                  int saved_errno = errno;
+                  freea (buf);
+                  errno = saved_errno;
+                  goto error;
+                }
+              buf[n] = '\0';
+
+              if (!extra_buf)
+                {
+                  extra_buf = malloca (path_max);
+                  if (!extra_buf)
+                    {
+                      freea (buf);
+                      errno = ENOMEM;
+                      goto error;
+                    }
+                }
+
+              len = strlen (end);
+              if ((long int) (n + len) >= path_max)
+                {
+                  freea (buf);
+                  __set_errno (ENAMETOOLONG);
+                  goto error;
+                }
+
+              /* Careful here, end may be a pointer into extra_buf... */
+              memmove (&extra_buf[n], end, len + 1);
+              name = end = memcpy (extra_buf, buf, n);
+
+              if (buf[0] == '/')
+                {
+                  dest = rpath + 1;     /* It's an absolute symlink */
+                  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && buf[1] == '/')
+                    *dest++ = '/';
+                }
+              else
+                {
+                  /* Back up to previous component, ignore if at root
+                     already: */
+                  if (dest > rpath + 1)
+                    while ((--dest)[-1] != '/');
+                  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1
+                      && *dest == '/')
+                    dest++;
+                }
+            }
+          else if (!S_ISDIR (st.st_mode) && *end != '\0')
+            {
+              __set_errno (ENOTDIR);
+              goto error;
+            }
+        }
+    }
+  if (dest > rpath + 1 && dest[-1] == '/')
+    --dest;
+  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rpath + 1 && *dest == '/')
+    dest++;
+  *dest = '\0';
+
+  if (extra_buf)
+    freea (extra_buf);
+
+  return rpath;
+
+error:
+  {
+    int saved_errno = errno;
+    if (extra_buf)
+      freea (extra_buf);
+    if (resolved == NULL)
+      free (rpath);
+    errno = saved_errno;
+  }
+  return NULL;
+}
+versioned_symbol (libc, __realpath, realpath, GLIBC_2_3);
+#endif /* !FUNC_REALPATH_WORKS || defined _LIBC */
+
+
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3)
+char *
+attribute_compat_text_section
+__old_realpath (const char *name, char *resolved)
+{
+  if (resolved == NULL)
+    {
+      __set_errno (EINVAL);
+      return NULL;
+    }
+
+  return __realpath (name, resolved);
+}
+compat_symbol (libc, __old_realpath, realpath, GLIBC_2_0);
+#endif
+
+
+char *
+__canonicalize_file_name (const char *name)
+{
+  return __realpath (name, NULL);
+}
+weak_alias (__canonicalize_file_name, canonicalize_file_name)
+
+#else
+
+/* This declaration is solely to ensure that after preprocessing
+   this file is never empty.  */
+typedef int dummy;
+
+#endif
diff --git a/gnu/canonicalize.c b/gnu/canonicalize.c
deleted file mode 100644 (file)
index 82a819e..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Return the canonical absolute name of a given file.
-   Copyright (C) 1996-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-#include "canonicalize.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "areadlink.h"
-#include "file-set.h"
-#include "hash-triple.h"
-#include "pathmax.h"
-#include "xalloc.h"
-#include "xgetcwd.h"
-
-#ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
-# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
-#endif
-
-#if !((HAVE_CANONICALIZE_FILE_NAME && FUNC_REALPATH_WORKS)      \
-      || GNULIB_CANONICALIZE_LGPL)
-/* Return the canonical absolute name of file NAME.  A canonical name
-   does not contain any `.', `..' components nor any repeated file name
-   separators ('/') or symlinks.  All components must exist.
-   The result is malloc'd.  */
-
-char *
-canonicalize_file_name (const char *name)
-{
-  return canonicalize_filename_mode (name, CAN_EXISTING);
-}
-#endif /* !HAVE_CANONICALIZE_FILE_NAME */
-
-/* Return true if we've already seen the triple, <FILENAME, dev, ino>.
-   If *HT is not initialized, initialize it.  */
-static bool
-seen_triple (Hash_table **ht, char const *filename, struct stat const *st)
-{
-  if (*ht == NULL)
-    {
-      size_t initial_capacity = 7;
-      *ht = hash_initialize (initial_capacity,
-                            NULL,
-                            triple_hash,
-                            triple_compare_ino_str,
-                            triple_free);
-      if (*ht == NULL)
-        xalloc_die ();
-    }
-
-  if (seen_file (*ht, filename, st))
-    return true;
-
-  record_file (*ht, filename, st);
-  return false;
-}
-
-/* Return the canonical absolute name of file NAME, while treating
-   missing elements according to CAN_MODE.  A canonical name
-   does not contain any `.', `..' components nor any repeated file name
-   separators ('/') or symlinks.  Whether components must exist
-   or not depends on canonicalize mode.  The result is malloc'd.  */
-
-char *
-canonicalize_filename_mode (const char *name, canonicalize_mode_t can_mode)
-{
-  char *rname, *dest, *extra_buf = NULL;
-  char const *start;
-  char const *end;
-  char const *rname_limit;
-  size_t extra_len = 0;
-  Hash_table *ht = NULL;
-  int saved_errno;
-
-  if (name == NULL)
-    {
-      errno = EINVAL;
-      return NULL;
-    }
-
-  if (name[0] == '\0')
-    {
-      errno = ENOENT;
-      return NULL;
-    }
-
-  if (name[0] != '/')
-    {
-      rname = xgetcwd ();
-      if (!rname)
-        return NULL;
-      dest = strchr (rname, '\0');
-      if (dest - rname < PATH_MAX)
-        {
-          char *p = xrealloc (rname, PATH_MAX);
-          dest = p + (dest - rname);
-          rname = p;
-          rname_limit = rname + PATH_MAX;
-        }
-      else
-        {
-          rname_limit = dest;
-        }
-    }
-  else
-    {
-      rname = xmalloc (PATH_MAX);
-      rname_limit = rname + PATH_MAX;
-      rname[0] = '/';
-      dest = rname + 1;
-      if (DOUBLE_SLASH_IS_DISTINCT_ROOT && name[1] == '/')
-        *dest++ = '/';
-    }
-
-  for (start = name; *start; start = end)
-    {
-      /* Skip sequence of multiple file name separators.  */
-      while (*start == '/')
-        ++start;
-
-      /* Find end of component.  */
-      for (end = start; *end && *end != '/'; ++end)
-        /* Nothing.  */;
-
-      if (end - start == 0)
-        break;
-      else if (end - start == 1 && start[0] == '.')
-        /* nothing */;
-      else if (end - start == 2 && start[0] == '.' && start[1] == '.')
-        {
-          /* Back up to previous component, ignore if at root already.  */
-          if (dest > rname + 1)
-            while ((--dest)[-1] != '/');
-          if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1
-              && *dest == '/')
-            dest++;
-        }
-      else
-        {
-          struct stat st;
-
-          if (dest[-1] != '/')
-            *dest++ = '/';
-
-          if (dest + (end - start) >= rname_limit)
-            {
-              ptrdiff_t dest_offset = dest - rname;
-              size_t new_size = rname_limit - rname;
-
-              if (end - start + 1 > PATH_MAX)
-                new_size += end - start + 1;
-              else
-                new_size += PATH_MAX;
-              rname = xrealloc (rname, new_size);
-              rname_limit = rname + new_size;
-
-              dest = rname + dest_offset;
-            }
-
-          dest = memcpy (dest, start, end - start);
-          dest += end - start;
-          *dest = '\0';
-
-          if (lstat (rname, &st) != 0)
-            {
-              saved_errno = errno;
-              if (can_mode == CAN_EXISTING)
-                goto error;
-              if (can_mode == CAN_ALL_BUT_LAST)
-                {
-                  if (end[strspn (end, "/")] || saved_errno != ENOENT)
-                    goto error;
-                  continue;
-                }
-              st.st_mode = 0;
-            }
-
-          if (S_ISLNK (st.st_mode))
-            {
-              char *buf;
-              size_t n, len;
-
-              /* Detect loops.  We cannot use the cycle-check module here,
-                 since it's actually possible to encounter the same symlink
-                 more than once in a given traversal.  However, encountering
-                 the same symlink,NAME pair twice does indicate a loop.  */
-              if (seen_triple (&ht, name, &st))
-                {
-                  if (can_mode == CAN_MISSING)
-                    continue;
-                  saved_errno = ELOOP;
-                  goto error;
-                }
-
-              buf = areadlink_with_size (rname, st.st_size);
-              if (!buf)
-                {
-                  if (can_mode == CAN_MISSING && errno != ENOMEM)
-                    continue;
-                  saved_errno = errno;
-                  goto error;
-                }
-
-              n = strlen (buf);
-              len = strlen (end);
-
-              if (!extra_len)
-                {
-                  extra_len =
-                    ((n + len + 1) > PATH_MAX) ? (n + len + 1) : PATH_MAX;
-                  extra_buf = xmalloc (extra_len);
-                }
-              else if ((n + len + 1) > extra_len)
-                {
-                  extra_len = n + len + 1;
-                  extra_buf = xrealloc (extra_buf, extra_len);
-                }
-
-              /* Careful here, end may be a pointer into extra_buf... */
-              memmove (&extra_buf[n], end, len + 1);
-              name = end = memcpy (extra_buf, buf, n);
-
-              if (buf[0] == '/')
-                {
-                  dest = rname + 1;     /* It's an absolute symlink */
-                  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && buf[1] == '/')
-                    *dest++ = '/';
-                }
-              else
-                {
-                  /* Back up to previous component, ignore if at root
-                     already: */
-                  if (dest > rname + 1)
-                    while ((--dest)[-1] != '/');
-                  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1
-                      && *dest == '/')
-                    dest++;
-                }
-
-              free (buf);
-            }
-          else
-            {
-              if (!S_ISDIR (st.st_mode) && *end && (can_mode != CAN_MISSING))
-                {
-                  saved_errno = ENOTDIR;
-                  goto error;
-                }
-            }
-        }
-    }
-  if (dest > rname + 1 && dest[-1] == '/')
-    --dest;
-  if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && *dest == '/')
-    dest++;
-  *dest = '\0';
-  if (rname_limit != dest + 1)
-    rname = xrealloc (rname, dest - rname + 1);
-
-  free (extra_buf);
-  if (ht)
-    hash_free (ht);
-  return rname;
-
-error:
-  free (extra_buf);
-  free (rname);
-  if (ht)
-    hash_free (ht);
-  errno = saved_errno;
-  return NULL;
-}
diff --git a/gnu/canonicalize.h b/gnu/canonicalize.h
deleted file mode 100644 (file)
index 06bf3c9..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Return the canonical absolute name of a given file.
-   Copyright (C) 1996-2007, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef CANONICALIZE_H_
-# define CANONICALIZE_H_
-
-#include <stdlib.h> /* for canonicalize_file_name */
-
-enum canonicalize_mode_t
-  {
-    /* All components must exist.  */
-    CAN_EXISTING = 0,
-
-    /* All components excluding last one must exist.  */
-    CAN_ALL_BUT_LAST = 1,
-
-    /* No requirements on components existence.  */
-    CAN_MISSING = 2
-  };
-typedef enum canonicalize_mode_t canonicalize_mode_t;
-
-/* Return a malloc'd string containing the canonical absolute name of
-   the named file.  This acts like canonicalize_file_name, except that
-   whether components must exist depends on the canonicalize_mode_t
-   argument.  */
-char *canonicalize_filename_mode (const char *, canonicalize_mode_t);
-
-#endif /* !CANONICALIZE_H_ */
index 5050b1f30ed14907846bedbc57b8eebffde04d53..338c050b4be24cb854f0dcbc4da2cbf414493231 100644 (file)
@@ -74,7 +74,7 @@ static int
 cdb_advance_fd (struct cd_buf *cdb, char const *dir)
 {
   int new_fd = openat (cdb->fd, dir,
-                       O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
+                       O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
   if (new_fd < 0)
     return -1;
 
diff --git a/gnu/cloexec.c b/gnu/cloexec.c
new file mode 100644 (file)
index 0000000..4fb995e
--- /dev/null
@@ -0,0 +1,85 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* closexec.c - set or clear the close-on-exec descriptor flag
+
+   Copyright (C) 1991, 2004-2006, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+   The code is taken from glibc/manual/llio.texi  */
+
+#include <config.h>
+
+#include "cloexec.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+/* Set the `FD_CLOEXEC' flag of DESC if VALUE is true,
+   or clear the flag if VALUE is false.
+   Return 0 on success, or -1 on error with `errno' set.
+
+   Note that on MingW, this function does NOT protect DESC from being
+   inherited into spawned children.  Instead, either use dup_cloexec
+   followed by closing the original DESC, or use interfaces such as
+   open or pipe2 that accept flags like O_CLOEXEC to create DESC
+   non-inheritable in the first place.  */
+
+int
+set_cloexec_flag (int desc, bool value)
+{
+#ifdef F_SETFD
+
+  int flags = fcntl (desc, F_GETFD, 0);
+
+  if (0 <= flags)
+    {
+      int newflags = (value ? flags | FD_CLOEXEC : flags & ~FD_CLOEXEC);
+
+      if (flags == newflags
+          || fcntl (desc, F_SETFD, newflags) != -1)
+        return 0;
+    }
+
+  return -1;
+
+#else /* !F_SETFD */
+
+  /* Use dup2 to reject invalid file descriptors; the cloexec flag
+     will be unaffected.  */
+  if (desc < 0)
+    {
+      errno = EBADF;
+      return -1;
+    }
+  if (dup2 (desc, desc) < 0)
+    /* errno is EBADF here.  */
+    return -1;
+
+  /* There is nothing we can do on this kind of platform.  Punt.  */
+  return 0;
+#endif /* !F_SETFD */
+}
+
+
+/* Duplicates a file handle FD, while marking the copy to be closed
+   prior to exec or spawn.  Returns -1 and sets errno if FD could not
+   be duplicated.  */
+
+int
+dup_cloexec (int fd)
+{
+  return fcntl (fd, F_DUPFD_CLOEXEC, 0);
+}
diff --git a/gnu/cloexec.h b/gnu/cloexec.h
new file mode 100644 (file)
index 0000000..12f17a8
--- /dev/null
@@ -0,0 +1,40 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* closexec.c - set or clear the close-on-exec descriptor flag
+
+   Copyright (C) 2004, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include <stdbool.h>
+
+/* Set the `FD_CLOEXEC' flag of DESC if VALUE is true,
+   or clear the flag if VALUE is false.
+   Return 0 on success, or -1 on error with `errno' set.
+
+   Note that on MingW, this function does NOT protect DESC from being
+   inherited into spawned children.  Instead, either use dup_cloexec
+   followed by closing the original DESC, or use interfaces such as
+   open or pipe2 that accept flags like O_CLOEXEC to create DESC
+   non-inheritable in the first place.  */
+
+int set_cloexec_flag (int desc, bool value);
+
+/* Duplicates a file handle FD, while marking the copy to be closed
+   prior to exec or spawn.  Returns -1 and sets errno if FD could not
+   be duplicated.  */
+
+int dup_cloexec (int fd);
index 306d9015983232a0f4ee8853e54fd57493fa8885..5004f30a6ec20b5993af9e1dadf5a03467ff7d54 100644 (file)
@@ -57,9 +57,9 @@
 int
 close_stream (FILE *stream)
 {
-  bool some_pending = (__fpending (stream) != 0);
-  bool prev_fail = (ferror (stream) != 0);
-  bool fclose_fail = (fclose (stream) != 0);
+  const bool some_pending = (__fpending (stream) != 0);
+  const bool prev_fail = (ferror (stream) != 0);
+  const bool fclose_fail = (fclose (stream) != 0);
 
   /* Return an error indication if there was a previous failure or if
      fclose failed, with one exception: ignore an fclose failure if
index 2959df89bfce5019fb343199ac630d7695886a3e..aa7d00dba1c8e4774a4264157aee1abea6bb9b97 100644 (file)
 # The current list of GNU canonical charset names is as follows.
 #
 #       name              MIME?             used by which systems
-#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin
-#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
-#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
-#   ISO-8859-3              Y   glibc solaris
+#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin cygwin
+#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+#   ISO-8859-3              Y   glibc solaris cygwin
 #   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
-#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
-#   ISO-8859-6              Y   glibc aix hpux solaris
-#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin
-#   ISO-8859-8              Y   glibc aix hpux osf solaris
-#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin
-#   ISO-8859-13                 glibc netbsd openbsd darwin
-#   ISO-8859-14                 glibc
-#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin
+#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+#   ISO-8859-6              Y   glibc aix hpux solaris cygwin
+#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin
+#   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
+#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin cygwin
+#   ISO-8859-13                 glibc netbsd openbsd darwin cygwin
+#   ISO-8859-14                 glibc cygwin
+#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin
 #   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
-#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin
+#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
 #   KOI8-T                      glibc
 #   CP437                       dos
 #   CP775                       dos
@@ -61,7 +61,7 @@
 #   CP869                       dos
 #   CP874                       woe32 dos
 #   CP922                       aix
-#   CP932                       aix woe32 dos
+#   CP932                       aix cygwin woe32 dos
 #   CP943                       aix
 #   CP949                       osf darwin woe32 dos
 #   CP950                       woe32 dos
@@ -71,7 +71,7 @@
 #   CP1129                      aix
 #   CP1131                      darwin
 #   CP1250                      woe32
-#   CP1251                      glibc solaris netbsd openbsd darwin woe32
+#   CP1251                      glibc solaris netbsd openbsd darwin cygwin woe32
 #   CP1252                      aix woe32
 #   CP1253                      woe32
 #   CP1254                      woe32
 #   CP1257                      woe32
 #   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin
 #   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
-#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
+#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
 #   EUC-TW                      glibc aix hpux irix osf solaris netbsd
-#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin
+#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin cygwin
 #   BIG5-HKSCS                  glibc solaris darwin
-#   GBK                         glibc aix osf solaris darwin woe32 dos
+#   GBK                         glibc aix osf solaris darwin cygwin woe32 dos
 #   GB18030                     glibc solaris netbsd darwin
 #   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
 #   JOHAB                       glibc solaris woe32
-#   TIS-620                     glibc aix hpux osf solaris
+#   TIS-620                     glibc aix hpux osf solaris cygwin
 #   VISCII                  Y   glibc
 #   TCVN5712-1                  glibc
 #   ARMSCII-8                   glibc darwin
-#   GEORGIAN-PS                 glibc
+#   GEORGIAN-PS                 glibc cygwin
 #   PT154                       glibc
 #   HP-ROMAN8                   hpux
 #   HP-ARABIC8                  hpux
 #   HP-KANA8                    hpux
 #   DEC-KANJI                   osf
 #   DEC-HANYU                   osf
-#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin
+#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin cygwin
 #
 # Note: Names which are not marked as being a MIME name should not be used in
 # Internet protocols for information interchange (mail, news, etc.).
index ddb78d8385898f040f0fe2aa226b520868b98ba4..ccc6a47b0985211b937dc336c3978bdea62f19d6 100644 (file)
@@ -21,6 +21,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_DIRENT_H@
@@ -52,11 +53,28 @@ _GL_CXXALIAS_SYS (closedir, int, (DIR *));
 _GL_CXXALIASWARN (closedir);
 
 #if @GNULIB_DIRFD@
-# if !@HAVE_DECL_DIRFD@ && !defined dirfd
 /* Return the file descriptor associated with the given directory stream,
    or -1 if none exists.  */
-_GL_EXTERN_C int dirfd (DIR *dir) _GL_ARG_NONNULL ((1));
+# if @REPLACE_DIRFD@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef dirfd
+#   define dirfd rpl_dirfd
+#  endif
+_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (dirfd, int, (DIR *));
+# else
+#  if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd
+    /* dirfd is defined as a macro and not as a function.
+       Turn it into a function and get rid of the macro.  */
+static inline int (dirfd) (DIR *dp) { return dirfd (dp); }
+#   undef dirfd
+#  endif
+#  if !(@HAVE_DECL_DIRFD@ || defined dirfd)
+_GL_FUNCDECL_SYS (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (dirfd, int, (DIR *));
 # endif
+_GL_CXXALIASWARN (dirfd);
 #elif defined GNULIB_POSIXCHECK
 # undef dirfd
 # if HAVE_RAW_DECL_DIRFD
@@ -79,7 +97,7 @@ _GL_WARN_ON_USE (dirfd, "dirfd is unportable - "
 _GL_FUNCDECL_RPL (fdopendir, DIR *, (int fd));
 _GL_CXXALIAS_RPL (fdopendir, DIR *, (int fd));
 # else
-#  if !@HAVE_FDOPENDIR@
+#  if !@HAVE_FDOPENDIR@ || !@HAVE_DECL_FDOPENDIR@
 _GL_FUNCDECL_SYS (fdopendir, DIR *, (int fd));
 #  endif
 _GL_CXXALIAS_SYS (fdopendir, DIR *, (int fd));
index f613d26a373fbea0211668b46dc1c74f0e44acc7..d59c196958bdae5f06e19e66a6de53bebf9e8ed7 100644 (file)
@@ -23,6 +23,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_ERRNO_H@
 
 /* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
    EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+   Likewise, on NonStop Kernel, EDQUOT is not defined.
    Define them here.  Values >= 2000 seem safe to use: Solaris ESTALE = 151,
    HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
 
 #  define GNULIB_defined_ESTALE 1
 # endif
 
+# ifndef EDQUOT
+#  define EDQUOT 2010
+#  define GNULIB_defined_EDQUOT 1
+# endif
+
 # ifndef ECANCELED
 #  define ECANCELED 2008
 #  define GNULIB_defined_ECANCELED 1
index b6e9c3350d205bd19900d89aacaee6f5620d0f45..37b2c6e31c191e187312433fd941e7bf5e453c7e 100644 (file)
@@ -90,6 +90,15 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
 # include <fcntl.h>
 # include <unistd.h>
 
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* Get declarations of the Win32 API functions.  */
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+# endif
+
+/* The gnulib override of fcntl is not needed in this file.  */
+# undef fcntl
+
 # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
 #  ifndef HAVE_DECL_STRERROR_R
 "this configure-time declaration test was not run"
@@ -106,10 +115,29 @@ extern char *program_name;
 # endif /* HAVE_STRERROR_R || defined strerror_r */
 #endif  /* not _LIBC */
 
+#if !_LIBC
+/* Return non-zero if FD is open.  */
+static inline int
+is_open (int fd)
+{
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+  /* On Win32: The initial state of unassigned standard file descriptors is
+     that they are open but point to an INVALID_HANDLE_VALUE.  There is no
+     fcntl, and the gnulib replacement fcntl does not support F_GETFL.  */
+  return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE;
+# else
+#  ifndef F_GETFL
+#   error Please port fcntl to your platform
+#  endif
+  return 0 <= fcntl (fd, F_GETFL);
+# endif
+}
+#endif
+
 static inline void
 flush_stdout (void)
 {
-#if !_LIBC && defined F_GETFL
+#if !_LIBC
   int stdout_fd;
 
 # if GNULIB_FREOPEN_SAFER
@@ -126,7 +154,7 @@ flush_stdout (void)
   /* POSIX states that fflush (stdout) after fclose is unspecified; it
      is safe in glibc, but not on all other platforms.  fflush (NULL)
      is always defined, but too draconian.  */
-  if (0 <= stdout_fd && 0 <= fcntl (stdout_fd, F_GETFL))
+  if (0 <= stdout_fd && is_open (stdout_fd))
 #endif
     fflush (stdout);
 }
index 00a053fc70a022ebb5fc4b3ce64be0848085c251..dfa2aabff8f5bd045eb7976f9149b9961cd498b7 100644 (file)
@@ -136,6 +136,26 @@ fnmatch_pattern_has_wildcards (const char *str, int options)
   return false;
 }
 
+static void
+unescape_pattern (char *str)
+{
+  int inset = 0;
+  char *q = str;
+  do
+    {
+      if (inset)
+        {
+          if (*q == ']')
+            inset = 0;
+        }
+      else if (*q == '[')
+        inset = 1;
+      else if (*q == '\\')
+        q++;
+    }
+  while ((*str++ = *q++));
+}
+
 /* Return a newly allocated and empty exclude list.  */
 
 struct exclude *
@@ -344,7 +364,7 @@ excluded_file_pattern_p (struct exclude_segment const *seg, char const *f)
     {
       char const *pattern = exclude[i].pattern;
       int options = exclude[i].options;
-      if (excluded != exclude_fnmatch (pattern, f, options))
+      if (exclude_fnmatch (pattern, f, options))
         return !excluded;
     }
   return excluded;
@@ -482,6 +502,8 @@ add_exclude (struct exclude *ex, char const *pattern, int options)
         seg = new_exclude_segment (ex, exclude_hash, options);
 
       str = xstrdup (pattern);
+      if (options & EXCLUDE_WILDCARDS)
+        unescape_pattern (str);
       p = hash_insert (seg->v.table, str);
       if (p != str)
         free (str);
index 95298dea1b63509dc1358af416ee1c82086bc66b..c2ded08a20761422e26ba7b60539e082e25e4a89 100644 (file)
@@ -22,6 +22,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined __need_system_fcntl_h
 /* Special invocation convention.  */
@@ -172,6 +173,10 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
 # define O_CLOEXEC O_NOINHERIT
 #endif
 
+#ifndef O_CLOEXEC
+# define O_CLOEXEC 0
+#endif
+
 #ifndef O_DIRECT
 # define O_DIRECT 0
 #endif
@@ -184,6 +189,10 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
 # define O_DSYNC 0
 #endif
 
+#ifndef O_EXEC
+# define O_EXEC O_RDONLY /* This is often close enough in older systems.  */
+#endif
+
 #ifndef O_NDELAY
 # define O_NDELAY 0
 #endif
@@ -212,6 +221,10 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
 # define O_RSYNC 0
 #endif
 
+#ifndef O_SEARCH
+# define O_SEARCH O_RDONLY /* This is often close enough in older systems.  */
+#endif
+
 #ifndef O_SYNC
 # define O_SYNC 0
 #endif
index 7488fbb133bcb434dd8909e5b35aa4a9ab188aec..544bf5d5c2a572b12c37d6526b821805e88d7aa4 100644 (file)
 #  include "dirent--.h"
 # endif
 
-/* Replacement for Solaris' function by the same name.
-   <http://www.google.com/search?q=fdopendir+site:docs.sun.com>
+static DIR *fdopendir_with_dup (int, int);
+static DIR *fd_clone_opendir (int);
+
+/* Replacement for POSIX fdopendir.
+
    First, try to simulate it via opendir ("/proc/self/fd/FD").  Failing
    that, simulate it by using fchdir metadata, or by doing
    save_cwd/fchdir/opendir(".")/restore_cwd.
    If either the save_cwd or the restore_cwd fails (relatively unlikely),
    then give a diagnostic and exit nonzero.
-   Otherwise, this function works just like Solaris' fdopendir.
+
+   If successful, the resulting stream is based on FD in
+   implementations where streams are based on file descriptors and in
+   applications where no other thread or signal handler allocates or
+   frees file descriptors.  In other cases, consult dirfd on the result
+   to find out whether FD is still being used.
+
+   Otherwise, this function works just like POSIX fdopendir.
 
    W A R N I N G:
-   Unlike other fd-related functions, this one effectively consumes
-   its FD parameter.  The caller should not close or otherwise
-   manipulate FD if this function returns successfully.  Also, this
-   implementation does not guarantee that dirfd(fdopendir(n))==n;
-   the open directory stream may use a clone of FD, or have no
-   associated fd at all.  */
+
+   Unlike other fd-related functions, this one places constraints on FD.
+   If this function returns successfully, FD is under control of the
+   dirent.h system, and the caller should not close or modify the state of
+   FD other than by the dirent.h functions.  */
 DIR *
 fdopendir (int fd)
+{
+  return fdopendir_with_dup (fd, -1);
+}
+
+/* Like fdopendir, except that if OLDER_DUPFD is not -1, it is known
+   to be a dup of FD which is less than FD - 1 and which will be
+   closed by the caller and not otherwise used by the caller.  This
+   function makes sure that FD is closed and all file descriptors less
+   than FD are open, and then calls fd_clone_opendir on a dup of FD.
+   That way, barring race conditions, fd_clone_opendir returns a
+   stream whose file descriptor is FD.  */
+static DIR *
+fdopendir_with_dup (int fd, int older_dupfd)
+{
+  int dupfd = dup (fd);
+  if (dupfd < 0 && errno == EMFILE)
+    dupfd = older_dupfd;
+  if (dupfd < 0)
+    return NULL;
+  else
+    {
+      DIR *dir;
+      int saved_errno;
+      if (dupfd < fd - 1 && dupfd != older_dupfd)
+        {
+          dir = fdopendir_with_dup (fd, dupfd);
+          saved_errno = errno;
+        }
+      else
+        {
+          close (fd);
+          dir = fd_clone_opendir (dupfd);
+          saved_errno = errno;
+          if (! dir)
+            {
+              int fd1 = dup (dupfd);
+              if (fd1 != fd)
+                openat_save_fail (fd1 < 0 ? errno : EBADF);
+            }
+        }
+
+      if (dupfd != older_dupfd)
+        close (dupfd);
+      errno = saved_errno;
+      return dir;
+    }
+}
+
+/* Like fdopendir, except the result controls a clone of FD.  It is
+   the caller's responsibility both to close FD and (if the result is
+   not null) to closedir the result.  */
+static DIR *
+fd_clone_opendir (int fd)
 {
   int saved_errno;
   DIR *dir;
@@ -80,10 +142,23 @@ fdopendir (int fd)
         dir = opendir (name);
       saved_errno = errno;
 # else /* !REPLACE_FCHDIR */
+
+      /* Occupy the destination FD slot, so that save_cwd cannot hijack it.  */
+      int fd_reserve = dup (fd);
+      if (fd_reserve < 0)
+        {
+          saved_errno = errno;
+          dir = NULL;
+          goto fail;
+        }
+
       struct saved_cwd saved_cwd;
       if (save_cwd (&saved_cwd) != 0)
         openat_save_fail (errno);
 
+      /* Liberate the target file descriptor, so that opendir uses it.  */
+      close (fd_reserve);
+
       if (fchdir (fd) != 0)
         {
           dir = NULL;
@@ -102,8 +177,7 @@ fdopendir (int fd)
 # endif /* !REPLACE_FCHDIR */
     }
 
-  if (dir)
-    close (fd);
+ fail:
   if (proc_file != buf)
     free (proc_file);
   errno = saved_errno;
diff --git a/gnu/fdutimensat.c b/gnu/fdutimensat.c
new file mode 100644 (file)
index 0000000..6df7b56
--- /dev/null
@@ -0,0 +1,59 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Set file access and modification times.
+
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 3 of the License, or any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Eric Blake.  */
+
+/* derived from a function in utimens.c */
+
+#include <config.h>
+
+#include "utimens.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* Set the access and modification time stamps of FD (a.k.a. FILE) to be
+   TIMESPEC[0] and TIMESPEC[1], respectively; relative to directory DIR.
+   FD must be either negative -- in which case it is ignored --
+   or a file descriptor that is open on FILE.
+   If FD is nonnegative, then FILE can be NULL, which means
+   use just futimes (or equivalent) instead of utimes (or equivalent),
+   and fail if on an old system without futimes (or equivalent).
+   If TIMESPEC is null, set the time stamps to the current time.
+   ATFLAG is passed to utimensat if FD is negative or futimens was
+   unsupported, which can allow operation on FILE as a symlink.
+   Return 0 on success, -1 (setting errno) on failure.  */
+
+int
+fdutimensat (int fd, int dir, char const *file, struct timespec const ts[2],
+             int atflag)
+{
+  int result = 1;
+  if (0 <= fd)
+    result = futimens (fd, ts);
+  if (file && (fd < 0 || (result == -1 && errno == ENOSYS)))
+    result = utimensat (dir, file, ts, atflag);
+  if (result == 1)
+    {
+      errno = EBADF;
+      result = -1;
+    }
+  return result;
+}
diff --git a/gnu/file-set.c b/gnu/file-set.c
deleted file mode 100644 (file)
index 1bcc05a..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Specialized functions to manipulate a set of files.
-   Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* written by Jim Meyering */
-
-#include <config.h>
-#include "file-set.h"
-
-#include "hash-triple.h"
-#include "xalloc.h"
-
-/* Record file, FILE, and dev/ino from *STATS, in the hash table, HT.
-   If HT is NULL, return immediately.
-   If memory allocation fails, exit immediately.  */
-void
-record_file (Hash_table *ht, char const *file, struct stat const *stats)
-{
-  struct F_triple *ent;
-
-  if (ht == NULL)
-    return;
-
-  ent = xmalloc (sizeof *ent);
-  ent->name = xstrdup (file);
-  ent->st_ino = stats->st_ino;
-  ent->st_dev = stats->st_dev;
-
-  {
-    struct F_triple *ent_from_table = hash_insert (ht, ent);
-    if (ent_from_table == NULL)
-      {
-        /* Insertion failed due to lack of memory.  */
-        xalloc_die ();
-      }
-
-    if (ent_from_table != ent)
-      {
-        /* There was alread a matching entry in the table, so ENT was
-           not inserted.  Free it.  */
-        triple_free (ent);
-      }
-  }
-}
-
-/* Return true if there is an entry in hash table, HT,
-   for the file described by FILE and STATS.  */
-bool
-seen_file (Hash_table const *ht, char const *file,
-           struct stat const *stats)
-{
-  struct F_triple new_ent;
-
-  if (ht == NULL)
-    return false;
-
-  new_ent.name = (char *) file;
-  new_ent.st_ino = stats->st_ino;
-  new_ent.st_dev = stats->st_dev;
-
-  return !!hash_lookup (ht, &new_ent);
-}
diff --git a/gnu/file-set.h b/gnu/file-set.h
deleted file mode 100644 (file)
index ef854ee..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdbool.h>
-
-#include "hash.h"
-
-extern void record_file (Hash_table *ht, char const *file,
-                         struct stat const *stats)
-  __attribute__((nonnull(2, 3)));
-
-extern bool seen_file (Hash_table const *ht, char const *file,
-                       struct stat const *stats);
diff --git a/gnu/filenamecat-lgpl.c b/gnu/filenamecat-lgpl.c
new file mode 100644 (file)
index 0000000..819f27b
--- /dev/null
@@ -0,0 +1,90 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Concatenate two arbitrary file names.
+
+   Copyright (C) 1996-2007, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "filenamecat.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "dirname.h"
+
+#if ! HAVE_MEMPCPY && ! defined mempcpy
+# define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
+#endif
+
+/* Return the longest suffix of F that is a relative file name.
+   If it has no such suffix, return the empty string.  */
+
+static char const *
+longest_relative_suffix (char const *f)
+{
+  for (f += FILE_SYSTEM_PREFIX_LEN (f); ISSLASH (*f); f++)
+    continue;
+  return f;
+}
+
+/* Concatenate two file name components, DIR and ABASE, in
+   newly-allocated storage and return the result.
+   The resulting file name F is such that the commands "ls F" and "(cd
+   DIR; ls BASE)" refer to the same file, where BASE is ABASE with any
+   file system prefixes and leading separators removed.
+   Arrange for a directory separator if necessary between DIR and BASE
+   in the result, removing any redundant separators.
+   In any case, if BASE_IN_RESULT is non-NULL, set
+   *BASE_IN_RESULT to point to the copy of ABASE in the returned
+   concatenation.  However, if ABASE begins with more than one slash,
+   set *BASE_IN_RESULT to point to the sole corresponding slash that
+   is copied into the result buffer.
+
+   Return NULL if malloc fails.  */
+
+char *
+mfile_name_concat (char const *dir, char const *abase, char **base_in_result)
+{
+  char const *dirbase = last_component (dir);
+  size_t dirbaselen = base_len (dirbase);
+  size_t dirlen = dirbase - dir + dirbaselen;
+  size_t needs_separator = (dirbaselen && ! ISSLASH (dirbase[dirbaselen - 1]));
+
+  char const *base = longest_relative_suffix (abase);
+  size_t baselen = strlen (base);
+
+  char *p_concat = malloc (dirlen + needs_separator + baselen + 1);
+  char *p;
+
+  if (p_concat == NULL)
+    return NULL;
+
+  p = mempcpy (p_concat, dir, dirlen);
+  *p = DIRECTORY_SEPARATOR;
+  p += needs_separator;
+
+  if (base_in_result)
+    *base_in_result = p - IS_ABSOLUTE_FILE_NAME (abase);
+
+  p = mempcpy (p, base, baselen);
+  *p = '\0';
+
+  return p_concat;
+}
diff --git a/gnu/filenamecat.h b/gnu/filenamecat.h
new file mode 100644 (file)
index 0000000..40a26d3
--- /dev/null
@@ -0,0 +1,29 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Concatenate two arbitrary file names.
+
+   Copyright (C) 1996-1997, 2003, 2005, 2007, 2009-2010 Free Software
+   Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering.  */
+
+#if GNULIB_FILENAMECAT
+char *file_name_concat (char const *dir, char const *base,
+                        char **base_in_result);
+#endif
+
+char *mfile_name_concat (char const *dir, char const *base,
+                         char **base_in_result);
index 4a120b77b401a1d9f56d2fc4a6afc4a0d51bd977..08b9bce82dc8f8946947e7b1a660855d5c29a36b 100644 (file)
 #define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT)
 
 /* Verify that SIZEOF_FLT <= sizeof (float) etc.  */
-typedef int verify_sizeof_flt[2 * (SIZEOF_FLT <= sizeof (float)) - 1];
-typedef int verify_sizeof_dbl[2 * (SIZEOF_DBL <= sizeof (double)) - 1];
-typedef int verify_sizeof_ldbl[2 * (SIZEOF_LDBL <= sizeof (long double)) - 1];
+typedef int verify_sizeof_flt[SIZEOF_FLT <= sizeof (float) ? 1 : -1];
+typedef int verify_sizeof_dbl[SIZEOF_DBL <= sizeof (double) ? 1 : - 1];
+typedef int verify_sizeof_ldbl[SIZEOF_LDBL <= sizeof (long double) ? 1 : - 1];
 
 #endif /* _FLOATPLUS_H */
index 9ec97ab1169737f89500695ba76cb2e946df0657..cc2dbdf04edbfd3583b9712ec6c99ca38c7e6c9f 100644 (file)
@@ -22,6 +22,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_FLOAT_H@
index 03a4d996b34327ecd4d1108dd39108f8dbd9e5c7..5eb256a6c4c17003cf7f728939b02e3a25a83f1a 100644 (file)
 
 #include "stdio-impl.h"
 
+int
+fseeko (FILE *fp, off_t offset, int whence)
 #undef fseeko
 #if !HAVE_FSEEKO
 # undef fseek
 # define fseeko fseek
 #endif
-
-int
-rpl_fseeko (FILE *fp, off_t offset, int whence)
 {
 #if LSEEK_PIPE_BROKEN
   /* mingw gives bogus answers rather than failure on non-seekable files.  */
diff --git a/gnu/ftruncate.c b/gnu/ftruncate.c
deleted file mode 100644 (file)
index 39b4bda..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* ftruncate emulations that work on some System V's.
-   This file is in the public domain.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <unistd.h>
-
-#include <sys/types.h>
-#include <fcntl.h>
-
-#ifdef F_CHSIZE
-
-int
-ftruncate (int fd, off_t length)
-{
-  return fcntl (fd, F_CHSIZE, length);
-}
-
-#else /* not F_CHSIZE */
-# ifdef F_FREESP
-
-/* By William Kucharski <kucharsk@netcom.com>.  */
-
-#  include <sys/stat.h>
-#  include <errno.h>
-
-int
-ftruncate (int fd, off_t length)
-{
-  struct flock fl;
-  struct stat filebuf;
-
-  if (fstat (fd, &filebuf) < 0)
-    return -1;
-
-  if (filebuf.st_size < length)
-    {
-      /* Extend file length. */
-      if (lseek (fd, (length - 1), SEEK_SET) < 0)
-        return -1;
-
-      /* Write a "0" byte. */
-      if (write (fd, "", 1) != 1)
-        return -1;
-    }
-  else
-    {
-
-      /* Truncate length. */
-
-      fl.l_whence = 0;
-      fl.l_len = 0;
-      fl.l_start = length;
-      fl.l_type = F_WRLCK;      /* write lock on file space */
-
-      /* This relies on the *undocumented* F_FREESP argument to fcntl,
-         which truncates the file so that it ends at the position
-         indicated by fl.l_start.  Will minor miracles never cease?  */
-
-      if (fcntl (fd, F_FREESP, &fl) < 0)
-        return -1;
-    }
-
-  return 0;
-}
-
-# else /* not F_CHSIZE nor F_FREESP */
-#  if HAVE_CHSIZE                      /* native Windows, e.g. mingw */
-
-int
-ftruncate (int fd, off_t length)
-{
-  return chsize (fd, length);
-}
-
-#  else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
-
-#   include <errno.h>
-
-int
-ftruncate (int fd, off_t length)
-{
-  errno = EIO;
-  return -1;
-}
-
-#  endif /* not HAVE_CHSIZE */
-# endif /* not F_FREESP */
-#endif /* not F_CHSIZE */
diff --git a/gnu/futimens.c b/gnu/futimens.c
new file mode 100644 (file)
index 0000000..4e8f894
--- /dev/null
@@ -0,0 +1,39 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Set the access and modification time of an open fd.
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include "utimens.h"
+
+/* Set the access and modification time stamps of FD to be
+   TIMESPEC[0] and TIMESPEC[1], respectively.
+   Fail with ENOSYS on systems without futimes (or equivalent).
+   If TIMESPEC is null, set the time stamps to the current time.
+   Return 0 on success, -1 (setting errno) on failure.  */
+int
+futimens (int fd, struct timespec const times[2])
+{
+  /* fdutimens also works around bugs in native futimens, when running
+     with glibc compiled against newer headers but on a Linux kernel
+     older than 2.6.32.  */
+  return fdutimens (fd, NULL, times);
+}
index 504448fce245fa58b1a829e98b93ee4c4c3ca724..2ccca7963e27a8caeae0b9703f788e6fbc401eb9 100644 (file)
@@ -138,13 +138,11 @@ __getcwd (char *buf, size_t size)
   size_t allocated = size;
   size_t used;
 
-#if HAVE_PARTLY_WORKING_GETCWD
-  /* The system getcwd works, except it sometimes fails when it
-     shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT.  If
-     AT_FDCWD is not defined, the algorithm below is O(N**2) and this
-     is much slower than the system getcwd (at least on GNU/Linux).
-     So trust the system getcwd's results unless they look
-     suspicious.
+#if HAVE_RAW_DECL_GETCWD
+  /* If AT_FDCWD is not defined, the algorithm below is O(N**2) and
+     this is much slower than the system getcwd (at least on
+     GNU/Linux).  So trust the system getcwd's results unless they
+     look suspicious.
 
      Use the system getcwd even if we have openat support, since the
      system getcwd works even when a parent is unreadable, while the
@@ -152,8 +150,27 @@ __getcwd (char *buf, size_t size)
 
 # undef getcwd
   dir = getcwd (buf, size);
-  if (dir || (errno != ERANGE && errno != ENAMETOOLONG && errno != ENOENT))
+  if (dir)
     return dir;
+
+  /* Solaris getcwd (NULL, 0) fails with errno == EINVAL, but it has
+     internal magic that lets it work even if an ancestor directory is
+     inaccessible, which is better in many cases.  So in this case try
+     again with a buffer that's almost always big enough.  */
+  if (errno == EINVAL && buf == NULL && size == 0)
+    {
+      char big_buffer[BIG_FILE_NAME_LENGTH + 1];
+      dir = getcwd (big_buffer, sizeof big_buffer);
+      if (dir)
+        return strdup (dir);
+    }
+
+# if HAVE_PARTLY_WORKING_GETCWD
+  /* The system getcwd works, except it sometimes fails when it
+     shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT.    */
+  if (errno != ERANGE && errno != ENAMETOOLONG && errno != ENOENT)
+    return NULL;
+# endif
 #endif
 
   if (size == 0)
@@ -232,8 +249,6 @@ __getcwd (char *buf, size_t size)
       dirstream = fdopendir (fd);
       if (dirstream == NULL)
         goto lose;
-      /* Reset fd.  It may have been closed by fdopendir.  */
-      fd = dirfd (dirstream);
       fd_needs_closing = false;
 #else
       dirstream = __opendir (dotlist);
diff --git a/gnu/getdate.c b/gnu/getdate.c
deleted file mode 100644 (file)
index c45ce3d..0000000
+++ /dev/null
@@ -1,3349 +0,0 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "2.3"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 1
-
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
-
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     tAGO = 258,
-     tDST = 259,
-     tYEAR_UNIT = 260,
-     tMONTH_UNIT = 261,
-     tHOUR_UNIT = 262,
-     tMINUTE_UNIT = 263,
-     tSEC_UNIT = 264,
-     tDAY_UNIT = 265,
-     tDAY_SHIFT = 266,
-     tDAY = 267,
-     tDAYZONE = 268,
-     tLOCAL_ZONE = 269,
-     tMERIDIAN = 270,
-     tMONTH = 271,
-     tORDINAL = 272,
-     tZONE = 273,
-     tSNUMBER = 274,
-     tUNUMBER = 275,
-     tSDECIMAL_NUMBER = 276,
-     tUDECIMAL_NUMBER = 277
-   };
-#endif
-/* Tokens.  */
-#define tAGO 258
-#define tDST 259
-#define tYEAR_UNIT 260
-#define tMONTH_UNIT 261
-#define tHOUR_UNIT 262
-#define tMINUTE_UNIT 263
-#define tSEC_UNIT 264
-#define tDAY_UNIT 265
-#define tDAY_SHIFT 266
-#define tDAY 267
-#define tDAYZONE 268
-#define tLOCAL_ZONE 269
-#define tMERIDIAN 270
-#define tMONTH 271
-#define tORDINAL 272
-#define tZONE 273
-#define tSNUMBER 274
-#define tUNUMBER 275
-#define tSDECIMAL_NUMBER 276
-#define tUDECIMAL_NUMBER 277
-
-
-
-
-/* Copy the first part of user declarations.  */
-#line 1 "getdate.y"
-
-/* Parse a string into an internal time stamp.
-
-   Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-   2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Originally written by Steven M. Bellovin <smb@research.att.com> while
-   at the University of North Carolina at Chapel Hill.  Later tweaked by
-   a couple of people on Usenet.  Completely overhauled by Rich $alz
-   <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
-
-   Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do
-   the right thing about local DST.  Also modified by Paul Eggert
-   <eggert@cs.ucla.edu> in February 2004 to support
-   nanosecond-resolution time stamps, and in October 2004 to support
-   TZ strings in dates.  */
-
-/* FIXME: Check for arithmetic overflow in all cases, not just
-   some of them.  */
-
-#include <config.h>
-
-#include "getdate.h"
-
-#include "intprops.h"
-#include "timespec.h"
-#include "verify.h"
-
-/* There's no need to extend the stack, so there's no need to involve
-   alloca.  */
-#define YYSTACK_USE_ALLOCA 0
-
-/* Tell Bison how much stack space is needed.  20 should be plenty for
-   this grammar, which is not right recursive.  Beware setting it too
-   high, since that might cause problems on machines whose
-   implementations have lame stack-overflow checking.  */
-#define YYMAXDEPTH 20
-#define YYINITDEPTH YYMAXDEPTH
-
-/* Since the code of getdate.y is not included in the Emacs executable
-   itself, there is no need to #define static in this file.  Even if
-   the code were included in the Emacs executable, it probably
-   wouldn't do any harm to #undef it here; this will only cause
-   problems if we try to write to a static variable, which I don't
-   think this code needs to do.  */
-#ifdef emacs
-# undef static
-#endif
-
-#include <c-ctype.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "xalloc.h"
-
-
-/* ISDIGIT differs from isdigit, as follows:
-   - Its arg may be any int or unsigned int; it need not be an unsigned char
-     or EOF.
-   - It's typically faster.
-   POSIX says that only '0' through '9' are digits.  Prefer ISDIGIT to
-   isdigit unless it's important to use the locale's definition
-   of `digit' even when the host does not conform to POSIX.  */
-#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
-
-/* Shift A right by B bits portably, by dividing A by 2**B and
-   truncating towards minus infinity.  A and B should be free of side
-   effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
-   INT_BITS is the number of useful bits in an int.  GNU code can
-   assume that INT_BITS is at least 32.
-
-   ISO C99 says that A >> B is implementation-defined if A < 0.  Some
-   implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
-   right in the usual way when A < 0, so SHR falls back on division if
-   ordinary A >> B doesn't seem to be the usual signed shift.  */
-#define SHR(a, b)       \
-  (-1 >> 1 == -1        \
-   ? (a) >> (b)         \
-   : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
-
-#define EPOCH_YEAR 1970
-#define TM_YEAR_BASE 1900
-
-#define HOUR(x) ((x) * 60)
-
-/* long_time_t is a signed integer type that contains all time_t values.  */
-verify (TYPE_IS_INTEGER (time_t));
-#if TIME_T_FITS_IN_LONG_INT
-typedef long int long_time_t;
-#else
-typedef time_t long_time_t;
-#endif
-
-/* Lots of this code assumes time_t and time_t-like values fit into
-   long_time_t.  */
-verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
-        && TYPE_MAXIMUM (time_t) <= TYPE_MAXIMUM (long_time_t));
-
-/* FIXME: It also assumes that signed integer overflow silently wraps around,
-   but this is not true any more with recent versions of GCC 4.  */
-
-/* An integer value, and the number of digits in its textual
-   representation.  */
-typedef struct
-{
-  bool negative;
-  long int value;
-  size_t digits;
-} textint;
-
-/* An entry in the lexical lookup table.  */
-typedef struct
-{
-  char const *name;
-  int type;
-  int value;
-} table;
-
-/* Meridian: am, pm, or 24-hour style.  */
-enum { MERam, MERpm, MER24 };
-
-enum { BILLION = 1000000000, LOG10_BILLION = 9 };
-
-/* Relative times.  */
-typedef struct
-{
-  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
-  long int year;
-  long int month;
-  long int day;
-  long int hour;
-  long int minutes;
-  long_time_t seconds;
-  long int ns;
-} relative_time;
-
-#if HAVE_COMPOUND_LITERALS
-# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
-#else
-static relative_time const RELATIVE_TIME_0;
-#endif
-
-/* Information passed to and from the parser.  */
-typedef struct
-{
-  /* The input string remaining to be parsed. */
-  const char *input;
-
-  /* N, if this is the Nth Tuesday.  */
-  long int day_ordinal;
-
-  /* Day of week; Sunday is 0.  */
-  int day_number;
-
-  /* tm_isdst flag for the local zone.  */
-  int local_isdst;
-
-  /* Time zone, in minutes east of UTC.  */
-  long int time_zone;
-
-  /* Style used for time.  */
-  int meridian;
-
-  /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds.  */
-  textint year;
-  long int month;
-  long int day;
-  long int hour;
-  long int minutes;
-  struct timespec seconds; /* includes nanoseconds */
-
-  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
-  relative_time rel;
-
-  /* Presence or counts of nonterminals of various flavors parsed so far.  */
-  bool timespec_seen;
-  bool rels_seen;
-  size_t dates_seen;
-  size_t days_seen;
-  size_t local_zones_seen;
-  size_t dsts_seen;
-  size_t times_seen;
-  size_t zones_seen;
-
-  /* Table of local time zone abbrevations, terminated by a null entry.  */
-  table local_time_zone_table[3];
-} parser_control;
-
-union YYSTYPE;
-static int yylex (union YYSTYPE *, parser_control *);
-static int yyerror (parser_control const *, char const *);
-static long int time_zone_hhmm (parser_control *, textint, long int);
-
-/* Extract into *PC any date and time info from a string of digits
-   of the form e.g., YYYYMMDD, YYMMDD, HHMM, HH (and sometimes YYY,
-   YYYY, ...).  */
-static void
-digits_to_date_time (parser_control *pc, textint text_int)
-{
-  if (pc->dates_seen && ! pc->year.digits
-      && ! pc->rels_seen && (pc->times_seen || 2 < text_int.digits))
-    pc->year = text_int;
-  else
-    {
-      if (4 < text_int.digits)
-        {
-          pc->dates_seen++;
-          pc->day = text_int.value % 100;
-          pc->month = (text_int.value / 100) % 100;
-          pc->year.value = text_int.value / 10000;
-          pc->year.digits = text_int.digits - 4;
-        }
-      else
-        {
-          pc->times_seen++;
-          if (text_int.digits <= 2)
-            {
-              pc->hour = text_int.value;
-              pc->minutes = 0;
-            }
-          else
-            {
-              pc->hour = text_int.value / 100;
-              pc->minutes = text_int.value % 100;
-            }
-          pc->seconds.tv_sec = 0;
-          pc->seconds.tv_nsec = 0;
-          pc->meridian = MER24;
-        }
-    }
-}
-
-/* Increment PC->rel by FACTOR * REL (FACTOR is 1 or -1).  */
-static void
-apply_relative_time (parser_control *pc, relative_time rel, int factor)
-{
-  pc->rel.ns += factor * rel.ns;
-  pc->rel.seconds += factor * rel.seconds;
-  pc->rel.minutes += factor * rel.minutes;
-  pc->rel.hour += factor * rel.hour;
-  pc->rel.day += factor * rel.day;
-  pc->rel.month += factor * rel.month;
-  pc->rel.year += factor * rel.year;
-  pc->rels_seen = true;
-}
-
-/* Set PC-> hour, minutes, seconds and nanoseconds members from arguments.  */
-static void
-set_hhmmss (parser_control *pc, long int hour, long int minutes,
-            time_t sec, long int nsec)
-{
-  pc->hour = hour;
-  pc->minutes = minutes;
-  pc->seconds.tv_sec = sec;
-  pc->seconds.tv_nsec = nsec;
-}
-
-
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-#line 285 "getdate.y"
-{
-  long int intval;
-  textint textintval;
-  struct timespec timespec;
-  relative_time rel;
-}
-/* Line 187 of yacc.c.  */
-#line 421 "getdate.c"
-       YYSTYPE;
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-
-
-
-/* Copy the second part of user declarations.  */
-
-
-/* Line 216 of yacc.c.  */
-#line 434 "getdate.c"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(msgid) msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
-    int i;
-#endif
-{
-  return i;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
-       && ! ((defined YYMALLOC || defined malloc) \
-            && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)             \
-      do                                       \
-       {                                       \
-         YYSIZE_T yyi;                         \
-         for (yyi = 0; yyi < (Count); yyi++)   \
-           (To)[yyi] = (From)[yyi];            \
-       }                                       \
-      while (YYID (0))
-#  endif
-# endif
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack)                                       \
-    do                                                                 \
-      {                                                                        \
-       YYSIZE_T yynewbytes;                                            \
-       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
-       Stack = &yyptr->Stack;                                          \
-       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-       yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                        \
-    while (YYID (0))
-
-#endif
-
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  12
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   98
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  27
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  21
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  82
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  100
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   277
-
-#define YYTRANSLATE(YYX)                                               \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    25,     2,     2,    26,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    24,     2,
-       2,     2,     2,     2,    23,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint8 yyprhs[] =
-{
-       0,     0,     3,     5,     7,    10,    11,    14,    16,    18,
-      20,    22,    24,    26,    28,    30,    33,    38,    44,    51,
-      59,    61,    64,    66,    69,    73,    75,    78,    80,    83,
-      86,    89,    93,    99,   103,   107,   111,   114,   119,   122,
-     126,   129,   131,   133,   136,   139,   141,   144,   147,   149,
-     152,   155,   157,   160,   163,   165,   168,   171,   173,   176,
-     179,   182,   185,   187,   189,   192,   195,   198,   201,   204,
-     207,   209,   211,   213,   215,   217,   219,   221,   223,   226,
-     227,   230,   231
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      28,     0,    -1,    29,    -1,    30,    -1,    23,    41,    -1,
-      -1,    30,    31,    -1,    32,    -1,    33,    -1,    34,    -1,
-      36,    -1,    35,    -1,    37,    -1,    44,    -1,    45,    -1,
-      20,    15,    -1,    20,    24,    20,    47,    -1,    20,    24,
-      20,    19,    46,    -1,    20,    24,    20,    24,    43,    47,
-      -1,    20,    24,    20,    24,    43,    19,    46,    -1,    14,
-      -1,    14,     4,    -1,    18,    -1,    18,    39,    -1,    18,
-      19,    46,    -1,    13,    -1,    18,     4,    -1,    12,    -1,
-      12,    25,    -1,    17,    12,    -1,    20,    12,    -1,    20,
-      26,    20,    -1,    20,    26,    20,    26,    20,    -1,    20,
-      19,    19,    -1,    20,    16,    19,    -1,    16,    19,    19,
-      -1,    16,    20,    -1,    16,    20,    25,    20,    -1,    20,
-      16,    -1,    20,    16,    20,    -1,    38,     3,    -1,    38,
-      -1,    40,    -1,    17,     5,    -1,    20,     5,    -1,     5,
-      -1,    17,     6,    -1,    20,     6,    -1,     6,    -1,    17,
-      10,    -1,    20,    10,    -1,    10,    -1,    17,     7,    -1,
-      20,     7,    -1,     7,    -1,    17,     8,    -1,    20,     8,
-      -1,     8,    -1,    17,     9,    -1,    20,     9,    -1,    21,
-       9,    -1,    22,     9,    -1,     9,    -1,    39,    -1,    19,
-       5,    -1,    19,     6,    -1,    19,    10,    -1,    19,     7,
-      -1,    19,     8,    -1,    19,     9,    -1,    11,    -1,    42,
-      -1,    43,    -1,    21,    -1,    19,    -1,    22,    -1,    20,
-      -1,    20,    -1,    20,    39,    -1,    -1,    24,    20,    -1,
-      -1,    15,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   311,   311,   312,   316,   323,   325,   329,   331,   333,
-     335,   337,   339,   340,   341,   345,   350,   355,   362,   367,
-     377,   382,   390,   392,   395,   397,   399,   404,   409,   414,
-     419,   427,   432,   452,   459,   467,   475,   480,   486,   491,
-     500,   502,   504,   509,   511,   513,   515,   517,   519,   521,
-     523,   525,   527,   529,   531,   533,   535,   537,   539,   541,
-     543,   545,   547,   549,   553,   555,   557,   559,   561,   563,
-     568,   572,   572,   575,   576,   581,   582,   587,   592,   603,
-     604,   610,   611
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "tAGO", "tDST", "tYEAR_UNIT",
-  "tMONTH_UNIT", "tHOUR_UNIT", "tMINUTE_UNIT", "tSEC_UNIT", "tDAY_UNIT",
-  "tDAY_SHIFT", "tDAY", "tDAYZONE", "tLOCAL_ZONE", "tMERIDIAN", "tMONTH",
-  "tORDINAL", "tZONE", "tSNUMBER", "tUNUMBER", "tSDECIMAL_NUMBER",
-  "tUDECIMAL_NUMBER", "'@'", "':'", "','", "'/'", "$accept", "spec",
-  "timespec", "items", "item", "time", "local_zone", "zone", "day", "date",
-  "rel", "relunit", "relunit_snumber", "dayshift", "seconds",
-  "signed_seconds", "unsigned_seconds", "number", "hybrid",
-  "o_colon_minutes", "o_merid", 0
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,    64,    58,    44,    47
-};
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    27,    28,    28,    29,    30,    30,    31,    31,    31,
-      31,    31,    31,    31,    31,    32,    32,    32,    32,    32,
-      33,    33,    34,    34,    34,    34,    34,    35,    35,    35,
-      35,    36,    36,    36,    36,    36,    36,    36,    36,    36,
-      37,    37,    37,    38,    38,    38,    38,    38,    38,    38,
-      38,    38,    38,    38,    38,    38,    38,    38,    38,    38,
-      38,    38,    38,    38,    39,    39,    39,    39,    39,    39,
-      40,    41,    41,    42,    42,    43,    43,    44,    45,    46,
-      46,    47,    47
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     2,     0,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     4,     5,     6,     7,
-       1,     2,     1,     2,     3,     1,     2,     1,     2,     2,
-       2,     3,     5,     3,     3,     3,     2,     4,     2,     3,
-       2,     1,     1,     2,     2,     1,     2,     2,     1,     2,
-       2,     1,     2,     2,     1,     2,     2,     1,     2,     2,
-       2,     2,     1,     1,     2,     2,     2,     2,     2,     2,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       2,     0,     1
-};
-
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-       5,     0,     0,     2,     3,    74,    76,    73,    75,     4,
-      71,    72,     1,    45,    48,    54,    57,    62,    51,    70,
-      27,    25,    20,     0,     0,    22,     0,    77,     0,     0,
-       6,     7,     8,     9,    11,    10,    12,    41,    63,    42,
-      13,    14,    28,    21,     0,    36,    43,    46,    52,    55,
-      58,    49,    29,    26,    79,    23,    64,    65,    67,    68,
-      69,    66,    44,    47,    53,    56,    59,    50,    30,    15,
-      38,     0,     0,     0,    78,    60,    61,    40,    35,     0,
-       0,    24,    34,    39,    33,    81,    31,    37,    80,    82,
-      79,     0,    16,     0,    17,    81,    32,    79,    18,    19
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
-{
-      -1,     2,     3,     4,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,     9,    10,    11,    40,    41,    81,
-      92
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -82
-static const yytype_int8 yypact[] =
-{
-     -17,    56,    15,   -82,    26,   -82,   -82,   -82,   -82,   -82,
-     -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,
-      36,   -82,    68,    10,    50,     9,    59,    -5,    72,    73,
-     -82,   -82,   -82,   -82,   -82,   -82,   -82,    80,   -82,   -82,
-     -82,   -82,   -82,   -82,    65,    61,   -82,   -82,   -82,   -82,
-     -82,   -82,   -82,   -82,    17,   -82,   -82,   -82,   -82,   -82,
-     -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,
-      60,    44,    67,    69,   -82,   -82,   -82,   -82,   -82,    70,
-      71,   -82,   -82,   -82,   -82,    -7,    62,   -82,   -82,   -82,
-      74,    -2,   -82,    75,   -82,    55,   -82,    74,   -82,   -82
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
-{
-     -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,
-     -82,   -82,    46,   -82,   -82,   -82,    -6,   -82,   -82,   -81,
-      -3
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
-static const yytype_uint8 yytable[] =
-{
-      62,    63,    64,    65,    66,    67,     1,    68,    89,    94,
-      69,    70,    90,    53,    71,    12,    99,    91,     6,    72,
-       8,    73,    56,    57,    58,    59,    60,    61,    54,    44,
-      45,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    80,    23,    24,    25,    26,    27,    28,    29,    56,
-      57,    58,    59,    60,    61,    46,    47,    48,    49,    50,
-      51,    42,    52,    84,    56,    57,    58,    59,    60,    61,
-      89,    55,    43,    74,    97,     5,     6,     7,     8,    82,
-      83,    75,    76,    77,    78,    95,    79,    85,    93,    86,
-      87,    88,    98,     0,     0,    96,     0,     0,    80
-};
-
-static const yytype_int8 yycheck[] =
-{
-       5,     6,     7,     8,     9,    10,    23,    12,    15,    90,
-      15,    16,    19,     4,    19,     0,    97,    24,    20,    24,
-      22,    26,     5,     6,     7,     8,     9,    10,    19,    19,
-      20,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    24,    16,    17,    18,    19,    20,    21,    22,     5,
-       6,     7,     8,     9,    10,     5,     6,     7,     8,     9,
-      10,    25,    12,    19,     5,     6,     7,     8,     9,    10,
-      15,    25,     4,    27,    19,    19,    20,    21,    22,    19,
-      20,     9,     9,     3,    19,    91,    25,    20,    26,    20,
-      20,    20,    95,    -1,    -1,    20,    -1,    -1,    24
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
-{
-       0,    23,    28,    29,    30,    19,    20,    21,    22,    41,
-      42,    43,     0,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    16,    17,    18,    19,    20,    21,    22,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      44,    45,    25,     4,    19,    20,     5,     6,     7,     8,
-       9,    10,    12,     4,    19,    39,     5,     6,     7,     8,
-       9,    10,     5,     6,     7,     8,     9,    10,    12,    15,
-      16,    19,    24,    26,    39,     9,     9,     3,    19,    25,
-      24,    46,    19,    20,    19,    20,    20,    20,    20,    15,
-      19,    24,    47,    26,    46,    43,    20,    19,    47,    46
-};
-
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                (-2)
-#define YYEOF          0
-
-#define YYACCEPT       goto yyacceptlab
-#define YYABORT                goto yyabortlab
-#define YYERROR                goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-
-#define YYFAIL         goto yyerrlab
-
-#define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)                                 \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    {                                                          \
-      yychar = (Token);                                                \
-      yylval = (Value);                                                \
-      yytoken = YYTRANSLATE (yychar);                          \
-      YYPOPSTACK (1);                                          \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    {                                                          \
-      yyerror (pc, YY_("syntax error: cannot back up")); \
-      YYERROR;                                                 \
-    }                                                          \
-while (YYID (0))
-
-
-#define YYTERROR       1
-#define YYERRCODE      256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
-    do                                                                 \
-      if (YYID (N))                                                    \
-       {                                                               \
-         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
-         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
-         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
-         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
-       }                                                               \
-      else                                                             \
-       {                                                               \
-         (Current).first_line   = (Current).last_line   =              \
-           YYRHSLOC (Rhs, 0).last_line;                                \
-         (Current).first_column = (Current).last_column =              \
-           YYRHSLOC (Rhs, 0).last_column;                              \
-       }                                                               \
-    while (YYID (0))
-#endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)                 \
-     fprintf (File, "%d.%d-%d.%d",                     \
-             (Loc).first_line, (Loc).first_column,     \
-             (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&yylval, pc)
-#endif
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args)                       \
-do {                                           \
-  if (yydebug)                                 \
-    YYFPRINTF Args;                            \
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                   \
-do {                                                                     \
-  if (yydebug)                                                           \
-    {                                                                    \
-      YYFPRINTF (stderr, "%s ", Title);                                          \
-      yy_symbol_print (stderr,                                           \
-                 Type, Value, pc); \
-      YYFPRINTF (stderr, "\n");                                                  \
-    }                                                                    \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    parser_control *pc;
-#endif
-{
-  if (!yyvaluep)
-    return;
-  YYUSE (pc);
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
-# endif
-  switch (yytype)
-    {
-      default:
-       break;
-    }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, pc)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    parser_control *pc;
-#endif
-{
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc);
-  YYFPRINTF (yyoutput, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
-#else
-static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
-#endif
-{
-  YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
-  YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top)                           \
-do {                                                           \
-  if (yydebug)                                                 \
-    yy_stack_print ((Bottom), (Top));                          \
-} while (YYID (0))
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_control *pc)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule, pc)
-    YYSTYPE *yyvsp;
-    int yyrule;
-    parser_control *pc;
-#endif
-{
-  int yynrhs = yyr2[yyrule];
-  int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-            yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      fprintf (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-                      &(yyvsp[(yyi + 1) - (yynrhs)])
-                                      , pc);
-      fprintf (stderr, "\n");
-    }
-}
-
-# define YY_REDUCE_PRINT(Rule)         \
-do {                                   \
-  if (yydebug)                         \
-    yy_reduce_print (yyvsp, Rule, pc); \
-} while (YYID (0))
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef        YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
-
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-\f
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-       switch (*++yyp)
-         {
-         case '\'':
-         case ',':
-           goto do_not_strip_quotes;
-
-         case '\\':
-           if (*++yyp != '\\')
-             goto do_not_strip_quotes;
-           /* Fall through.  */
-         default:
-           if (yyres)
-             yyres[yyn] = *yyp;
-           yyn++;
-           break;
-
-         case '"':
-           if (yyres)
-             yyres[yyn] = '\0';
-           return yyn;
-         }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-        constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-                   + sizeof yyexpecting - 1
-                   + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-                      * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-        YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-       if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-         {
-           if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-             {
-               yycount = 1;
-               yysize = yysize0;
-               yyformat[sizeof yyunexpected - 1] = '\0';
-               break;
-             }
-           yyarg[yycount++] = yytname[yyx];
-           yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-           yysize_overflow |= (yysize1 < yysize);
-           yysize = yysize1;
-           yyfmt = yystpcpy (yyfmt, yyprefix);
-           yyprefix = yyor;
-         }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-       return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-       {
-         /* Avoid sprintf, as that infringes on the user's name space.
-            Don't have undefined behavior even if the translation
-            produced a string with the wrong number of "%s"s.  */
-         char *yyp = yyresult;
-         int yyi = 0;
-         while ((*yyp = *yyf) != '\0')
-           {
-             if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-               {
-                 yyp += yytnamerr (yyp, yyarg[yyi++]);
-                 yyf += 2;
-               }
-             else
-               {
-                 yyp++;
-                 yyf++;
-               }
-           }
-       }
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-\f
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_control *pc)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep, pc)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-    parser_control *pc;
-#endif
-{
-  YYUSE (yyvaluep);
-  YYUSE (pc);
-
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
-
-      default:
-       break;
-    }
-}
-\f
-
-/* Prevent warnings from -Wmissing-prototypes.  */
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (parser_control *pc);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-
-
-
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (parser_control *pc)
-#else
-int
-yyparse (pc)
-    parser_control *pc;
-#endif
-#endif
-{
-  /* The look-ahead symbol.  */
-int yychar;
-
-/* The semantic value of the look-ahead symbol.  */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
-
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
-
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
-
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  YYSIZE_T yystacksize = YYINITDEPTH;
-
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY;            /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss;
-  yyvsp = yyvs;
-
-  goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
- yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
- yysetstate:
-  *yyssp = yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
-    {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      {
-       /* Give user a chance to reallocate the stack.  Use copies of
-          these so that the &'s don't force the real ones into
-          memory.  */
-       YYSTYPE *yyvs1 = yyvs;
-       yytype_int16 *yyss1 = yyss;
-
-
-       /* Each stack pointer address is followed by the size of the
-          data in use in that stack, in bytes.  This used to be a
-          conditional around just the two extra args, but that might
-          be undefined if yyoverflow is a macro.  */
-       yyoverflow (YY_("memory exhausted"),
-                   &yyss1, yysize * sizeof (*yyssp),
-                   &yyvs1, yysize * sizeof (*yyvsp),
-
-                   &yystacksize);
-
-       yyss = yyss1;
-       yyvs = yyvs1;
-      }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-       goto yyexhaustedlab;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-       yystacksize = YYMAXDEPTH;
-
-      {
-       yytype_int16 *yyss1 = yyss;
-       union yyalloc *yyptr =
-         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-       if (! yyptr)
-         goto yyexhaustedlab;
-       YYSTACK_RELOCATE (yyss);
-       YYSTACK_RELOCATE (yyvs);
-
-#  undef YYSTACK_RELOCATE
-       if (yyss1 != yyssa)
-         YYSTACK_FREE (yyss1);
-      }
-# endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                 (unsigned long int) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
-       YYABORT;
-    }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
-  goto yybackup;
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-
-  /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to look-ahead token.  */
-  yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
-    goto yydefault;
-
-  /* Not known => get a look-ahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-  if (yychar == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
-    }
-
-  if (yychar <= YYEOF)
-    {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
-    {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-    }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
-    {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the look-ahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  yystate = yyn;
-  *++yyvsp = yylval;
-
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction.  |
-`-----------------------------*/
-yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
-    {
-        case 4:
-#line 317 "getdate.y"
-    {
-        pc->seconds = (yyvsp[(2) - (2)].timespec);
-        pc->timespec_seen = true;
-      }
-    break;
-
-  case 7:
-#line 330 "getdate.y"
-    { pc->times_seen++; }
-    break;
-
-  case 8:
-#line 332 "getdate.y"
-    { pc->local_zones_seen++; }
-    break;
-
-  case 9:
-#line 334 "getdate.y"
-    { pc->zones_seen++; }
-    break;
-
-  case 10:
-#line 336 "getdate.y"
-    { pc->dates_seen++; }
-    break;
-
-  case 11:
-#line 338 "getdate.y"
-    { pc->days_seen++; }
-    break;
-
-  case 15:
-#line 346 "getdate.y"
-    {
-        set_hhmmss (pc, (yyvsp[(1) - (2)].textintval).value, 0, 0, 0);
-        pc->meridian = (yyvsp[(2) - (2)].intval);
-      }
-    break;
-
-  case 16:
-#line 351 "getdate.y"
-    {
-        set_hhmmss (pc, (yyvsp[(1) - (4)].textintval).value, (yyvsp[(3) - (4)].textintval).value, 0, 0);
-        pc->meridian = (yyvsp[(4) - (4)].intval);
-      }
-    break;
-
-  case 17:
-#line 356 "getdate.y"
-    {
-        set_hhmmss (pc, (yyvsp[(1) - (5)].textintval).value, (yyvsp[(3) - (5)].textintval).value, 0, 0);
-        pc->meridian = MER24;
-        pc->zones_seen++;
-        pc->time_zone = time_zone_hhmm (pc, (yyvsp[(4) - (5)].textintval), (yyvsp[(5) - (5)].intval));
-      }
-    break;
-
-  case 18:
-#line 363 "getdate.y"
-    {
-        set_hhmmss (pc, (yyvsp[(1) - (6)].textintval).value, (yyvsp[(3) - (6)].textintval).value, (yyvsp[(5) - (6)].timespec).tv_sec, (yyvsp[(5) - (6)].timespec).tv_nsec);
-        pc->meridian = (yyvsp[(6) - (6)].intval);
-      }
-    break;
-
-  case 19:
-#line 368 "getdate.y"
-    {
-        set_hhmmss (pc, (yyvsp[(1) - (7)].textintval).value, (yyvsp[(3) - (7)].textintval).value, (yyvsp[(5) - (7)].timespec).tv_sec, (yyvsp[(5) - (7)].timespec).tv_nsec);
-        pc->meridian = MER24;
-        pc->zones_seen++;
-        pc->time_zone = time_zone_hhmm (pc, (yyvsp[(6) - (7)].textintval), (yyvsp[(7) - (7)].intval));
-      }
-    break;
-
-  case 20:
-#line 378 "getdate.y"
-    {
-        pc->local_isdst = (yyvsp[(1) - (1)].intval);
-        pc->dsts_seen += (0 < (yyvsp[(1) - (1)].intval));
-      }
-    break;
-
-  case 21:
-#line 383 "getdate.y"
-    {
-        pc->local_isdst = 1;
-        pc->dsts_seen += (0 < (yyvsp[(1) - (2)].intval)) + 1;
-      }
-    break;
-
-  case 22:
-#line 391 "getdate.y"
-    { pc->time_zone = (yyvsp[(1) - (1)].intval); }
-    break;
-
-  case 23:
-#line 393 "getdate.y"
-    { pc->time_zone = (yyvsp[(1) - (2)].intval);
-        apply_relative_time (pc, (yyvsp[(2) - (2)].rel), 1); }
-    break;
-
-  case 24:
-#line 396 "getdate.y"
-    { pc->time_zone = (yyvsp[(1) - (3)].intval) + time_zone_hhmm (pc, (yyvsp[(2) - (3)].textintval), (yyvsp[(3) - (3)].intval)); }
-    break;
-
-  case 25:
-#line 398 "getdate.y"
-    { pc->time_zone = (yyvsp[(1) - (1)].intval) + 60; }
-    break;
-
-  case 26:
-#line 400 "getdate.y"
-    { pc->time_zone = (yyvsp[(1) - (2)].intval) + 60; }
-    break;
-
-  case 27:
-#line 405 "getdate.y"
-    {
-        pc->day_ordinal = 0;
-        pc->day_number = (yyvsp[(1) - (1)].intval);
-      }
-    break;
-
-  case 28:
-#line 410 "getdate.y"
-    {
-        pc->day_ordinal = 0;
-        pc->day_number = (yyvsp[(1) - (2)].intval);
-      }
-    break;
-
-  case 29:
-#line 415 "getdate.y"
-    {
-        pc->day_ordinal = (yyvsp[(1) - (2)].intval);
-        pc->day_number = (yyvsp[(2) - (2)].intval);
-      }
-    break;
-
-  case 30:
-#line 420 "getdate.y"
-    {
-        pc->day_ordinal = (yyvsp[(1) - (2)].textintval).value;
-        pc->day_number = (yyvsp[(2) - (2)].intval);
-      }
-    break;
-
-  case 31:
-#line 428 "getdate.y"
-    {
-        pc->month = (yyvsp[(1) - (3)].textintval).value;
-        pc->day = (yyvsp[(3) - (3)].textintval).value;
-      }
-    break;
-
-  case 32:
-#line 433 "getdate.y"
-    {
-        /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
-           otherwise as MM/DD/YY.
-           The goal in recognizing YYYY/MM/DD is solely to support legacy
-           machine-generated dates like those in an RCS log listing.  If
-           you want portability, use the ISO 8601 format.  */
-        if (4 <= (yyvsp[(1) - (5)].textintval).digits)
-          {
-            pc->year = (yyvsp[(1) - (5)].textintval);
-            pc->month = (yyvsp[(3) - (5)].textintval).value;
-            pc->day = (yyvsp[(5) - (5)].textintval).value;
-          }
-        else
-          {
-            pc->month = (yyvsp[(1) - (5)].textintval).value;
-            pc->day = (yyvsp[(3) - (5)].textintval).value;
-            pc->year = (yyvsp[(5) - (5)].textintval);
-          }
-      }
-    break;
-
-  case 33:
-#line 453 "getdate.y"
-    {
-        /* ISO 8601 format.  YYYY-MM-DD.  */
-        pc->year = (yyvsp[(1) - (3)].textintval);
-        pc->month = -(yyvsp[(2) - (3)].textintval).value;
-        pc->day = -(yyvsp[(3) - (3)].textintval).value;
-      }
-    break;
-
-  case 34:
-#line 460 "getdate.y"
-    {
-        /* e.g. 17-JUN-1992.  */
-        pc->day = (yyvsp[(1) - (3)].textintval).value;
-        pc->month = (yyvsp[(2) - (3)].intval);
-        pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
-        pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
-      }
-    break;
-
-  case 35:
-#line 468 "getdate.y"
-    {
-        /* e.g. JUN-17-1992.  */
-        pc->month = (yyvsp[(1) - (3)].intval);
-        pc->day = -(yyvsp[(2) - (3)].textintval).value;
-        pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
-        pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
-      }
-    break;
-
-  case 36:
-#line 476 "getdate.y"
-    {
-        pc->month = (yyvsp[(1) - (2)].intval);
-        pc->day = (yyvsp[(2) - (2)].textintval).value;
-      }
-    break;
-
-  case 37:
-#line 481 "getdate.y"
-    {
-        pc->month = (yyvsp[(1) - (4)].intval);
-        pc->day = (yyvsp[(2) - (4)].textintval).value;
-        pc->year = (yyvsp[(4) - (4)].textintval);
-      }
-    break;
-
-  case 38:
-#line 487 "getdate.y"
-    {
-        pc->day = (yyvsp[(1) - (2)].textintval).value;
-        pc->month = (yyvsp[(2) - (2)].intval);
-      }
-    break;
-
-  case 39:
-#line 492 "getdate.y"
-    {
-        pc->day = (yyvsp[(1) - (3)].textintval).value;
-        pc->month = (yyvsp[(2) - (3)].intval);
-        pc->year = (yyvsp[(3) - (3)].textintval);
-      }
-    break;
-
-  case 40:
-#line 501 "getdate.y"
-    { apply_relative_time (pc, (yyvsp[(1) - (2)].rel), -1); }
-    break;
-
-  case 41:
-#line 503 "getdate.y"
-    { apply_relative_time (pc, (yyvsp[(1) - (1)].rel), 1); }
-    break;
-
-  case 42:
-#line 505 "getdate.y"
-    { apply_relative_time (pc, (yyvsp[(1) - (1)].rel), 1); }
-    break;
-
-  case 43:
-#line 510 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].intval); }
-    break;
-
-  case 44:
-#line 512 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 45:
-#line 514 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = 1; }
-    break;
-
-  case 46:
-#line 516 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].intval); }
-    break;
-
-  case 47:
-#line 518 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 48:
-#line 520 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = 1; }
-    break;
-
-  case 49:
-#line 522 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); }
-    break;
-
-  case 50:
-#line 524 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); }
-    break;
-
-  case 51:
-#line 526 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (1)].intval); }
-    break;
-
-  case 52:
-#line 528 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].intval); }
-    break;
-
-  case 53:
-#line 530 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 54:
-#line 532 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = 1; }
-    break;
-
-  case 55:
-#line 534 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].intval); }
-    break;
-
-  case 56:
-#line 536 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 57:
-#line 538 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = 1; }
-    break;
-
-  case 58:
-#line 540 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].intval); }
-    break;
-
-  case 59:
-#line 542 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 60:
-#line 544 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].timespec).tv_sec; (yyval.rel).ns = (yyvsp[(1) - (2)].timespec).tv_nsec; }
-    break;
-
-  case 61:
-#line 546 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].timespec).tv_sec; (yyval.rel).ns = (yyvsp[(1) - (2)].timespec).tv_nsec; }
-    break;
-
-  case 62:
-#line 548 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = 1; }
-    break;
-
-  case 64:
-#line 554 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 65:
-#line 556 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 66:
-#line 558 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); }
-    break;
-
-  case 67:
-#line 560 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 68:
-#line 562 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 69:
-#line 564 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].textintval).value; }
-    break;
-
-  case 70:
-#line 569 "getdate.y"
-    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (1)].intval); }
-    break;
-
-  case 74:
-#line 577 "getdate.y"
-    { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; }
-    break;
-
-  case 76:
-#line 583 "getdate.y"
-    { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; }
-    break;
-
-  case 77:
-#line 588 "getdate.y"
-    { digits_to_date_time (pc, (yyvsp[(1) - (1)].textintval)); }
-    break;
-
-  case 78:
-#line 593 "getdate.y"
-    {
-        /* Hybrid all-digit and relative offset, so that we accept e.g.,
-           "YYYYMMDD +N days" as well as "YYYYMMDD N days".  */
-        digits_to_date_time (pc, (yyvsp[(1) - (2)].textintval));
-        apply_relative_time (pc, (yyvsp[(2) - (2)].rel), 1);
-      }
-    break;
-
-  case 79:
-#line 603 "getdate.y"
-    { (yyval.intval) = -1; }
-    break;
-
-  case 80:
-#line 605 "getdate.y"
-    { (yyval.intval) = (yyvsp[(2) - (2)].textintval).value; }
-    break;
-
-  case 81:
-#line 610 "getdate.y"
-    { (yyval.intval) = MER24; }
-    break;
-
-  case 82:
-#line 612 "getdate.y"
-    { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
-    break;
-
-
-/* Line 1267 of yacc.c.  */
-#line 2177 "getdate.c"
-      default: break;
-    }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-
-  *++yyvsp = yyval;
-
-
-  /* Now `shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
-
-  goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
-    {
-      ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (pc, YY_("syntax error"));
-#else
-      {
-       YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-       if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-         {
-           YYSIZE_T yyalloc = 2 * yysize;
-           if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-             yyalloc = YYSTACK_ALLOC_MAXIMUM;
-           if (yymsg != yymsgbuf)
-             YYSTACK_FREE (yymsg);
-           yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-           if (yymsg)
-             yymsg_alloc = yyalloc;
-           else
-             {
-               yymsg = yymsgbuf;
-               yymsg_alloc = sizeof yymsgbuf;
-             }
-         }
-
-       if (0 < yysize && yysize <= yymsg_alloc)
-         {
-           (void) yysyntax_error (yymsg, yystate, yychar);
-           yyerror (pc, yymsg);
-         }
-       else
-         {
-           yyerror (pc, YY_("syntax error"));
-           if (yysize != 0)
-             goto yyexhaustedlab;
-         }
-      }
-#endif
-    }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse look-ahead token after an
-        error, discard it.  */
-
-      if (yychar <= YYEOF)
-       {
-         /* Return failure if at end of input.  */
-         if (yychar == YYEOF)
-           YYABORT;
-       }
-      else
-       {
-         yydestruct ("Error: discarding",
-                     yytoken, &yylval, pc);
-         yychar = YYEMPTY;
-       }
-    }
-
-  /* Else will try to reuse look-ahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-       {
-         yyn += YYTERROR;
-         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-           {
-             yyn = yytable[yyn];
-             if (0 < yyn)
-               break;
-           }
-       }
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-       YYABORT;
-
-
-      yydestruct ("Error: popping",
-                 yystos[yystate], yyvsp, pc);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
-    }
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  *++yyvsp = yylval;
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-#ifndef yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (pc, YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
-#endif
-
-yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-                yytoken, &yylval, pc);
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-                 yystos[*yyssp], yyvsp, pc);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
-
-#line 615 "getdate.y"
-
-
-static table const meridian_table[] =
-{
-  { "AM",   tMERIDIAN, MERam },
-  { "A.M.", tMERIDIAN, MERam },
-  { "PM",   tMERIDIAN, MERpm },
-  { "P.M.", tMERIDIAN, MERpm },
-  { NULL, 0, 0 }
-};
-
-static table const dst_table[] =
-{
-  { "DST", tDST, 0 }
-};
-
-static table const month_and_day_table[] =
-{
-  { "JANUARY",  tMONTH,  1 },
-  { "FEBRUARY", tMONTH,  2 },
-  { "MARCH",    tMONTH,  3 },
-  { "APRIL",    tMONTH,  4 },
-  { "MAY",      tMONTH,  5 },
-  { "JUNE",     tMONTH,  6 },
-  { "JULY",     tMONTH,  7 },
-  { "AUGUST",   tMONTH,  8 },
-  { "SEPTEMBER",tMONTH,  9 },
-  { "SEPT",     tMONTH,  9 },
-  { "OCTOBER",  tMONTH, 10 },
-  { "NOVEMBER", tMONTH, 11 },
-  { "DECEMBER", tMONTH, 12 },
-  { "SUNDAY",   tDAY,    0 },
-  { "MONDAY",   tDAY,    1 },
-  { "TUESDAY",  tDAY,    2 },
-  { "TUES",     tDAY,    2 },
-  { "WEDNESDAY",tDAY,    3 },
-  { "WEDNES",   tDAY,    3 },
-  { "THURSDAY", tDAY,    4 },
-  { "THUR",     tDAY,    4 },
-  { "THURS",    tDAY,    4 },
-  { "FRIDAY",   tDAY,    5 },
-  { "SATURDAY", tDAY,    6 },
-  { NULL, 0, 0 }
-};
-
-static table const time_units_table[] =
-{
-  { "YEAR",     tYEAR_UNIT,      1 },
-  { "MONTH",    tMONTH_UNIT,     1 },
-  { "FORTNIGHT",tDAY_UNIT,      14 },
-  { "WEEK",     tDAY_UNIT,       7 },
-  { "DAY",      tDAY_UNIT,       1 },
-  { "HOUR",     tHOUR_UNIT,      1 },
-  { "MINUTE",   tMINUTE_UNIT,    1 },
-  { "MIN",      tMINUTE_UNIT,    1 },
-  { "SECOND",   tSEC_UNIT,       1 },
-  { "SEC",      tSEC_UNIT,       1 },
-  { NULL, 0, 0 }
-};
-
-/* Assorted relative-time words. */
-static table const relative_time_table[] =
-{
-  { "TOMORROW", tDAY_SHIFT,      1 },
-  { "YESTERDAY",tDAY_SHIFT,     -1 },
-  { "TODAY",    tDAY_SHIFT,      0 },
-  { "NOW",      tDAY_SHIFT,      0 },
-  { "LAST",     tORDINAL,       -1 },
-  { "THIS",     tORDINAL,        0 },
-  { "NEXT",     tORDINAL,        1 },
-  { "FIRST",    tORDINAL,        1 },
-/*{ "SECOND",   tORDINAL,        2 }, */
-  { "THIRD",    tORDINAL,        3 },
-  { "FOURTH",   tORDINAL,        4 },
-  { "FIFTH",    tORDINAL,        5 },
-  { "SIXTH",    tORDINAL,        6 },
-  { "SEVENTH",  tORDINAL,        7 },
-  { "EIGHTH",   tORDINAL,        8 },
-  { "NINTH",    tORDINAL,        9 },
-  { "TENTH",    tORDINAL,       10 },
-  { "ELEVENTH", tORDINAL,       11 },
-  { "TWELFTH",  tORDINAL,       12 },
-  { "AGO",      tAGO,            1 },
-  { NULL, 0, 0 }
-};
-
-/* The universal time zone table.  These labels can be used even for
-   time stamps that would not otherwise be valid, e.g., GMT time
-   stamps in London during summer.  */
-static table const universal_time_zone_table[] =
-{
-  { "GMT",      tZONE,     HOUR ( 0) }, /* Greenwich Mean */
-  { "UT",       tZONE,     HOUR ( 0) }, /* Universal (Coordinated) */
-  { "UTC",      tZONE,     HOUR ( 0) },
-  { NULL, 0, 0 }
-};
-
-/* The time zone table.  This table is necessarily incomplete, as time
-   zone abbreviations are ambiguous; e.g. Australians interpret "EST"
-   as Eastern time in Australia, not as US Eastern Standard Time.
-   You cannot rely on getdate to handle arbitrary time zone
-   abbreviations; use numeric abbreviations like `-0500' instead.  */
-static table const time_zone_table[] =
-{
-  { "WET",      tZONE,     HOUR ( 0) }, /* Western European */
-  { "WEST",     tDAYZONE,  HOUR ( 0) }, /* Western European Summer */
-  { "BST",      tDAYZONE,  HOUR ( 0) }, /* British Summer */
-  { "ART",      tZONE,    -HOUR ( 3) }, /* Argentina */
-  { "BRT",      tZONE,    -HOUR ( 3) }, /* Brazil */
-  { "BRST",     tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */
-  { "NST",      tZONE,   -(HOUR ( 3) + 30) },   /* Newfoundland Standard */
-  { "NDT",      tDAYZONE,-(HOUR ( 3) + 30) },   /* Newfoundland Daylight */
-  { "AST",      tZONE,    -HOUR ( 4) }, /* Atlantic Standard */
-  { "ADT",      tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */
-  { "CLT",      tZONE,    -HOUR ( 4) }, /* Chile */
-  { "CLST",     tDAYZONE, -HOUR ( 4) }, /* Chile Summer */
-  { "EST",      tZONE,    -HOUR ( 5) }, /* Eastern Standard */
-  { "EDT",      tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */
-  { "CST",      tZONE,    -HOUR ( 6) }, /* Central Standard */
-  { "CDT",      tDAYZONE, -HOUR ( 6) }, /* Central Daylight */
-  { "MST",      tZONE,    -HOUR ( 7) }, /* Mountain Standard */
-  { "MDT",      tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */
-  { "PST",      tZONE,    -HOUR ( 8) }, /* Pacific Standard */
-  { "PDT",      tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */
-  { "AKST",     tZONE,    -HOUR ( 9) }, /* Alaska Standard */
-  { "AKDT",     tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */
-  { "HST",      tZONE,    -HOUR (10) }, /* Hawaii Standard */
-  { "HAST",     tZONE,    -HOUR (10) }, /* Hawaii-Aleutian Standard */
-  { "HADT",     tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */
-  { "SST",      tZONE,    -HOUR (12) }, /* Samoa Standard */
-  { "WAT",      tZONE,     HOUR ( 1) }, /* West Africa */
-  { "CET",      tZONE,     HOUR ( 1) }, /* Central European */
-  { "CEST",     tDAYZONE,  HOUR ( 1) }, /* Central European Summer */
-  { "MET",      tZONE,     HOUR ( 1) }, /* Middle European */
-  { "MEZ",      tZONE,     HOUR ( 1) }, /* Middle European */
-  { "MEST",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
-  { "MESZ",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
-  { "EET",      tZONE,     HOUR ( 2) }, /* Eastern European */
-  { "EEST",     tDAYZONE,  HOUR ( 2) }, /* Eastern European Summer */
-  { "CAT",      tZONE,     HOUR ( 2) }, /* Central Africa */
-  { "SAST",     tZONE,     HOUR ( 2) }, /* South Africa Standard */
-  { "EAT",      tZONE,     HOUR ( 3) }, /* East Africa */
-  { "MSK",      tZONE,     HOUR ( 3) }, /* Moscow */
-  { "MSD",      tDAYZONE,  HOUR ( 3) }, /* Moscow Daylight */
-  { "IST",      tZONE,    (HOUR ( 5) + 30) },   /* India Standard */
-  { "SGT",      tZONE,     HOUR ( 8) }, /* Singapore */
-  { "KST",      tZONE,     HOUR ( 9) }, /* Korea Standard */
-  { "JST",      tZONE,     HOUR ( 9) }, /* Japan Standard */
-  { "GST",      tZONE,     HOUR (10) }, /* Guam Standard */
-  { "NZST",     tZONE,     HOUR (12) }, /* New Zealand Standard */
-  { "NZDT",     tDAYZONE,  HOUR (12) }, /* New Zealand Daylight */
-  { NULL, 0, 0 }
-};
-
-/* Military time zone table. */
-static table const military_table[] =
-{
-  { "A", tZONE, -HOUR ( 1) },
-  { "B", tZONE, -HOUR ( 2) },
-  { "C", tZONE, -HOUR ( 3) },
-  { "D", tZONE, -HOUR ( 4) },
-  { "E", tZONE, -HOUR ( 5) },
-  { "F", tZONE, -HOUR ( 6) },
-  { "G", tZONE, -HOUR ( 7) },
-  { "H", tZONE, -HOUR ( 8) },
-  { "I", tZONE, -HOUR ( 9) },
-  { "K", tZONE, -HOUR (10) },
-  { "L", tZONE, -HOUR (11) },
-  { "M", tZONE, -HOUR (12) },
-  { "N", tZONE,  HOUR ( 1) },
-  { "O", tZONE,  HOUR ( 2) },
-  { "P", tZONE,  HOUR ( 3) },
-  { "Q", tZONE,  HOUR ( 4) },
-  { "R", tZONE,  HOUR ( 5) },
-  { "S", tZONE,  HOUR ( 6) },
-  { "T", tZONE,  HOUR ( 7) },
-  { "U", tZONE,  HOUR ( 8) },
-  { "V", tZONE,  HOUR ( 9) },
-  { "W", tZONE,  HOUR (10) },
-  { "X", tZONE,  HOUR (11) },
-  { "Y", tZONE,  HOUR (12) },
-  { "Z", tZONE,  HOUR ( 0) },
-  { NULL, 0, 0 }
-};
-
-\f
-
-/* Convert a time zone expressed as HH:MM into an integer count of
-   minutes.  If MM is negative, then S is of the form HHMM and needs
-   to be picked apart; otherwise, S is of the form HH.  As specified in
-   http://www.opengroup.org/susv3xbd/xbd_chap08.html#tag_08_03, allow
-   only valid TZ range, and consider first two digits as hours, if no
-   minutes specified.  */
-
-static long int
-time_zone_hhmm (parser_control *pc, textint s, long int mm)
-{
-  long int n_minutes;
-
-  /* If the length of S is 1 or 2 and no minutes are specified,
-     interpret it as a number of hours.  */
-  if (s.digits <= 2 && mm < 0)
-    s.value *= 100;
-
-  if (mm < 0)
-    n_minutes = (s.value / 100) * 60 + s.value % 100;
-  else
-    n_minutes = s.value * 60 + (s.negative ? -mm : mm);
-
-  /* If the absolute number of minutes is larger than 24 hours,
-     arrange to reject it by incrementing pc->zones_seen.  Thus,
-     we allow only values in the range UTC-24:00 to UTC+24:00.  */
-  if (24 * 60 < abs (n_minutes))
-    pc->zones_seen++;
-
-  return n_minutes;
-}
-
-static int
-to_hour (long int hours, int meridian)
-{
-  switch (meridian)
-    {
-    default: /* Pacify GCC.  */
-    case MER24:
-      return 0 <= hours && hours < 24 ? hours : -1;
-    case MERam:
-      return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1;
-    case MERpm:
-      return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1;
-    }
-}
-
-static long int
-to_year (textint textyear)
-{
-  long int year = textyear.value;
-
-  if (year < 0)
-    year = -year;
-
-  /* XPG4 suggests that years 00-68 map to 2000-2068, and
-     years 69-99 map to 1969-1999.  */
-  else if (textyear.digits == 2)
-    year += year < 69 ? 2000 : 1900;
-
-  return year;
-}
-
-static table const *
-lookup_zone (parser_control const *pc, char const *name)
-{
-  table const *tp;
-
-  for (tp = universal_time_zone_table; tp->name; tp++)
-    if (strcmp (name, tp->name) == 0)
-      return tp;
-
-  /* Try local zone abbreviations before those in time_zone_table, as
-     the local ones are more likely to be right.  */
-  for (tp = pc->local_time_zone_table; tp->name; tp++)
-    if (strcmp (name, tp->name) == 0)
-      return tp;
-
-  for (tp = time_zone_table; tp->name; tp++)
-    if (strcmp (name, tp->name) == 0)
-      return tp;
-
-  return NULL;
-}
-
-#if ! HAVE_TM_GMTOFF
-/* Yield the difference between *A and *B,
-   measured in seconds, ignoring leap seconds.
-   The body of this function is taken directly from the GNU C Library;
-   see src/strftime.c.  */
-static long int
-tm_diff (struct tm const *a, struct tm const *b)
-{
-  /* Compute intervening leap days correctly even if year is negative.
-     Take care to avoid int overflow in leap day calculations.  */
-  int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
-  int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
-  int a100 = a4 / 25 - (a4 % 25 < 0);
-  int b100 = b4 / 25 - (b4 % 25 < 0);
-  int a400 = SHR (a100, 2);
-  int b400 = SHR (b100, 2);
-  int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
-  long int ayear = a->tm_year;
-  long int years = ayear - b->tm_year;
-  long int days = (365 * years + intervening_leap_days
-                   + (a->tm_yday - b->tm_yday));
-  return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
-                + (a->tm_min - b->tm_min))
-          + (a->tm_sec - b->tm_sec));
-}
-#endif /* ! HAVE_TM_GMTOFF */
-
-static table const *
-lookup_word (parser_control const *pc, char *word)
-{
-  char *p;
-  char *q;
-  size_t wordlen;
-  table const *tp;
-  bool period_found;
-  bool abbrev;
-
-  /* Make it uppercase.  */
-  for (p = word; *p; p++)
-    {
-      unsigned char ch = *p;
-      *p = c_toupper (ch);
-    }
-
-  for (tp = meridian_table; tp->name; tp++)
-    if (strcmp (word, tp->name) == 0)
-      return tp;
-
-  /* See if we have an abbreviation for a month. */
-  wordlen = strlen (word);
-  abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');
-
-  for (tp = month_and_day_table; tp->name; tp++)
-    if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)
-      return tp;
-
-  if ((tp = lookup_zone (pc, word)))
-    return tp;
-
-  if (strcmp (word, dst_table[0].name) == 0)
-    return dst_table;
-
-  for (tp = time_units_table; tp->name; tp++)
-    if (strcmp (word, tp->name) == 0)
-      return tp;
-
-  /* Strip off any plural and try the units table again. */
-  if (word[wordlen - 1] == 'S')
-    {
-      word[wordlen - 1] = '\0';
-      for (tp = time_units_table; tp->name; tp++)
-        if (strcmp (word, tp->name) == 0)
-          return tp;
-      word[wordlen - 1] = 'S';  /* For "this" in relative_time_table.  */
-    }
-
-  for (tp = relative_time_table; tp->name; tp++)
-    if (strcmp (word, tp->name) == 0)
-      return tp;
-
-  /* Military time zones. */
-  if (wordlen == 1)
-    for (tp = military_table; tp->name; tp++)
-      if (word[0] == tp->name[0])
-        return tp;
-
-  /* Drop out any periods and try the time zone table again. */
-  for (period_found = false, p = q = word; (*p = *q); q++)
-    if (*q == '.')
-      period_found = true;
-    else
-      p++;
-  if (period_found && (tp = lookup_zone (pc, word)))
-    return tp;
-
-  return NULL;
-}
-
-static int
-yylex (YYSTYPE *lvalp, parser_control *pc)
-{
-  unsigned char c;
-  size_t count;
-
-  for (;;)
-    {
-      while (c = *pc->input, c_isspace (c))
-        pc->input++;
-
-      if (ISDIGIT (c) || c == '-' || c == '+')
-        {
-          char const *p;
-          int sign;
-          unsigned long int value;
-          if (c == '-' || c == '+')
-            {
-              sign = c == '-' ? -1 : 1;
-              while (c = *++pc->input, c_isspace (c))
-                continue;
-              if (! ISDIGIT (c))
-                /* skip the '-' sign */
-                continue;
-            }
-          else
-            sign = 0;
-          p = pc->input;
-          for (value = 0; ; value *= 10)
-            {
-              unsigned long int value1 = value + (c - '0');
-              if (value1 < value)
-                return '?';
-              value = value1;
-              c = *++p;
-              if (! ISDIGIT (c))
-                break;
-              if (ULONG_MAX / 10 < value)
-                return '?';
-            }
-          if ((c == '.' || c == ',') && ISDIGIT (p[1]))
-            {
-              time_t s;
-              int ns;
-              int digits;
-              unsigned long int value1;
-
-              /* Check for overflow when converting value to time_t.  */
-              if (sign < 0)
-                {
-                  s = - value;
-                  if (0 < s)
-                    return '?';
-                  value1 = -s;
-                }
-              else
-                {
-                  s = value;
-                  if (s < 0)
-                    return '?';
-                  value1 = s;
-                }
-              if (value != value1)
-                return '?';
-
-              /* Accumulate fraction, to ns precision.  */
-              p++;
-              ns = *p++ - '0';
-              for (digits = 2; digits <= LOG10_BILLION; digits++)
-                {
-                  ns *= 10;
-                  if (ISDIGIT (*p))
-                    ns += *p++ - '0';
-                }
-
-              /* Skip excess digits, truncating toward -Infinity.  */
-              if (sign < 0)
-                for (; ISDIGIT (*p); p++)
-                  if (*p != '0')
-                    {
-                      ns++;
-                      break;
-                    }
-              while (ISDIGIT (*p))
-                p++;
-
-              /* Adjust to the timespec convention, which is that
-                 tv_nsec is always a positive offset even if tv_sec is
-                 negative.  */
-              if (sign < 0 && ns)
-                {
-                  s--;
-                  if (! (s < 0))
-                    return '?';
-                  ns = BILLION - ns;
-                }
-
-              lvalp->timespec.tv_sec = s;
-              lvalp->timespec.tv_nsec = ns;
-              pc->input = p;
-              return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER;
-            }
-          else
-            {
-              lvalp->textintval.negative = sign < 0;
-              if (sign < 0)
-                {
-                  lvalp->textintval.value = - value;
-                  if (0 < lvalp->textintval.value)
-                    return '?';
-                }
-              else
-                {
-                  lvalp->textintval.value = value;
-                  if (lvalp->textintval.value < 0)
-                    return '?';
-                }
-              lvalp->textintval.digits = p - pc->input;
-              pc->input = p;
-              return sign ? tSNUMBER : tUNUMBER;
-            }
-        }
-
-      if (c_isalpha (c))
-        {
-          char buff[20];
-          char *p = buff;
-          table const *tp;
-
-          do
-            {
-              if (p < buff + sizeof buff - 1)
-                *p++ = c;
-              c = *++pc->input;
-            }
-          while (c_isalpha (c) || c == '.');
-
-          *p = '\0';
-          tp = lookup_word (pc, buff);
-          if (! tp)
-            return '?';
-          lvalp->intval = tp->value;
-          return tp->type;
-        }
-
-      if (c != '(')
-        return *pc->input++;
-      count = 0;
-      do
-        {
-          c = *pc->input++;
-          if (c == '\0')
-            return c;
-          if (c == '(')
-            count++;
-          else if (c == ')')
-            count--;
-        }
-      while (count != 0);
-    }
-}
-
-/* Do nothing if the parser reports an error.  */
-static int
-yyerror (parser_control const *pc _GL_UNUSED,
-         char const *s _GL_UNUSED)
-{
-  return 0;
-}
-
-/* If *TM0 is the old and *TM1 is the new value of a struct tm after
-   passing it to mktime, return true if it's OK that mktime returned T.
-   It's not OK if *TM0 has out-of-range members.  */
-
-static bool
-mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t)
-{
-  if (t == (time_t) -1)
-    {
-      /* Guard against falsely reporting an error when parsing a time
-         stamp that happens to equal (time_t) -1, on a host that
-         supports such a time stamp.  */
-      tm1 = localtime (&t);
-      if (!tm1)
-        return false;
-    }
-
-  return ! ((tm0->tm_sec ^ tm1->tm_sec)
-            | (tm0->tm_min ^ tm1->tm_min)
-            | (tm0->tm_hour ^ tm1->tm_hour)
-            | (tm0->tm_mday ^ tm1->tm_mday)
-            | (tm0->tm_mon ^ tm1->tm_mon)
-            | (tm0->tm_year ^ tm1->tm_year));
-}
-
-/* A reasonable upper bound for the size of ordinary TZ strings.
-   Use heap allocation if TZ's length exceeds this.  */
-enum { TZBUFSIZE = 100 };
-
-/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated
-   otherwise.  */
-static char *
-get_tz (char tzbuf[TZBUFSIZE])
-{
-  char *tz = getenv ("TZ");
-  if (tz)
-    {
-      size_t tzsize = strlen (tz) + 1;
-      tz = (tzsize <= TZBUFSIZE
-            ? memcpy (tzbuf, tz, tzsize)
-            : xmemdup (tz, tzsize));
-    }
-  return tz;
-}
-
-/* Parse a date/time string, storing the resulting time value into *RESULT.
-   The string itself is pointed to by P.  Return true if successful.
-   P can be an incomplete or relative time specification; if so, use
-   *NOW as the basis for the returned time.  */
-bool
-get_date (struct timespec *result, char const *p, struct timespec const *now)
-{
-  time_t Start;
-  long int Start_ns;
-  struct tm const *tmp;
-  struct tm tm;
-  struct tm tm0;
-  parser_control pc;
-  struct timespec gettime_buffer;
-  unsigned char c;
-  bool tz_was_altered = false;
-  char *tz0 = NULL;
-  char tz0buf[TZBUFSIZE];
-  bool ok = true;
-
-  if (! now)
-    {
-      gettime (&gettime_buffer);
-      now = &gettime_buffer;
-    }
-
-  Start = now->tv_sec;
-  Start_ns = now->tv_nsec;
-
-  tmp = localtime (&now->tv_sec);
-  if (! tmp)
-    return false;
-
-  while (c = *p, c_isspace (c))
-    p++;
-
-  if (strncmp (p, "TZ=\"", 4) == 0)
-    {
-      char const *tzbase = p + 4;
-      size_t tzsize = 1;
-      char const *s;
-
-      for (s = tzbase; *s; s++, tzsize++)
-        if (*s == '\\')
-          {
-            s++;
-            if (! (*s == '\\' || *s == '"'))
-              break;
-          }
-        else if (*s == '"')
-          {
-            char *z;
-            char *tz1;
-            char tz1buf[TZBUFSIZE];
-            bool large_tz = TZBUFSIZE < tzsize;
-            bool setenv_ok;
-            /* Free tz0, in case this is the 2nd or subsequent time through. */
-            free (tz0);
-            tz0 = get_tz (tz0buf);
-            z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
-            for (s = tzbase; *s != '"'; s++)
-              *z++ = *(s += *s == '\\');
-            *z = '\0';
-            setenv_ok = setenv ("TZ", tz1, 1) == 0;
-            if (large_tz)
-              free (tz1);
-            if (!setenv_ok)
-              goto fail;
-            tz_was_altered = true;
-            p = s + 1;
-          }
-    }
-
-  /* As documented, be careful to treat the empty string just like
-     a date string of "0".  Without this, an empty string would be
-     declared invalid when parsed during a DST transition.  */
-  if (*p == '\0')
-    p = "0";
-
-  pc.input = p;
-  pc.year.value = tmp->tm_year;
-  pc.year.value += TM_YEAR_BASE;
-  pc.year.digits = 0;
-  pc.month = tmp->tm_mon + 1;
-  pc.day = tmp->tm_mday;
-  pc.hour = tmp->tm_hour;
-  pc.minutes = tmp->tm_min;
-  pc.seconds.tv_sec = tmp->tm_sec;
-  pc.seconds.tv_nsec = Start_ns;
-  tm.tm_isdst = tmp->tm_isdst;
-
-  pc.meridian = MER24;
-  pc.rel = RELATIVE_TIME_0;
-  pc.timespec_seen = false;
-  pc.rels_seen = false;
-  pc.dates_seen = 0;
-  pc.days_seen = 0;
-  pc.times_seen = 0;
-  pc.local_zones_seen = 0;
-  pc.dsts_seen = 0;
-  pc.zones_seen = 0;
-
-#if HAVE_STRUCT_TM_TM_ZONE
-  pc.local_time_zone_table[0].name = tmp->tm_zone;
-  pc.local_time_zone_table[0].type = tLOCAL_ZONE;
-  pc.local_time_zone_table[0].value = tmp->tm_isdst;
-  pc.local_time_zone_table[1].name = NULL;
-
-  /* Probe the names used in the next three calendar quarters, looking
-     for a tm_isdst different from the one we already have.  */
-  {
-    int quarter;
-    for (quarter = 1; quarter <= 3; quarter++)
-      {
-        time_t probe = Start + quarter * (90 * 24 * 60 * 60);
-        struct tm const *probe_tm = localtime (&probe);
-        if (probe_tm && probe_tm->tm_zone
-            && probe_tm->tm_isdst != pc.local_time_zone_table[0].value)
-          {
-              {
-                pc.local_time_zone_table[1].name = probe_tm->tm_zone;
-                pc.local_time_zone_table[1].type = tLOCAL_ZONE;
-                pc.local_time_zone_table[1].value = probe_tm->tm_isdst;
-                pc.local_time_zone_table[2].name = NULL;
-              }
-            break;
-          }
-      }
-  }
-#else
-#if HAVE_TZNAME
-  {
-# if !HAVE_DECL_TZNAME
-    extern char *tzname[];
-# endif
-    int i;
-    for (i = 0; i < 2; i++)
-      {
-        pc.local_time_zone_table[i].name = tzname[i];
-        pc.local_time_zone_table[i].type = tLOCAL_ZONE;
-        pc.local_time_zone_table[i].value = i;
-      }
-    pc.local_time_zone_table[i].name = NULL;
-  }
-#else
-  pc.local_time_zone_table[0].name = NULL;
-#endif
-#endif
-
-  if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name
-      && ! strcmp (pc.local_time_zone_table[0].name,
-                   pc.local_time_zone_table[1].name))
-    {
-      /* This locale uses the same abbrevation for standard and
-         daylight times.  So if we see that abbreviation, we don't
-         know whether it's daylight time.  */
-      pc.local_time_zone_table[0].value = -1;
-      pc.local_time_zone_table[1].name = NULL;
-    }
-
-  if (yyparse (&pc) != 0)
-    goto fail;
-
-  if (pc.timespec_seen)
-    *result = pc.seconds;
-  else
-    {
-      if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
-               | (pc.local_zones_seen + pc.zones_seen)))
-        goto fail;
-
-      tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
-      tm.tm_mon = pc.month - 1;
-      tm.tm_mday = pc.day;
-      if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
-        {
-          tm.tm_hour = to_hour (pc.hour, pc.meridian);
-          if (tm.tm_hour < 0)
-            goto fail;
-          tm.tm_min = pc.minutes;
-          tm.tm_sec = pc.seconds.tv_sec;
-        }
-      else
-        {
-          tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
-          pc.seconds.tv_nsec = 0;
-        }
-
-      /* Let mktime deduce tm_isdst if we have an absolute time stamp.  */
-      if (pc.dates_seen | pc.days_seen | pc.times_seen)
-        tm.tm_isdst = -1;
-
-      /* But if the input explicitly specifies local time with or without
-         DST, give mktime that information.  */
-      if (pc.local_zones_seen)
-        tm.tm_isdst = pc.local_isdst;
-
-      tm0 = tm;
-
-      Start = mktime (&tm);
-
-      if (! mktime_ok (&tm0, &tm, Start))
-        {
-          if (! pc.zones_seen)
-            goto fail;
-          else
-            {
-              /* Guard against falsely reporting errors near the time_t
-                 boundaries when parsing times in other time zones.  For
-                 example, suppose the input string "1969-12-31 23:00:00 -0100",
-                 the current time zone is 8 hours ahead of UTC, and the min
-                 time_t value is 1970-01-01 00:00:00 UTC.  Then the min
-                 localtime value is 1970-01-01 08:00:00, and mktime will
-                 therefore fail on 1969-12-31 23:00:00.  To work around the
-                 problem, set the time zone to 1 hour behind UTC temporarily
-                 by setting TZ="XXX1:00" and try mktime again.  */
-
-              long int time_zone = pc.time_zone;
-              long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone;
-              long int abs_time_zone_hour = abs_time_zone / 60;
-              int abs_time_zone_min = abs_time_zone % 60;
-              char tz1buf[sizeof "XXX+0:00"
-                          + sizeof pc.time_zone * CHAR_BIT / 3];
-              if (!tz_was_altered)
-                tz0 = get_tz (tz0buf);
-              sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
-                       abs_time_zone_hour, abs_time_zone_min);
-              if (setenv ("TZ", tz1buf, 1) != 0)
-                goto fail;
-              tz_was_altered = true;
-              tm = tm0;
-              Start = mktime (&tm);
-              if (! mktime_ok (&tm0, &tm, Start))
-                goto fail;
-            }
-        }
-
-      if (pc.days_seen && ! pc.dates_seen)
-        {
-          tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7
-                         + 7 * (pc.day_ordinal
-                                - (0 < pc.day_ordinal
-                                   && tm.tm_wday != pc.day_number)));
-          tm.tm_isdst = -1;
-          Start = mktime (&tm);
-          if (Start == (time_t) -1)
-            goto fail;
-        }
-
-      /* Add relative date.  */
-      if (pc.rel.year | pc.rel.month | pc.rel.day)
-        {
-          int year = tm.tm_year + pc.rel.year;
-          int month = tm.tm_mon + pc.rel.month;
-          int day = tm.tm_mday + pc.rel.day;
-          if (((year < tm.tm_year) ^ (pc.rel.year < 0))
-              | ((month < tm.tm_mon) ^ (pc.rel.month < 0))
-              | ((day < tm.tm_mday) ^ (pc.rel.day < 0)))
-            goto fail;
-          tm.tm_year = year;
-          tm.tm_mon = month;
-          tm.tm_mday = day;
-          tm.tm_hour = tm0.tm_hour;
-          tm.tm_min = tm0.tm_min;
-          tm.tm_sec = tm0.tm_sec;
-          tm.tm_isdst = tm0.tm_isdst;
-          Start = mktime (&tm);
-          if (Start == (time_t) -1)
-            goto fail;
-        }
-
-      /* The only "output" of this if-block is an updated Start value,
-         so this block must follow others that clobber Start.  */
-      if (pc.zones_seen)
-        {
-          long int delta = pc.time_zone * 60;
-          time_t t1;
-#ifdef HAVE_TM_GMTOFF
-          delta -= tm.tm_gmtoff;
-#else
-          time_t t = Start;
-          struct tm const *gmt = gmtime (&t);
-          if (! gmt)
-            goto fail;
-          delta -= tm_diff (&tm, gmt);
-#endif
-          t1 = Start - delta;
-          if ((Start < t1) != (delta < 0))
-            goto fail;  /* time_t overflow */
-          Start = t1;
-        }
-
-      /* Add relative hours, minutes, and seconds.  On hosts that support
-         leap seconds, ignore the possibility of leap seconds; e.g.,
-         "+ 10 minutes" adds 600 seconds, even if one of them is a
-         leap second.  Typically this is not what the user wants, but it's
-         too hard to do it the other way, because the time zone indicator
-         must be applied before relative times, and if mktime is applied
-         again the time zone will be lost.  */
-      {
-        long int sum_ns = pc.seconds.tv_nsec + pc.rel.ns;
-        long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION;
-        time_t t0 = Start;
-        long int d1 = 60 * 60 * pc.rel.hour;
-        time_t t1 = t0 + d1;
-        long int d2 = 60 * pc.rel.minutes;
-        time_t t2 = t1 + d2;
-        long_time_t d3 = pc.rel.seconds;
-        long_time_t t3 = t2 + d3;
-        long int d4 = (sum_ns - normalized_ns) / BILLION;
-        long_time_t t4 = t3 + d4;
-        time_t t5 = t4;
-
-        if ((d1 / (60 * 60) ^ pc.rel.hour)
-            | (d2 / 60 ^ pc.rel.minutes)
-            | ((t1 < t0) ^ (d1 < 0))
-            | ((t2 < t1) ^ (d2 < 0))
-            | ((t3 < t2) ^ (d3 < 0))
-            | ((t4 < t3) ^ (d4 < 0))
-            | (t5 != t4))
-          goto fail;
-
-        result->tv_sec = t5;
-        result->tv_nsec = normalized_ns;
-      }
-    }
-
-  goto done;
-
- fail:
-  ok = false;
- done:
-  if (tz_was_altered)
-    ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
-  if (tz0 != tz0buf)
-    free (tz0);
-  return ok;
-}
-
-#if TEST
-
-int
-main (int ac, char **av)
-{
-  char buff[BUFSIZ];
-
-  printf ("Enter date, or blank line to exit.\n\t> ");
-  fflush (stdout);
-
-  buff[BUFSIZ - 1] = '\0';
-  while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
-    {
-      struct timespec d;
-      struct tm const *tm;
-      if (! get_date (&d, buff, NULL))
-        printf ("Bad format - couldn't convert.\n");
-      else if (! (tm = localtime (&d.tv_sec)))
-        {
-          long int sec = d.tv_sec;
-          printf ("localtime (%ld) failed\n", sec);
-        }
-      else
-        {
-          int ns = d.tv_nsec;
-          printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
-                  tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
-                  tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
-        }
-      printf ("\t> ");
-      fflush (stdout);
-    }
-  return 0;
-}
-#endif /* TEST */
-
diff --git a/gnu/getdate.h b/gnu/getdate.h
deleted file mode 100644 (file)
index 380b8ee..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Parse a string into an internal time stamp.
-
-   Copyright (C) 1995, 1997, 1998, 2003, 2004, 2007, 2009, 2010 Free Software
-   Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include <stdbool.h>
-#include <time.h>
-
-bool get_date (struct timespec *, char const *, struct timespec const *);
diff --git a/gnu/getdate.y b/gnu/getdate.y
deleted file mode 100644 (file)
index 445865b..0000000
+++ /dev/null
@@ -1,1572 +0,0 @@
-%{
-/* Parse a string into an internal time stamp.
-
-   Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-   2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Originally written by Steven M. Bellovin <smb@research.att.com> while
-   at the University of North Carolina at Chapel Hill.  Later tweaked by
-   a couple of people on Usenet.  Completely overhauled by Rich $alz
-   <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
-
-   Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do
-   the right thing about local DST.  Also modified by Paul Eggert
-   <eggert@cs.ucla.edu> in February 2004 to support
-   nanosecond-resolution time stamps, and in October 2004 to support
-   TZ strings in dates.  */
-
-/* FIXME: Check for arithmetic overflow in all cases, not just
-   some of them.  */
-
-#include <config.h>
-
-#include "getdate.h"
-
-#include "intprops.h"
-#include "timespec.h"
-#include "verify.h"
-
-/* There's no need to extend the stack, so there's no need to involve
-   alloca.  */
-#define YYSTACK_USE_ALLOCA 0
-
-/* Tell Bison how much stack space is needed.  20 should be plenty for
-   this grammar, which is not right recursive.  Beware setting it too
-   high, since that might cause problems on machines whose
-   implementations have lame stack-overflow checking.  */
-#define YYMAXDEPTH 20
-#define YYINITDEPTH YYMAXDEPTH
-
-/* Since the code of getdate.y is not included in the Emacs executable
-   itself, there is no need to #define static in this file.  Even if
-   the code were included in the Emacs executable, it probably
-   wouldn't do any harm to #undef it here; this will only cause
-   problems if we try to write to a static variable, which I don't
-   think this code needs to do.  */
-#ifdef emacs
-# undef static
-#endif
-
-#include <c-ctype.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "xalloc.h"
-
-
-/* ISDIGIT differs from isdigit, as follows:
-   - Its arg may be any int or unsigned int; it need not be an unsigned char
-     or EOF.
-   - It's typically faster.
-   POSIX says that only '0' through '9' are digits.  Prefer ISDIGIT to
-   isdigit unless it's important to use the locale's definition
-   of `digit' even when the host does not conform to POSIX.  */
-#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
-
-/* Shift A right by B bits portably, by dividing A by 2**B and
-   truncating towards minus infinity.  A and B should be free of side
-   effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
-   INT_BITS is the number of useful bits in an int.  GNU code can
-   assume that INT_BITS is at least 32.
-
-   ISO C99 says that A >> B is implementation-defined if A < 0.  Some
-   implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
-   right in the usual way when A < 0, so SHR falls back on division if
-   ordinary A >> B doesn't seem to be the usual signed shift.  */
-#define SHR(a, b)       \
-  (-1 >> 1 == -1        \
-   ? (a) >> (b)         \
-   : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
-
-#define EPOCH_YEAR 1970
-#define TM_YEAR_BASE 1900
-
-#define HOUR(x) ((x) * 60)
-
-/* long_time_t is a signed integer type that contains all time_t values.  */
-verify (TYPE_IS_INTEGER (time_t));
-#if TIME_T_FITS_IN_LONG_INT
-typedef long int long_time_t;
-#else
-typedef time_t long_time_t;
-#endif
-
-/* Lots of this code assumes time_t and time_t-like values fit into
-   long_time_t.  */
-verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
-        && TYPE_MAXIMUM (time_t) <= TYPE_MAXIMUM (long_time_t));
-
-/* FIXME: It also assumes that signed integer overflow silently wraps around,
-   but this is not true any more with recent versions of GCC 4.  */
-
-/* An integer value, and the number of digits in its textual
-   representation.  */
-typedef struct
-{
-  bool negative;
-  long int value;
-  size_t digits;
-} textint;
-
-/* An entry in the lexical lookup table.  */
-typedef struct
-{
-  char const *name;
-  int type;
-  int value;
-} table;
-
-/* Meridian: am, pm, or 24-hour style.  */
-enum { MERam, MERpm, MER24 };
-
-enum { BILLION = 1000000000, LOG10_BILLION = 9 };
-
-/* Relative times.  */
-typedef struct
-{
-  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
-  long int year;
-  long int month;
-  long int day;
-  long int hour;
-  long int minutes;
-  long_time_t seconds;
-  long int ns;
-} relative_time;
-
-#if HAVE_COMPOUND_LITERALS
-# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
-#else
-static relative_time const RELATIVE_TIME_0;
-#endif
-
-/* Information passed to and from the parser.  */
-typedef struct
-{
-  /* The input string remaining to be parsed. */
-  const char *input;
-
-  /* N, if this is the Nth Tuesday.  */
-  long int day_ordinal;
-
-  /* Day of week; Sunday is 0.  */
-  int day_number;
-
-  /* tm_isdst flag for the local zone.  */
-  int local_isdst;
-
-  /* Time zone, in minutes east of UTC.  */
-  long int time_zone;
-
-  /* Style used for time.  */
-  int meridian;
-
-  /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds.  */
-  textint year;
-  long int month;
-  long int day;
-  long int hour;
-  long int minutes;
-  struct timespec seconds; /* includes nanoseconds */
-
-  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
-  relative_time rel;
-
-  /* Presence or counts of nonterminals of various flavors parsed so far.  */
-  bool timespec_seen;
-  bool rels_seen;
-  size_t dates_seen;
-  size_t days_seen;
-  size_t local_zones_seen;
-  size_t dsts_seen;
-  size_t times_seen;
-  size_t zones_seen;
-
-  /* Table of local time zone abbrevations, terminated by a null entry.  */
-  table local_time_zone_table[3];
-} parser_control;
-
-union YYSTYPE;
-static int yylex (union YYSTYPE *, parser_control *);
-static int yyerror (parser_control const *, char const *);
-static long int time_zone_hhmm (parser_control *, textint, long int);
-
-/* Extract into *PC any date and time info from a string of digits
-   of the form e.g., YYYYMMDD, YYMMDD, HHMM, HH (and sometimes YYY,
-   YYYY, ...).  */
-static void
-digits_to_date_time (parser_control *pc, textint text_int)
-{
-  if (pc->dates_seen && ! pc->year.digits
-      && ! pc->rels_seen && (pc->times_seen || 2 < text_int.digits))
-    pc->year = text_int;
-  else
-    {
-      if (4 < text_int.digits)
-        {
-          pc->dates_seen++;
-          pc->day = text_int.value % 100;
-          pc->month = (text_int.value / 100) % 100;
-          pc->year.value = text_int.value / 10000;
-          pc->year.digits = text_int.digits - 4;
-        }
-      else
-        {
-          pc->times_seen++;
-          if (text_int.digits <= 2)
-            {
-              pc->hour = text_int.value;
-              pc->minutes = 0;
-            }
-          else
-            {
-              pc->hour = text_int.value / 100;
-              pc->minutes = text_int.value % 100;
-            }
-          pc->seconds.tv_sec = 0;
-          pc->seconds.tv_nsec = 0;
-          pc->meridian = MER24;
-        }
-    }
-}
-
-/* Increment PC->rel by FACTOR * REL (FACTOR is 1 or -1).  */
-static void
-apply_relative_time (parser_control *pc, relative_time rel, int factor)
-{
-  pc->rel.ns += factor * rel.ns;
-  pc->rel.seconds += factor * rel.seconds;
-  pc->rel.minutes += factor * rel.minutes;
-  pc->rel.hour += factor * rel.hour;
-  pc->rel.day += factor * rel.day;
-  pc->rel.month += factor * rel.month;
-  pc->rel.year += factor * rel.year;
-  pc->rels_seen = true;
-}
-
-/* Set PC-> hour, minutes, seconds and nanoseconds members from arguments.  */
-static void
-set_hhmmss (parser_control *pc, long int hour, long int minutes,
-            time_t sec, long int nsec)
-{
-  pc->hour = hour;
-  pc->minutes = minutes;
-  pc->seconds.tv_sec = sec;
-  pc->seconds.tv_nsec = nsec;
-}
-
-%}
-
-/* We want a reentrant parser, even if the TZ manipulation and the calls to
-   localtime and gmtime are not reentrant.  */
-%pure-parser
-%parse-param { parser_control *pc }
-%lex-param { parser_control *pc }
-
-/* This grammar has 20 shift/reduce conflicts. */
-%expect 20
-
-%union
-{
-  long int intval;
-  textint textintval;
-  struct timespec timespec;
-  relative_time rel;
-}
-
-%token tAGO tDST
-
-%token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT
-%token <intval> tDAY_UNIT tDAY_SHIFT
-
-%token <intval> tDAY tDAYZONE tLOCAL_ZONE tMERIDIAN
-%token <intval> tMONTH tORDINAL tZONE
-
-%token <textintval> tSNUMBER tUNUMBER
-%token <timespec> tSDECIMAL_NUMBER tUDECIMAL_NUMBER
-
-%type <intval> o_colon_minutes o_merid
-%type <timespec> seconds signed_seconds unsigned_seconds
-
-%type <rel> relunit relunit_snumber dayshift
-
-%%
-
-spec:
-    timespec
-  | items
-  ;
-
-timespec:
-    '@' seconds
-      {
-        pc->seconds = $2;
-        pc->timespec_seen = true;
-      }
-  ;
-
-items:
-    /* empty */
-  | items item
-  ;
-
-item:
-    time
-      { pc->times_seen++; }
-  | local_zone
-      { pc->local_zones_seen++; }
-  | zone
-      { pc->zones_seen++; }
-  | date
-      { pc->dates_seen++; }
-  | day
-      { pc->days_seen++; }
-  | rel
-  | number
-  | hybrid
-  ;
-
-time:
-    tUNUMBER tMERIDIAN
-      {
-        set_hhmmss (pc, $1.value, 0, 0, 0);
-        pc->meridian = $2;
-      }
-  | tUNUMBER ':' tUNUMBER o_merid
-      {
-        set_hhmmss (pc, $1.value, $3.value, 0, 0);
-        pc->meridian = $4;
-      }
-  | tUNUMBER ':' tUNUMBER tSNUMBER o_colon_minutes
-      {
-        set_hhmmss (pc, $1.value, $3.value, 0, 0);
-        pc->meridian = MER24;
-        pc->zones_seen++;
-        pc->time_zone = time_zone_hhmm (pc, $4, $5);
-      }
-  | tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_merid
-      {
-        set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
-        pc->meridian = $6;
-      }
-  | tUNUMBER ':' tUNUMBER ':' unsigned_seconds tSNUMBER o_colon_minutes
-      {
-        set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
-        pc->meridian = MER24;
-        pc->zones_seen++;
-        pc->time_zone = time_zone_hhmm (pc, $6, $7);
-      }
-  ;
-
-local_zone:
-    tLOCAL_ZONE
-      {
-        pc->local_isdst = $1;
-        pc->dsts_seen += (0 < $1);
-      }
-  | tLOCAL_ZONE tDST
-      {
-        pc->local_isdst = 1;
-        pc->dsts_seen += (0 < $1) + 1;
-      }
-  ;
-
-zone:
-    tZONE
-      { pc->time_zone = $1; }
-  | tZONE relunit_snumber
-      { pc->time_zone = $1;
-        apply_relative_time (pc, $2, 1); }
-  | tZONE tSNUMBER o_colon_minutes
-      { pc->time_zone = $1 + time_zone_hhmm (pc, $2, $3); }
-  | tDAYZONE
-      { pc->time_zone = $1 + 60; }
-  | tZONE tDST
-      { pc->time_zone = $1 + 60; }
-  ;
-
-day:
-    tDAY
-      {
-        pc->day_ordinal = 0;
-        pc->day_number = $1;
-      }
-  | tDAY ','
-      {
-        pc->day_ordinal = 0;
-        pc->day_number = $1;
-      }
-  | tORDINAL tDAY
-      {
-        pc->day_ordinal = $1;
-        pc->day_number = $2;
-      }
-  | tUNUMBER tDAY
-      {
-        pc->day_ordinal = $1.value;
-        pc->day_number = $2;
-      }
-  ;
-
-date:
-    tUNUMBER '/' tUNUMBER
-      {
-        pc->month = $1.value;
-        pc->day = $3.value;
-      }
-  | tUNUMBER '/' tUNUMBER '/' tUNUMBER
-      {
-        /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
-           otherwise as MM/DD/YY.
-           The goal in recognizing YYYY/MM/DD is solely to support legacy
-           machine-generated dates like those in an RCS log listing.  If
-           you want portability, use the ISO 8601 format.  */
-        if (4 <= $1.digits)
-          {
-            pc->year = $1;
-            pc->month = $3.value;
-            pc->day = $5.value;
-          }
-        else
-          {
-            pc->month = $1.value;
-            pc->day = $3.value;
-            pc->year = $5;
-          }
-      }
-  | tUNUMBER tSNUMBER tSNUMBER
-      {
-        /* ISO 8601 format.  YYYY-MM-DD.  */
-        pc->year = $1;
-        pc->month = -$2.value;
-        pc->day = -$3.value;
-      }
-  | tUNUMBER tMONTH tSNUMBER
-      {
-        /* e.g. 17-JUN-1992.  */
-        pc->day = $1.value;
-        pc->month = $2;
-        pc->year.value = -$3.value;
-        pc->year.digits = $3.digits;
-      }
-  | tMONTH tSNUMBER tSNUMBER
-      {
-        /* e.g. JUN-17-1992.  */
-        pc->month = $1;
-        pc->day = -$2.value;
-        pc->year.value = -$3.value;
-        pc->year.digits = $3.digits;
-      }
-  | tMONTH tUNUMBER
-      {
-        pc->month = $1;
-        pc->day = $2.value;
-      }
-  | tMONTH tUNUMBER ',' tUNUMBER
-      {
-        pc->month = $1;
-        pc->day = $2.value;
-        pc->year = $4;
-      }
-  | tUNUMBER tMONTH
-      {
-        pc->day = $1.value;
-        pc->month = $2;
-      }
-  | tUNUMBER tMONTH tUNUMBER
-      {
-        pc->day = $1.value;
-        pc->month = $2;
-        pc->year = $3;
-      }
-  ;
-
-rel:
-    relunit tAGO
-      { apply_relative_time (pc, $1, -1); }
-  | relunit
-      { apply_relative_time (pc, $1, 1); }
-  | dayshift
-      { apply_relative_time (pc, $1, 1); }
-  ;
-
-relunit:
-    tORDINAL tYEAR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.year = $1; }
-  | tUNUMBER tYEAR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.year = $1.value; }
-  | tYEAR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.year = 1; }
-  | tORDINAL tMONTH_UNIT
-      { $$ = RELATIVE_TIME_0; $$.month = $1; }
-  | tUNUMBER tMONTH_UNIT
-      { $$ = RELATIVE_TIME_0; $$.month = $1.value; }
-  | tMONTH_UNIT
-      { $$ = RELATIVE_TIME_0; $$.month = 1; }
-  | tORDINAL tDAY_UNIT
-      { $$ = RELATIVE_TIME_0; $$.day = $1 * $2; }
-  | tUNUMBER tDAY_UNIT
-      { $$ = RELATIVE_TIME_0; $$.day = $1.value * $2; }
-  | tDAY_UNIT
-      { $$ = RELATIVE_TIME_0; $$.day = $1; }
-  | tORDINAL tHOUR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.hour = $1; }
-  | tUNUMBER tHOUR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.hour = $1.value; }
-  | tHOUR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.hour = 1; }
-  | tORDINAL tMINUTE_UNIT
-      { $$ = RELATIVE_TIME_0; $$.minutes = $1; }
-  | tUNUMBER tMINUTE_UNIT
-      { $$ = RELATIVE_TIME_0; $$.minutes = $1.value; }
-  | tMINUTE_UNIT
-      { $$ = RELATIVE_TIME_0; $$.minutes = 1; }
-  | tORDINAL tSEC_UNIT
-      { $$ = RELATIVE_TIME_0; $$.seconds = $1; }
-  | tUNUMBER tSEC_UNIT
-      { $$ = RELATIVE_TIME_0; $$.seconds = $1.value; }
-  | tSDECIMAL_NUMBER tSEC_UNIT
-      { $$ = RELATIVE_TIME_0; $$.seconds = $1.tv_sec; $$.ns = $1.tv_nsec; }
-  | tUDECIMAL_NUMBER tSEC_UNIT
-      { $$ = RELATIVE_TIME_0; $$.seconds = $1.tv_sec; $$.ns = $1.tv_nsec; }
-  | tSEC_UNIT
-      { $$ = RELATIVE_TIME_0; $$.seconds = 1; }
-  | relunit_snumber
-  ;
-
-relunit_snumber:
-    tSNUMBER tYEAR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.year = $1.value; }
-  | tSNUMBER tMONTH_UNIT
-      { $$ = RELATIVE_TIME_0; $$.month = $1.value; }
-  | tSNUMBER tDAY_UNIT
-      { $$ = RELATIVE_TIME_0; $$.day = $1.value * $2; }
-  | tSNUMBER tHOUR_UNIT
-      { $$ = RELATIVE_TIME_0; $$.hour = $1.value; }
-  | tSNUMBER tMINUTE_UNIT
-      { $$ = RELATIVE_TIME_0; $$.minutes = $1.value; }
-  | tSNUMBER tSEC_UNIT
-      { $$ = RELATIVE_TIME_0; $$.seconds = $1.value; }
-  ;
-
-dayshift:
-    tDAY_SHIFT
-      { $$ = RELATIVE_TIME_0; $$.day = $1; }
-  ;
-
-seconds: signed_seconds | unsigned_seconds;
-
-signed_seconds:
-    tSDECIMAL_NUMBER
-  | tSNUMBER
-      { $$.tv_sec = $1.value; $$.tv_nsec = 0; }
-  ;
-
-unsigned_seconds:
-    tUDECIMAL_NUMBER
-  | tUNUMBER
-      { $$.tv_sec = $1.value; $$.tv_nsec = 0; }
-  ;
-
-number:
-    tUNUMBER
-      { digits_to_date_time (pc, $1); }
-  ;
-
-hybrid:
-    tUNUMBER relunit_snumber
-      {
-        /* Hybrid all-digit and relative offset, so that we accept e.g.,
-           "YYYYMMDD +N days" as well as "YYYYMMDD N days".  */
-        digits_to_date_time (pc, $1);
-        apply_relative_time (pc, $2, 1);
-      }
-  ;
-
-o_colon_minutes:
-    /* empty */
-      { $$ = -1; }
-  | ':' tUNUMBER
-      { $$ = $2.value; }
-  ;
-
-o_merid:
-    /* empty */
-      { $$ = MER24; }
-  | tMERIDIAN
-      { $$ = $1; }
-  ;
-
-%%
-
-static table const meridian_table[] =
-{
-  { "AM",   tMERIDIAN, MERam },
-  { "A.M.", tMERIDIAN, MERam },
-  { "PM",   tMERIDIAN, MERpm },
-  { "P.M.", tMERIDIAN, MERpm },
-  { NULL, 0, 0 }
-};
-
-static table const dst_table[] =
-{
-  { "DST", tDST, 0 }
-};
-
-static table const month_and_day_table[] =
-{
-  { "JANUARY",  tMONTH,  1 },
-  { "FEBRUARY", tMONTH,  2 },
-  { "MARCH",    tMONTH,  3 },
-  { "APRIL",    tMONTH,  4 },
-  { "MAY",      tMONTH,  5 },
-  { "JUNE",     tMONTH,  6 },
-  { "JULY",     tMONTH,  7 },
-  { "AUGUST",   tMONTH,  8 },
-  { "SEPTEMBER",tMONTH,  9 },
-  { "SEPT",     tMONTH,  9 },
-  { "OCTOBER",  tMONTH, 10 },
-  { "NOVEMBER", tMONTH, 11 },
-  { "DECEMBER", tMONTH, 12 },
-  { "SUNDAY",   tDAY,    0 },
-  { "MONDAY",   tDAY,    1 },
-  { "TUESDAY",  tDAY,    2 },
-  { "TUES",     tDAY,    2 },
-  { "WEDNESDAY",tDAY,    3 },
-  { "WEDNES",   tDAY,    3 },
-  { "THURSDAY", tDAY,    4 },
-  { "THUR",     tDAY,    4 },
-  { "THURS",    tDAY,    4 },
-  { "FRIDAY",   tDAY,    5 },
-  { "SATURDAY", tDAY,    6 },
-  { NULL, 0, 0 }
-};
-
-static table const time_units_table[] =
-{
-  { "YEAR",     tYEAR_UNIT,      1 },
-  { "MONTH",    tMONTH_UNIT,     1 },
-  { "FORTNIGHT",tDAY_UNIT,      14 },
-  { "WEEK",     tDAY_UNIT,       7 },
-  { "DAY",      tDAY_UNIT,       1 },
-  { "HOUR",     tHOUR_UNIT,      1 },
-  { "MINUTE",   tMINUTE_UNIT,    1 },
-  { "MIN",      tMINUTE_UNIT,    1 },
-  { "SECOND",   tSEC_UNIT,       1 },
-  { "SEC",      tSEC_UNIT,       1 },
-  { NULL, 0, 0 }
-};
-
-/* Assorted relative-time words. */
-static table const relative_time_table[] =
-{
-  { "TOMORROW", tDAY_SHIFT,      1 },
-  { "YESTERDAY",tDAY_SHIFT,     -1 },
-  { "TODAY",    tDAY_SHIFT,      0 },
-  { "NOW",      tDAY_SHIFT,      0 },
-  { "LAST",     tORDINAL,       -1 },
-  { "THIS",     tORDINAL,        0 },
-  { "NEXT",     tORDINAL,        1 },
-  { "FIRST",    tORDINAL,        1 },
-/*{ "SECOND",   tORDINAL,        2 }, */
-  { "THIRD",    tORDINAL,        3 },
-  { "FOURTH",   tORDINAL,        4 },
-  { "FIFTH",    tORDINAL,        5 },
-  { "SIXTH",    tORDINAL,        6 },
-  { "SEVENTH",  tORDINAL,        7 },
-  { "EIGHTH",   tORDINAL,        8 },
-  { "NINTH",    tORDINAL,        9 },
-  { "TENTH",    tORDINAL,       10 },
-  { "ELEVENTH", tORDINAL,       11 },
-  { "TWELFTH",  tORDINAL,       12 },
-  { "AGO",      tAGO,            1 },
-  { NULL, 0, 0 }
-};
-
-/* The universal time zone table.  These labels can be used even for
-   time stamps that would not otherwise be valid, e.g., GMT time
-   stamps in London during summer.  */
-static table const universal_time_zone_table[] =
-{
-  { "GMT",      tZONE,     HOUR ( 0) }, /* Greenwich Mean */
-  { "UT",       tZONE,     HOUR ( 0) }, /* Universal (Coordinated) */
-  { "UTC",      tZONE,     HOUR ( 0) },
-  { NULL, 0, 0 }
-};
-
-/* The time zone table.  This table is necessarily incomplete, as time
-   zone abbreviations are ambiguous; e.g. Australians interpret "EST"
-   as Eastern time in Australia, not as US Eastern Standard Time.
-   You cannot rely on getdate to handle arbitrary time zone
-   abbreviations; use numeric abbreviations like `-0500' instead.  */
-static table const time_zone_table[] =
-{
-  { "WET",      tZONE,     HOUR ( 0) }, /* Western European */
-  { "WEST",     tDAYZONE,  HOUR ( 0) }, /* Western European Summer */
-  { "BST",      tDAYZONE,  HOUR ( 0) }, /* British Summer */
-  { "ART",      tZONE,    -HOUR ( 3) }, /* Argentina */
-  { "BRT",      tZONE,    -HOUR ( 3) }, /* Brazil */
-  { "BRST",     tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */
-  { "NST",      tZONE,   -(HOUR ( 3) + 30) },   /* Newfoundland Standard */
-  { "NDT",      tDAYZONE,-(HOUR ( 3) + 30) },   /* Newfoundland Daylight */
-  { "AST",      tZONE,    -HOUR ( 4) }, /* Atlantic Standard */
-  { "ADT",      tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */
-  { "CLT",      tZONE,    -HOUR ( 4) }, /* Chile */
-  { "CLST",     tDAYZONE, -HOUR ( 4) }, /* Chile Summer */
-  { "EST",      tZONE,    -HOUR ( 5) }, /* Eastern Standard */
-  { "EDT",      tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */
-  { "CST",      tZONE,    -HOUR ( 6) }, /* Central Standard */
-  { "CDT",      tDAYZONE, -HOUR ( 6) }, /* Central Daylight */
-  { "MST",      tZONE,    -HOUR ( 7) }, /* Mountain Standard */
-  { "MDT",      tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */
-  { "PST",      tZONE,    -HOUR ( 8) }, /* Pacific Standard */
-  { "PDT",      tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */
-  { "AKST",     tZONE,    -HOUR ( 9) }, /* Alaska Standard */
-  { "AKDT",     tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */
-  { "HST",      tZONE,    -HOUR (10) }, /* Hawaii Standard */
-  { "HAST",     tZONE,    -HOUR (10) }, /* Hawaii-Aleutian Standard */
-  { "HADT",     tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */
-  { "SST",      tZONE,    -HOUR (12) }, /* Samoa Standard */
-  { "WAT",      tZONE,     HOUR ( 1) }, /* West Africa */
-  { "CET",      tZONE,     HOUR ( 1) }, /* Central European */
-  { "CEST",     tDAYZONE,  HOUR ( 1) }, /* Central European Summer */
-  { "MET",      tZONE,     HOUR ( 1) }, /* Middle European */
-  { "MEZ",      tZONE,     HOUR ( 1) }, /* Middle European */
-  { "MEST",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
-  { "MESZ",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
-  { "EET",      tZONE,     HOUR ( 2) }, /* Eastern European */
-  { "EEST",     tDAYZONE,  HOUR ( 2) }, /* Eastern European Summer */
-  { "CAT",      tZONE,     HOUR ( 2) }, /* Central Africa */
-  { "SAST",     tZONE,     HOUR ( 2) }, /* South Africa Standard */
-  { "EAT",      tZONE,     HOUR ( 3) }, /* East Africa */
-  { "MSK",      tZONE,     HOUR ( 3) }, /* Moscow */
-  { "MSD",      tDAYZONE,  HOUR ( 3) }, /* Moscow Daylight */
-  { "IST",      tZONE,    (HOUR ( 5) + 30) },   /* India Standard */
-  { "SGT",      tZONE,     HOUR ( 8) }, /* Singapore */
-  { "KST",      tZONE,     HOUR ( 9) }, /* Korea Standard */
-  { "JST",      tZONE,     HOUR ( 9) }, /* Japan Standard */
-  { "GST",      tZONE,     HOUR (10) }, /* Guam Standard */
-  { "NZST",     tZONE,     HOUR (12) }, /* New Zealand Standard */
-  { "NZDT",     tDAYZONE,  HOUR (12) }, /* New Zealand Daylight */
-  { NULL, 0, 0 }
-};
-
-/* Military time zone table. */
-static table const military_table[] =
-{
-  { "A", tZONE, -HOUR ( 1) },
-  { "B", tZONE, -HOUR ( 2) },
-  { "C", tZONE, -HOUR ( 3) },
-  { "D", tZONE, -HOUR ( 4) },
-  { "E", tZONE, -HOUR ( 5) },
-  { "F", tZONE, -HOUR ( 6) },
-  { "G", tZONE, -HOUR ( 7) },
-  { "H", tZONE, -HOUR ( 8) },
-  { "I", tZONE, -HOUR ( 9) },
-  { "K", tZONE, -HOUR (10) },
-  { "L", tZONE, -HOUR (11) },
-  { "M", tZONE, -HOUR (12) },
-  { "N", tZONE,  HOUR ( 1) },
-  { "O", tZONE,  HOUR ( 2) },
-  { "P", tZONE,  HOUR ( 3) },
-  { "Q", tZONE,  HOUR ( 4) },
-  { "R", tZONE,  HOUR ( 5) },
-  { "S", tZONE,  HOUR ( 6) },
-  { "T", tZONE,  HOUR ( 7) },
-  { "U", tZONE,  HOUR ( 8) },
-  { "V", tZONE,  HOUR ( 9) },
-  { "W", tZONE,  HOUR (10) },
-  { "X", tZONE,  HOUR (11) },
-  { "Y", tZONE,  HOUR (12) },
-  { "Z", tZONE,  HOUR ( 0) },
-  { NULL, 0, 0 }
-};
-
-\f
-
-/* Convert a time zone expressed as HH:MM into an integer count of
-   minutes.  If MM is negative, then S is of the form HHMM and needs
-   to be picked apart; otherwise, S is of the form HH.  As specified in
-   http://www.opengroup.org/susv3xbd/xbd_chap08.html#tag_08_03, allow
-   only valid TZ range, and consider first two digits as hours, if no
-   minutes specified.  */
-
-static long int
-time_zone_hhmm (parser_control *pc, textint s, long int mm)
-{
-  long int n_minutes;
-
-  /* If the length of S is 1 or 2 and no minutes are specified,
-     interpret it as a number of hours.  */
-  if (s.digits <= 2 && mm < 0)
-    s.value *= 100;
-
-  if (mm < 0)
-    n_minutes = (s.value / 100) * 60 + s.value % 100;
-  else
-    n_minutes = s.value * 60 + (s.negative ? -mm : mm);
-
-  /* If the absolute number of minutes is larger than 24 hours,
-     arrange to reject it by incrementing pc->zones_seen.  Thus,
-     we allow only values in the range UTC-24:00 to UTC+24:00.  */
-  if (24 * 60 < abs (n_minutes))
-    pc->zones_seen++;
-
-  return n_minutes;
-}
-
-static int
-to_hour (long int hours, int meridian)
-{
-  switch (meridian)
-    {
-    default: /* Pacify GCC.  */
-    case MER24:
-      return 0 <= hours && hours < 24 ? hours : -1;
-    case MERam:
-      return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1;
-    case MERpm:
-      return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1;
-    }
-}
-
-static long int
-to_year (textint textyear)
-{
-  long int year = textyear.value;
-
-  if (year < 0)
-    year = -year;
-
-  /* XPG4 suggests that years 00-68 map to 2000-2068, and
-     years 69-99 map to 1969-1999.  */
-  else if (textyear.digits == 2)
-    year += year < 69 ? 2000 : 1900;
-
-  return year;
-}
-
-static table const *
-lookup_zone (parser_control const *pc, char const *name)
-{
-  table const *tp;
-
-  for (tp = universal_time_zone_table; tp->name; tp++)
-    if (strcmp (name, tp->name) == 0)
-      return tp;
-
-  /* Try local zone abbreviations before those in time_zone_table, as
-     the local ones are more likely to be right.  */
-  for (tp = pc->local_time_zone_table; tp->name; tp++)
-    if (strcmp (name, tp->name) == 0)
-      return tp;
-
-  for (tp = time_zone_table; tp->name; tp++)
-    if (strcmp (name, tp->name) == 0)
-      return tp;
-
-  return NULL;
-}
-
-#if ! HAVE_TM_GMTOFF
-/* Yield the difference between *A and *B,
-   measured in seconds, ignoring leap seconds.
-   The body of this function is taken directly from the GNU C Library;
-   see src/strftime.c.  */
-static long int
-tm_diff (struct tm const *a, struct tm const *b)
-{
-  /* Compute intervening leap days correctly even if year is negative.
-     Take care to avoid int overflow in leap day calculations.  */
-  int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
-  int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
-  int a100 = a4 / 25 - (a4 % 25 < 0);
-  int b100 = b4 / 25 - (b4 % 25 < 0);
-  int a400 = SHR (a100, 2);
-  int b400 = SHR (b100, 2);
-  int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
-  long int ayear = a->tm_year;
-  long int years = ayear - b->tm_year;
-  long int days = (365 * years + intervening_leap_days
-                   + (a->tm_yday - b->tm_yday));
-  return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
-                + (a->tm_min - b->tm_min))
-          + (a->tm_sec - b->tm_sec));
-}
-#endif /* ! HAVE_TM_GMTOFF */
-
-static table const *
-lookup_word (parser_control const *pc, char *word)
-{
-  char *p;
-  char *q;
-  size_t wordlen;
-  table const *tp;
-  bool period_found;
-  bool abbrev;
-
-  /* Make it uppercase.  */
-  for (p = word; *p; p++)
-    {
-      unsigned char ch = *p;
-      *p = c_toupper (ch);
-    }
-
-  for (tp = meridian_table; tp->name; tp++)
-    if (strcmp (word, tp->name) == 0)
-      return tp;
-
-  /* See if we have an abbreviation for a month. */
-  wordlen = strlen (word);
-  abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');
-
-  for (tp = month_and_day_table; tp->name; tp++)
-    if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)
-      return tp;
-
-  if ((tp = lookup_zone (pc, word)))
-    return tp;
-
-  if (strcmp (word, dst_table[0].name) == 0)
-    return dst_table;
-
-  for (tp = time_units_table; tp->name; tp++)
-    if (strcmp (word, tp->name) == 0)
-      return tp;
-
-  /* Strip off any plural and try the units table again. */
-  if (word[wordlen - 1] == 'S')
-    {
-      word[wordlen - 1] = '\0';
-      for (tp = time_units_table; tp->name; tp++)
-        if (strcmp (word, tp->name) == 0)
-          return tp;
-      word[wordlen - 1] = 'S';  /* For "this" in relative_time_table.  */
-    }
-
-  for (tp = relative_time_table; tp->name; tp++)
-    if (strcmp (word, tp->name) == 0)
-      return tp;
-
-  /* Military time zones. */
-  if (wordlen == 1)
-    for (tp = military_table; tp->name; tp++)
-      if (word[0] == tp->name[0])
-        return tp;
-
-  /* Drop out any periods and try the time zone table again. */
-  for (period_found = false, p = q = word; (*p = *q); q++)
-    if (*q == '.')
-      period_found = true;
-    else
-      p++;
-  if (period_found && (tp = lookup_zone (pc, word)))
-    return tp;
-
-  return NULL;
-}
-
-static int
-yylex (YYSTYPE *lvalp, parser_control *pc)
-{
-  unsigned char c;
-  size_t count;
-
-  for (;;)
-    {
-      while (c = *pc->input, c_isspace (c))
-        pc->input++;
-
-      if (ISDIGIT (c) || c == '-' || c == '+')
-        {
-          char const *p;
-          int sign;
-          unsigned long int value;
-          if (c == '-' || c == '+')
-            {
-              sign = c == '-' ? -1 : 1;
-              while (c = *++pc->input, c_isspace (c))
-                continue;
-              if (! ISDIGIT (c))
-                /* skip the '-' sign */
-                continue;
-            }
-          else
-            sign = 0;
-          p = pc->input;
-          for (value = 0; ; value *= 10)
-            {
-              unsigned long int value1 = value + (c - '0');
-              if (value1 < value)
-                return '?';
-              value = value1;
-              c = *++p;
-              if (! ISDIGIT (c))
-                break;
-              if (ULONG_MAX / 10 < value)
-                return '?';
-            }
-          if ((c == '.' || c == ',') && ISDIGIT (p[1]))
-            {
-              time_t s;
-              int ns;
-              int digits;
-              unsigned long int value1;
-
-              /* Check for overflow when converting value to time_t.  */
-              if (sign < 0)
-                {
-                  s = - value;
-                  if (0 < s)
-                    return '?';
-                  value1 = -s;
-                }
-              else
-                {
-                  s = value;
-                  if (s < 0)
-                    return '?';
-                  value1 = s;
-                }
-              if (value != value1)
-                return '?';
-
-              /* Accumulate fraction, to ns precision.  */
-              p++;
-              ns = *p++ - '0';
-              for (digits = 2; digits <= LOG10_BILLION; digits++)
-                {
-                  ns *= 10;
-                  if (ISDIGIT (*p))
-                    ns += *p++ - '0';
-                }
-
-              /* Skip excess digits, truncating toward -Infinity.  */
-              if (sign < 0)
-                for (; ISDIGIT (*p); p++)
-                  if (*p != '0')
-                    {
-                      ns++;
-                      break;
-                    }
-              while (ISDIGIT (*p))
-                p++;
-
-              /* Adjust to the timespec convention, which is that
-                 tv_nsec is always a positive offset even if tv_sec is
-                 negative.  */
-              if (sign < 0 && ns)
-                {
-                  s--;
-                  if (! (s < 0))
-                    return '?';
-                  ns = BILLION - ns;
-                }
-
-              lvalp->timespec.tv_sec = s;
-              lvalp->timespec.tv_nsec = ns;
-              pc->input = p;
-              return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER;
-            }
-          else
-            {
-              lvalp->textintval.negative = sign < 0;
-              if (sign < 0)
-                {
-                  lvalp->textintval.value = - value;
-                  if (0 < lvalp->textintval.value)
-                    return '?';
-                }
-              else
-                {
-                  lvalp->textintval.value = value;
-                  if (lvalp->textintval.value < 0)
-                    return '?';
-                }
-              lvalp->textintval.digits = p - pc->input;
-              pc->input = p;
-              return sign ? tSNUMBER : tUNUMBER;
-            }
-        }
-
-      if (c_isalpha (c))
-        {
-          char buff[20];
-          char *p = buff;
-          table const *tp;
-
-          do
-            {
-              if (p < buff + sizeof buff - 1)
-                *p++ = c;
-              c = *++pc->input;
-            }
-          while (c_isalpha (c) || c == '.');
-
-          *p = '\0';
-          tp = lookup_word (pc, buff);
-          if (! tp)
-            return '?';
-          lvalp->intval = tp->value;
-          return tp->type;
-        }
-
-      if (c != '(')
-        return *pc->input++;
-      count = 0;
-      do
-        {
-          c = *pc->input++;
-          if (c == '\0')
-            return c;
-          if (c == '(')
-            count++;
-          else if (c == ')')
-            count--;
-        }
-      while (count != 0);
-    }
-}
-
-/* Do nothing if the parser reports an error.  */
-static int
-yyerror (parser_control const *pc _GL_UNUSED,
-         char const *s _GL_UNUSED)
-{
-  return 0;
-}
-
-/* If *TM0 is the old and *TM1 is the new value of a struct tm after
-   passing it to mktime, return true if it's OK that mktime returned T.
-   It's not OK if *TM0 has out-of-range members.  */
-
-static bool
-mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t)
-{
-  if (t == (time_t) -1)
-    {
-      /* Guard against falsely reporting an error when parsing a time
-         stamp that happens to equal (time_t) -1, on a host that
-         supports such a time stamp.  */
-      tm1 = localtime (&t);
-      if (!tm1)
-        return false;
-    }
-
-  return ! ((tm0->tm_sec ^ tm1->tm_sec)
-            | (tm0->tm_min ^ tm1->tm_min)
-            | (tm0->tm_hour ^ tm1->tm_hour)
-            | (tm0->tm_mday ^ tm1->tm_mday)
-            | (tm0->tm_mon ^ tm1->tm_mon)
-            | (tm0->tm_year ^ tm1->tm_year));
-}
-
-/* A reasonable upper bound for the size of ordinary TZ strings.
-   Use heap allocation if TZ's length exceeds this.  */
-enum { TZBUFSIZE = 100 };
-
-/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated
-   otherwise.  */
-static char *
-get_tz (char tzbuf[TZBUFSIZE])
-{
-  char *tz = getenv ("TZ");
-  if (tz)
-    {
-      size_t tzsize = strlen (tz) + 1;
-      tz = (tzsize <= TZBUFSIZE
-            ? memcpy (tzbuf, tz, tzsize)
-            : xmemdup (tz, tzsize));
-    }
-  return tz;
-}
-
-/* Parse a date/time string, storing the resulting time value into *RESULT.
-   The string itself is pointed to by P.  Return true if successful.
-   P can be an incomplete or relative time specification; if so, use
-   *NOW as the basis for the returned time.  */
-bool
-get_date (struct timespec *result, char const *p, struct timespec const *now)
-{
-  time_t Start;
-  long int Start_ns;
-  struct tm const *tmp;
-  struct tm tm;
-  struct tm tm0;
-  parser_control pc;
-  struct timespec gettime_buffer;
-  unsigned char c;
-  bool tz_was_altered = false;
-  char *tz0 = NULL;
-  char tz0buf[TZBUFSIZE];
-  bool ok = true;
-
-  if (! now)
-    {
-      gettime (&gettime_buffer);
-      now = &gettime_buffer;
-    }
-
-  Start = now->tv_sec;
-  Start_ns = now->tv_nsec;
-
-  tmp = localtime (&now->tv_sec);
-  if (! tmp)
-    return false;
-
-  while (c = *p, c_isspace (c))
-    p++;
-
-  if (strncmp (p, "TZ=\"", 4) == 0)
-    {
-      char const *tzbase = p + 4;
-      size_t tzsize = 1;
-      char const *s;
-
-      for (s = tzbase; *s; s++, tzsize++)
-        if (*s == '\\')
-          {
-            s++;
-            if (! (*s == '\\' || *s == '"'))
-              break;
-          }
-        else if (*s == '"')
-          {
-            char *z;
-            char *tz1;
-            char tz1buf[TZBUFSIZE];
-            bool large_tz = TZBUFSIZE < tzsize;
-            bool setenv_ok;
-            /* Free tz0, in case this is the 2nd or subsequent time through. */
-            free (tz0);
-            tz0 = get_tz (tz0buf);
-            z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
-            for (s = tzbase; *s != '"'; s++)
-              *z++ = *(s += *s == '\\');
-            *z = '\0';
-            setenv_ok = setenv ("TZ", tz1, 1) == 0;
-            if (large_tz)
-              free (tz1);
-            if (!setenv_ok)
-              goto fail;
-            tz_was_altered = true;
-            p = s + 1;
-          }
-    }
-
-  /* As documented, be careful to treat the empty string just like
-     a date string of "0".  Without this, an empty string would be
-     declared invalid when parsed during a DST transition.  */
-  if (*p == '\0')
-    p = "0";
-
-  pc.input = p;
-  pc.year.value = tmp->tm_year;
-  pc.year.value += TM_YEAR_BASE;
-  pc.year.digits = 0;
-  pc.month = tmp->tm_mon + 1;
-  pc.day = tmp->tm_mday;
-  pc.hour = tmp->tm_hour;
-  pc.minutes = tmp->tm_min;
-  pc.seconds.tv_sec = tmp->tm_sec;
-  pc.seconds.tv_nsec = Start_ns;
-  tm.tm_isdst = tmp->tm_isdst;
-
-  pc.meridian = MER24;
-  pc.rel = RELATIVE_TIME_0;
-  pc.timespec_seen = false;
-  pc.rels_seen = false;
-  pc.dates_seen = 0;
-  pc.days_seen = 0;
-  pc.times_seen = 0;
-  pc.local_zones_seen = 0;
-  pc.dsts_seen = 0;
-  pc.zones_seen = 0;
-
-#if HAVE_STRUCT_TM_TM_ZONE
-  pc.local_time_zone_table[0].name = tmp->tm_zone;
-  pc.local_time_zone_table[0].type = tLOCAL_ZONE;
-  pc.local_time_zone_table[0].value = tmp->tm_isdst;
-  pc.local_time_zone_table[1].name = NULL;
-
-  /* Probe the names used in the next three calendar quarters, looking
-     for a tm_isdst different from the one we already have.  */
-  {
-    int quarter;
-    for (quarter = 1; quarter <= 3; quarter++)
-      {
-        time_t probe = Start + quarter * (90 * 24 * 60 * 60);
-        struct tm const *probe_tm = localtime (&probe);
-        if (probe_tm && probe_tm->tm_zone
-            && probe_tm->tm_isdst != pc.local_time_zone_table[0].value)
-          {
-              {
-                pc.local_time_zone_table[1].name = probe_tm->tm_zone;
-                pc.local_time_zone_table[1].type = tLOCAL_ZONE;
-                pc.local_time_zone_table[1].value = probe_tm->tm_isdst;
-                pc.local_time_zone_table[2].name = NULL;
-              }
-            break;
-          }
-      }
-  }
-#else
-#if HAVE_TZNAME
-  {
-# if !HAVE_DECL_TZNAME
-    extern char *tzname[];
-# endif
-    int i;
-    for (i = 0; i < 2; i++)
-      {
-        pc.local_time_zone_table[i].name = tzname[i];
-        pc.local_time_zone_table[i].type = tLOCAL_ZONE;
-        pc.local_time_zone_table[i].value = i;
-      }
-    pc.local_time_zone_table[i].name = NULL;
-  }
-#else
-  pc.local_time_zone_table[0].name = NULL;
-#endif
-#endif
-
-  if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name
-      && ! strcmp (pc.local_time_zone_table[0].name,
-                   pc.local_time_zone_table[1].name))
-    {
-      /* This locale uses the same abbrevation for standard and
-         daylight times.  So if we see that abbreviation, we don't
-         know whether it's daylight time.  */
-      pc.local_time_zone_table[0].value = -1;
-      pc.local_time_zone_table[1].name = NULL;
-    }
-
-  if (yyparse (&pc) != 0)
-    goto fail;
-
-  if (pc.timespec_seen)
-    *result = pc.seconds;
-  else
-    {
-      if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
-               | (pc.local_zones_seen + pc.zones_seen)))
-        goto fail;
-
-      tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
-      tm.tm_mon = pc.month - 1;
-      tm.tm_mday = pc.day;
-      if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
-        {
-          tm.tm_hour = to_hour (pc.hour, pc.meridian);
-          if (tm.tm_hour < 0)
-            goto fail;
-          tm.tm_min = pc.minutes;
-          tm.tm_sec = pc.seconds.tv_sec;
-        }
-      else
-        {
-          tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
-          pc.seconds.tv_nsec = 0;
-        }
-
-      /* Let mktime deduce tm_isdst if we have an absolute time stamp.  */
-      if (pc.dates_seen | pc.days_seen | pc.times_seen)
-        tm.tm_isdst = -1;
-
-      /* But if the input explicitly specifies local time with or without
-         DST, give mktime that information.  */
-      if (pc.local_zones_seen)
-        tm.tm_isdst = pc.local_isdst;
-
-      tm0 = tm;
-
-      Start = mktime (&tm);
-
-      if (! mktime_ok (&tm0, &tm, Start))
-        {
-          if (! pc.zones_seen)
-            goto fail;
-          else
-            {
-              /* Guard against falsely reporting errors near the time_t
-                 boundaries when parsing times in other time zones.  For
-                 example, suppose the input string "1969-12-31 23:00:00 -0100",
-                 the current time zone is 8 hours ahead of UTC, and the min
-                 time_t value is 1970-01-01 00:00:00 UTC.  Then the min
-                 localtime value is 1970-01-01 08:00:00, and mktime will
-                 therefore fail on 1969-12-31 23:00:00.  To work around the
-                 problem, set the time zone to 1 hour behind UTC temporarily
-                 by setting TZ="XXX1:00" and try mktime again.  */
-
-              long int time_zone = pc.time_zone;
-              long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone;
-              long int abs_time_zone_hour = abs_time_zone / 60;
-              int abs_time_zone_min = abs_time_zone % 60;
-              char tz1buf[sizeof "XXX+0:00"
-                          + sizeof pc.time_zone * CHAR_BIT / 3];
-              if (!tz_was_altered)
-                tz0 = get_tz (tz0buf);
-              sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
-                       abs_time_zone_hour, abs_time_zone_min);
-              if (setenv ("TZ", tz1buf, 1) != 0)
-                goto fail;
-              tz_was_altered = true;
-              tm = tm0;
-              Start = mktime (&tm);
-              if (! mktime_ok (&tm0, &tm, Start))
-                goto fail;
-            }
-        }
-
-      if (pc.days_seen && ! pc.dates_seen)
-        {
-          tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7
-                         + 7 * (pc.day_ordinal
-                                - (0 < pc.day_ordinal
-                                   && tm.tm_wday != pc.day_number)));
-          tm.tm_isdst = -1;
-          Start = mktime (&tm);
-          if (Start == (time_t) -1)
-            goto fail;
-        }
-
-      /* Add relative date.  */
-      if (pc.rel.year | pc.rel.month | pc.rel.day)
-        {
-          int year = tm.tm_year + pc.rel.year;
-          int month = tm.tm_mon + pc.rel.month;
-          int day = tm.tm_mday + pc.rel.day;
-          if (((year < tm.tm_year) ^ (pc.rel.year < 0))
-              | ((month < tm.tm_mon) ^ (pc.rel.month < 0))
-              | ((day < tm.tm_mday) ^ (pc.rel.day < 0)))
-            goto fail;
-          tm.tm_year = year;
-          tm.tm_mon = month;
-          tm.tm_mday = day;
-          tm.tm_hour = tm0.tm_hour;
-          tm.tm_min = tm0.tm_min;
-          tm.tm_sec = tm0.tm_sec;
-          tm.tm_isdst = tm0.tm_isdst;
-          Start = mktime (&tm);
-          if (Start == (time_t) -1)
-            goto fail;
-        }
-
-      /* The only "output" of this if-block is an updated Start value,
-         so this block must follow others that clobber Start.  */
-      if (pc.zones_seen)
-        {
-          long int delta = pc.time_zone * 60;
-          time_t t1;
-#ifdef HAVE_TM_GMTOFF
-          delta -= tm.tm_gmtoff;
-#else
-          time_t t = Start;
-          struct tm const *gmt = gmtime (&t);
-          if (! gmt)
-            goto fail;
-          delta -= tm_diff (&tm, gmt);
-#endif
-          t1 = Start - delta;
-          if ((Start < t1) != (delta < 0))
-            goto fail;  /* time_t overflow */
-          Start = t1;
-        }
-
-      /* Add relative hours, minutes, and seconds.  On hosts that support
-         leap seconds, ignore the possibility of leap seconds; e.g.,
-         "+ 10 minutes" adds 600 seconds, even if one of them is a
-         leap second.  Typically this is not what the user wants, but it's
-         too hard to do it the other way, because the time zone indicator
-         must be applied before relative times, and if mktime is applied
-         again the time zone will be lost.  */
-      {
-        long int sum_ns = pc.seconds.tv_nsec + pc.rel.ns;
-        long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION;
-        time_t t0 = Start;
-        long int d1 = 60 * 60 * pc.rel.hour;
-        time_t t1 = t0 + d1;
-        long int d2 = 60 * pc.rel.minutes;
-        time_t t2 = t1 + d2;
-        long_time_t d3 = pc.rel.seconds;
-        long_time_t t3 = t2 + d3;
-        long int d4 = (sum_ns - normalized_ns) / BILLION;
-        long_time_t t4 = t3 + d4;
-        time_t t5 = t4;
-
-        if ((d1 / (60 * 60) ^ pc.rel.hour)
-            | (d2 / 60 ^ pc.rel.minutes)
-            | ((t1 < t0) ^ (d1 < 0))
-            | ((t2 < t1) ^ (d2 < 0))
-            | ((t3 < t2) ^ (d3 < 0))
-            | ((t4 < t3) ^ (d4 < 0))
-            | (t5 != t4))
-          goto fail;
-
-        result->tv_sec = t5;
-        result->tv_nsec = normalized_ns;
-      }
-    }
-
-  goto done;
-
- fail:
-  ok = false;
- done:
-  if (tz_was_altered)
-    ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
-  if (tz0 != tz0buf)
-    free (tz0);
-  return ok;
-}
-
-#if TEST
-
-int
-main (int ac, char **av)
-{
-  char buff[BUFSIZ];
-
-  printf ("Enter date, or blank line to exit.\n\t> ");
-  fflush (stdout);
-
-  buff[BUFSIZ - 1] = '\0';
-  while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
-    {
-      struct timespec d;
-      struct tm const *tm;
-      if (! get_date (&d, buff, NULL))
-        printf ("Bad format - couldn't convert.\n");
-      else if (! (tm = localtime (&d.tv_sec)))
-        {
-          long int sec = d.tv_sec;
-          printf ("localtime (%ld) failed\n", sec);
-        }
-      else
-        {
-          int ns = d.tv_nsec;
-          printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
-                  tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
-                  tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
-        }
-      printf ("\t> ");
-      fflush (stdout);
-    }
-  return 0;
-}
-#endif /* TEST */
index 0c13f234d1e439cb0283ba654a5f8ca2b860ae17..6eae49e06205fb0d2ac5a220d01d9368d72562f6 100644 (file)
 # include <wchar.h>
 #endif
 
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
 /* This version of `getopt' appears to the caller like standard Unix `getopt'
    but it behaves differently for the user, since it allows the user
    to intersperse the options with the other arguments.
@@ -354,8 +350,6 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                     int long_only, struct _getopt_data *d, int posixly_correct)
 {
   int print_errors = d->opterr;
-  if (optstring[0] == ':')
-    print_errors = 0;
 
   if (argc < 1)
     return -1;
@@ -370,6 +364,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                                       posixly_correct);
       d->__initialized = 1;
     }
+  else if (optstring[0] == '-' || optstring[0] == '+')
+    optstring++;
+  if (optstring[0] == ':')
+    print_errors = 0;
 
   /* Test whether ARGV[optind] points to a non-option argument.
      Either it does not have option syntax, or there is an environment flag
@@ -639,8 +637,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                       char *buf;
 
                       if (__asprintf (&buf, _("\
-%s: option '%s' requires an argument\n"),
-                                      argv[0], argv[d->optind - 1]) >= 0)
+%s: option '--%s' requires an argument\n"),
+                                      argv[0], pfound->name) >= 0)
                         {
                           _IO_flockfile (stderr);
 
@@ -657,8 +655,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                         }
 #else
                       fprintf (stderr,
-                               _("%s: option '%s' requires an argument\n"),
-                               argv[0], argv[d->optind - 1]);
+                               _("%s: option '--%s' requires an argument\n"),
+                               argv[0], pfound->name);
 #endif
                     }
                   d->__nextchar += strlen (d->__nextchar);
@@ -742,13 +740,13 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
 
   {
     char c = *d->__nextchar++;
-    char *temp = strchr (optstring, c);
+    const char *temp = strchr (optstring, c);
 
     /* Increment `optind' when we start to process its last character.  */
     if (*d->__nextchar == '\0')
       ++d->optind;
 
-    if (temp == NULL || c == ':')
+    if (temp == NULL || c == ':' || c == ';')
       {
         if (print_errors)
           {
@@ -870,7 +868,10 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                   pfound = p;
                   indfound = option_index;
                 }
-              else
+              else if (long_only
+                       || pfound->has_arg != p->has_arg
+                       || pfound->flag != p->flag
+                       || pfound->val != p->val)
                 /* Second or later nonexact match found.  */
                 ambig = 1;
             }
@@ -882,7 +883,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                 char *buf;
 
                 if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"),
-                                argv[0], argv[d->optind]) >= 0)
+                                argv[0], d->optarg) >= 0)
                   {
                     _IO_flockfile (stderr);
 
@@ -898,7 +899,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                   }
 #else
                 fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"),
-                         argv[0], argv[d->optind]);
+                         argv[0], d->optarg);
 #endif
               }
             d->__nextchar += strlen (d->__nextchar);
@@ -961,8 +962,8 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                         char *buf;
 
                         if (__asprintf (&buf, _("\
-%s: option '%s' requires an argument\n"),
-                                        argv[0], argv[d->optind - 1]) >= 0)
+%s: option '-W %s' requires an argument\n"),
+                                        argv[0], pfound->name) >= 0)
                           {
                             _IO_flockfile (stderr);
 
@@ -978,15 +979,17 @@ _getopt_internal_r (int argc, char **argv, const char *optstring,
                             free (buf);
                           }
 #else
-                        fprintf (stderr,
-                                 _("%s: option '%s' requires an argument\n"),
-                                 argv[0], argv[d->optind - 1]);
+                        fprintf (stderr, _("\
+%s: option '-W %s' requires an argument\n"),
+                                 argv[0], pfound->name);
 #endif
                       }
                     d->__nextchar += strlen (d->__nextchar);
                     return optstring[0] == ':' ? ':' : '?';
                   }
               }
+            else
+              d->optarg = NULL;
             d->__nextchar += strlen (d->__nextchar);
             if (longind != NULL)
               *longind = option_index;
index 3478945a035f155969219490f3529cfc88fad271..d077edc08ea87de82d760996362eb2c00430be97 100644 (file)
@@ -23,6 +23,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  We must
    also inform the replacement unistd.h to not recursively use
index 0095d44ac47c0543d495274a189709b772bd0168..697689c20c88a7ac2328bf66734743fd733878ee 100644 (file)
@@ -32,6 +32,40 @@ extern int _getopt_internal (int ___argc, char **___argv,
 /* Reentrant versions which can handle parsing multiple argument
    vectors at the same time.  */
 
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters, or by calling getopt.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we
+   scan, so that eventually all the non-options are at the end.
+   This allows options to be given in any order, even with programs
+   that were not written to expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were
+   written to expect options and other ARGV-elements in any order
+   and that care about the ordering of the two.  We describe each
+   non-option ARGV-element as if it were the argument of an option
+   with character code 1.  Using `-' as the first character of the
+   list of option characters selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+enum __ord
+  {
+    REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+  };
+
 /* Data type for reentrant functions.  */
 struct _getopt_data
 {
@@ -56,39 +90,8 @@ struct _getopt_data
      by advancing to the next ARGV-element.  */
   char *__nextchar;
 
-  /* Describe how to deal with options that follow non-option ARGV-elements.
-
-     If the caller did not specify anything,
-     the default is REQUIRE_ORDER if the environment variable
-     POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-     REQUIRE_ORDER means don't recognize them as options;
-     stop option processing when the first non-option is seen.
-     This is what Unix does.
-     This mode of operation is selected by either setting the environment
-     variable POSIXLY_CORRECT, or using `+' as the first character
-     of the list of option characters, or by calling getopt.
-
-     PERMUTE is the default.  We permute the contents of ARGV as we
-     scan, so that eventually all the non-options are at the end.
-     This allows options to be given in any order, even with programs
-     that were not written to expect this.
-
-     RETURN_IN_ORDER is an option available to programs that were
-     written to expect options and other ARGV-elements in any order
-     and that care about the ordering of the two.  We describe each
-     non-option ARGV-element as if it were the argument of an option
-     with character code 1.  Using `-' as the first character of the
-     list of option characters selects this mode of operation.
-
-     The special argument `--' forces an end of option-scanning regardless
-     of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-     `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
-
-  enum
-    {
-      REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-    } __ordering;
+  /* See __ord above.  */
+  enum __ord __ordering;
 
   /* If the POSIXLY_CORRECT environment variable is set
      or getopt was called.  */
index 360d176188372c18c63483580d2022f8b1cda512..0b054db7d25e986ddc82c89de850e8a1d2761f78 100644 (file)
@@ -83,7 +83,7 @@
     ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
 # undef dcngettext
 # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
-    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+    ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
 # undef textdomain
 # define textdomain(Domainname) ((const char *) (Domainname))
 # undef bindtextdomain
diff --git a/gnu/hash-pjw.c b/gnu/hash-pjw.c
deleted file mode 100644 (file)
index eac00c6..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* hash-pjw.c -- compute a hash value from a NUL-terminated string.
-
-   Copyright (C) 2001, 2003, 2006, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-#include "hash-pjw.h"
-
-#include <limits.h>
-
-#define SIZE_BITS (sizeof (size_t) * CHAR_BIT)
-
-/* A hash function for NUL-terminated char* strings using
-   the method described by Bruno Haible.
-   See http://www.haible.de/bruno/hashfunc.html.  */
-
-size_t
-hash_pjw (const void *x, size_t tablesize)
-{
-  const char *s;
-  size_t h = 0;
-
-  for (s = x; *s; s++)
-    h = *s + ((h << 9) | (h >> (SIZE_BITS - 9)));
-
-  return h % tablesize;
-}
diff --git a/gnu/hash-pjw.h b/gnu/hash-pjw.h
deleted file mode 100644 (file)
index 5f674d5..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* hash-pjw.h -- declaration for a simple hash function
-   Copyright (C) 2001, 2003, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include <stddef.h>
-
-/* Compute a hash code for a NUL-terminated string starting at X,
-   and return the hash code modulo TABLESIZE.
-   The result is platform dependent: it depends on the size of the 'size_t'
-   type and on the signedness of the 'char' type.  */
-extern size_t hash_pjw (void const *x, size_t tablesize);
diff --git a/gnu/hash-triple.c b/gnu/hash-triple.c
deleted file mode 100644 (file)
index 6a44520..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Hash functions for file-related triples: name, device, inode.
-   Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* written by Jim Meyering */
-
-#include <config.h>
-
-#include "hash-triple.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "hash-pjw.h"
-#include "same.h"
-#include "same-inode.h"
-
-#define STREQ(a, b) (strcmp (a, b) == 0)
-
-/* Hash an F_triple, and *do* consider the file name.  */
-size_t
-triple_hash (void const *x, size_t table_size)
-{
-  struct F_triple const *p = x;
-  size_t tmp = hash_pjw (p->name, table_size);
-
-  /* Ignoring the device number here should be fine.  */
-  return (tmp ^ p->st_ino) % table_size;
-}
-
-/* Hash an F_triple, without considering the file name.  */
-size_t
-triple_hash_no_name (void const *x, size_t table_size)
-{
-  struct F_triple const *p = x;
-
-  /* Ignoring the device number here should be fine.  */
-  return p->st_ino % table_size;
-}
-
-/* Compare two F_triple structs.  */
-bool
-triple_compare (void const *x, void const *y)
-{
-  struct F_triple const *a = x;
-  struct F_triple const *b = y;
-  return (SAME_INODE (*a, *b) && same_name (a->name, b->name)) ? true : false;
-}
-
-bool
-triple_compare_ino_str (void const *x, void const *y)
-{
-  struct F_triple const *a = x;
-  struct F_triple const *b = y;
-  return (SAME_INODE (*a, *b) && STREQ (a->name, b->name)) ? true : false;
-}
-
-/* Free an F_triple.  */
-void
-triple_free (void *x)
-{
-  struct F_triple *a = x;
-  free (a->name);
-  free (a);
-}
diff --git a/gnu/hash-triple.h b/gnu/hash-triple.h
deleted file mode 100644 (file)
index 39bb335..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-#ifndef HASH_TRIPLE_H
-#define HASH_TRIPLE_H
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdbool.h>
-
-/* Describe a just-created or just-renamed destination file.  */
-struct F_triple
-{
-  char *name;
-  ino_t st_ino;
-  dev_t st_dev;
-};
-
-extern size_t triple_hash (void const *x, size_t table_size);
-extern size_t triple_hash_no_name (void const *x, size_t table_size);
-extern bool triple_compare (void const *x, void const *y);
-extern bool triple_compare_ino_str (void const *x, void const *y);
-extern void triple_free (void *x);
-
-#endif
index 2278c30bf214d6684670878e86c086ab1edfe0e9..c49d34d30f466d5ff9d3a7a6f2d67725692e414a 100644 (file)
@@ -245,19 +245,26 @@ hash_print_statistics (const Hash_table *table, FILE *stream)
            (unsigned long int) max_bucket_length);
 }
 
+/* Hash KEY and return a pointer to the selected bucket.
+   If TABLE->hasher misbehaves, abort.  */
+static struct hash_entry *
+safe_hasher (const Hash_table *table, const void *key)
+{
+  size_t n = table->hasher (key, table->n_buckets);
+  if (! (n < table->n_buckets))
+    abort ();
+  return table->bucket + n;
+}
+
 /* If ENTRY matches an entry already in the hash table, return the
    entry from the table.  Otherwise, return NULL.  */
 
 void *
 hash_lookup (const Hash_table *table, const void *entry)
 {
-  struct hash_entry const *bucket
-    = table->bucket + table->hasher (entry, table->n_buckets);
+  struct hash_entry const *bucket = safe_hasher (table, entry);
   struct hash_entry const *cursor;
 
-  if (! (bucket < table->bucket_limit))
-    abort ();
-
   if (bucket->data == NULL)
     return NULL;
 
@@ -301,17 +308,18 @@ hash_get_first (const Hash_table *table)
 void *
 hash_get_next (const Hash_table *table, const void *entry)
 {
-  struct hash_entry const *bucket
-    = table->bucket + table->hasher (entry, table->n_buckets);
+  struct hash_entry const *bucket = safe_hasher (table, entry);
   struct hash_entry const *cursor;
 
-  if (! (bucket < table->bucket_limit))
-    abort ();
-
   /* Find next entry in the same bucket.  */
-  for (cursor = bucket; cursor; cursor = cursor->next)
-    if (cursor->data == entry && cursor->next)
-      return cursor->next->data;
+  cursor = bucket;
+  do
+    {
+      if (cursor->data == entry && cursor->next)
+        return cursor->next->data;
+      cursor = cursor->next;
+    }
+  while (cursor != NULL);
 
   /* Find first entry in any subsequent bucket.  */
   while (++bucket < table->bucket_limit)
@@ -784,13 +792,9 @@ static void *
 hash_find_entry (Hash_table *table, const void *entry,
                  struct hash_entry **bucket_head, bool delete)
 {
-  struct hash_entry *bucket
-    = table->bucket + table->hasher (entry, table->n_buckets);
+  struct hash_entry *bucket = safe_hasher (table, entry);
   struct hash_entry *cursor;
 
-  if (! (bucket < table->bucket_limit))
-    abort ();
-
   *bucket_head = bucket;
 
   /* Test for empty bucket.  */
@@ -875,10 +879,7 @@ transfer_entries (Hash_table *dst, Hash_table *src, bool safe)
         for (cursor = bucket->next; cursor; cursor = next)
           {
             data = cursor->data;
-            new_bucket = (dst->bucket + dst->hasher (data, dst->n_buckets));
-
-            if (! (new_bucket < dst->bucket_limit))
-              abort ();
+            new_bucket = safe_hasher (dst, data);
 
             next = cursor->next;
 
@@ -905,10 +906,7 @@ transfer_entries (Hash_table *dst, Hash_table *src, bool safe)
         bucket->next = NULL;
         if (safe)
           continue;
-        new_bucket = (dst->bucket + dst->hasher (data, dst->n_buckets));
-
-        if (! (new_bucket < dst->bucket_limit))
-          abort ();
+        new_bucket = safe_hasher (dst, data);
 
         if (new_bucket->data)
           {
@@ -1022,25 +1020,39 @@ hash_rehash (Hash_table *table, size_t candidate)
   return false;
 }
 
-/* If ENTRY matches an entry already in the hash table, return the pointer
-   to the entry from the table.  Otherwise, insert ENTRY and return ENTRY.
-   Return NULL if the storage required for insertion cannot be allocated.
-   This implementation does not support duplicate entries or insertion of
-   NULL.  */
-
-void *
-hash_insert (Hash_table *table, const void *entry)
+/* Return -1 upon memory allocation failure.
+   Return 1 if insertion succeeded.
+   Return 0 if there is already a matching entry in the table,
+   and in that case, if MATCHED_ENT is non-NULL, set *MATCHED_ENT
+   to that entry.
+
+   This interface is easier to use than hash_insert when you must
+   distinguish between the latter two cases.  More importantly,
+   hash_insert is unusable for some types of ENTRY values.  When using
+   hash_insert, the only way to distinguish those cases is to compare
+   the return value and ENTRY.  That works only when you can have two
+   different ENTRY values that point to data that compares "equal".  Thus,
+   when the ENTRY value is a simple scalar, you must use hash_insert0.
+   ENTRY must not be NULL.  */
+int
+hash_insert0 (Hash_table *table, void const *entry, void const **matched_ent)
 {
   void *data;
   struct hash_entry *bucket;
 
-  /* The caller cannot insert a NULL entry.  */
+  /* The caller cannot insert a NULL entry, since hash_lookup returns NULL
+     to indicate "not found", and hash_find_entry uses "bucket->data == NULL"
+     to indicate an empty bucket.  */
   if (! entry)
     abort ();
 
   /* If there's a matching entry already in the table, return that.  */
   if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL)
-    return data;
+    {
+      if (matched_ent)
+        *matched_ent = data;
+      return 0;
+    }
 
   /* If the growth threshold of the buckets in use has been reached, increase
      the table size and rehash.  There's no point in checking the number of
@@ -1064,11 +1076,11 @@ hash_insert (Hash_table *table, const void *entry)
                 * tuning->growth_threshold));
 
           if (SIZE_MAX <= candidate)
-            return NULL;
+            return -1;
 
           /* If the rehash fails, arrange to return NULL.  */
           if (!hash_rehash (table, candidate))
-            return NULL;
+            return -1;
 
           /* Update the bucket we are interested in.  */
           if (hash_find_entry (table, entry, &bucket, false) != NULL)
@@ -1083,7 +1095,7 @@ hash_insert (Hash_table *table, const void *entry)
       struct hash_entry *new_entry = allocate_entry (table);
 
       if (new_entry == NULL)
-        return NULL;
+        return -1;
 
       /* Add ENTRY in the overflow of the bucket.  */
 
@@ -1091,7 +1103,7 @@ hash_insert (Hash_table *table, const void *entry)
       new_entry->next = bucket->next;
       bucket->next = new_entry;
       table->n_entries++;
-      return (void *) entry;
+      return 1;
     }
 
   /* Add ENTRY right in the bucket head.  */
@@ -1100,7 +1112,23 @@ hash_insert (Hash_table *table, const void *entry)
   table->n_entries++;
   table->n_buckets_used++;
 
-  return (void *) entry;
+  return 1;
+}
+
+/* If ENTRY matches an entry already in the hash table, return the pointer
+   to the entry from the table.  Otherwise, insert ENTRY and return ENTRY.
+   Return NULL if the storage required for insertion cannot be allocated.
+   This implementation does not support duplicate entries or insertion of
+   NULL.  */
+
+void *
+hash_insert (Hash_table *table, void const *entry)
+{
+  void const *matched_ent;
+  int err = hash_insert0 (table, entry, &matched_ent);
+  return (err == -1
+          ? NULL
+          : (void *) (err == 0 ? matched_ent : entry));
 }
 
 /* If ENTRY is already in the table, remove it and return the just-deleted
index 9db337422ba84c5ae01bf817a37c647880b68df9..98f965d0498b8bd3be43b455b4d15bf1eca80b7d 100644 (file)
@@ -90,6 +90,8 @@ void hash_free (Hash_table *);
 /* Insertion and deletion.  */
 bool hash_rehash (Hash_table *, size_t) ATTRIBUTE_WUR;
 void *hash_insert (Hash_table *, const void *) ATTRIBUTE_WUR;
+int hash_insert0 (Hash_table *table, const void *entry,
+                  const void **matched_ent);
 void *hash_delete (Hash_table *, const void *);
 
 #endif
index af7316d121e1095d218304336010643345c1863d..86fd3aa88b34723aa62600a51495582bc76c1e9e 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-#define inttostr imaxtostr
+#define anytostr imaxtostr
 #define inttype intmax_t
 #define inttype_is_signed 1
-#include "inttostr.c"
+#include "anytostr.c"
index d4f99cc21369ffb8241aa851d1377d266ce6a549..1bba4a08612dc961f8ef7852a8088dcbd338b431 100644 (file)
@@ -1,56 +1,6 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* inttostr.c -- convert integers to printable strings
-
-   Copyright (C) 2001, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Written by Paul Eggert */
-
-#include <config.h>
-
-#include "inttostr.h"
-#include "verify.h"
-
-/* Convert I to a printable string in BUF, which must be at least
-   INT_BUFSIZE_BOUND (INTTYPE) bytes long.  Return the address of the
-   printable string, which need not start at BUF.  */
-
-char *
-inttostr (inttype i, char *buf)
-{
-  char *p = buf + INT_STRLEN_BOUND (inttype);
-  *p = 0;
-
-  verify (TYPE_SIGNED (inttype) == inttype_is_signed);
-#if inttype_is_signed
-  if (i < 0)
-    {
-      do
-        *--p = '0' - i % 10;
-      while ((i /= 10) != 0);
-
-      *--p = '-';
-    }
-  else
-#endif
-    {
-      do
-        *--p = '0' + i % 10;
-      while ((i /= 10) != 0);
-    }
-
-  return p;
-}
+#define anytostr inttostr
+#define inttype int
+#define inttype_is_signed 1
+#include "anytostr.c"
index 8b6dbcef20769d84caceacaff9c15672a121acef..edd01457affb5a8008ef6196cdf3054410813f34 100644 (file)
@@ -41,7 +41,8 @@
 # define __attribute_warn_unused_result__ /* empty */
 #endif
 
-char *offtostr (off_t, char *) __attribute_warn_unused_result__;
 char *imaxtostr (intmax_t, char *) __attribute_warn_unused_result__;
-char *umaxtostr (uintmax_t, char *) __attribute_warn_unused_result__;
+char *inttostr (int, char *) __attribute_warn_unused_result__;
+char *offtostr (off_t, char *) __attribute_warn_unused_result__;
 char *uinttostr (unsigned int, char *) __attribute_warn_unused_result__;
+char *umaxtostr (uintmax_t, char *) __attribute_warn_unused_result__;
index 27deaa7f48aea43c9e27deca6b0ce8280748e066..ce8fab32f06ec375311c86aabf19e588a833faf0 100644 (file)
  * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
  */
 
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
 /* Include the original <inttypes.h> if it exists, and if this file
    has not been included yet or if this file includes gnulib stdint.h
    which in turn includes this file.
    The include_next requires a split double-inclusion guard.  */
 #if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
 # if @HAVE_INTTYPES_H@
-#  if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#  endif
 #  @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
 # endif
 #endif
index 5a4111127c50254615b07c6bd386b44358bdb18a..95b8d5716d9299ccbcfc3158acfc5cadf2cba842 100644 (file)
@@ -27,6 +27,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #if @HAVE_LANGINFO_H@
@@ -114,6 +115,11 @@ typedef int nl_item;
 #  define GNULIB_defined_CODESET 1
 # endif
 
+# if !@HAVE_LANGINFO_T_FMT_AMPM@
+#  define T_FMT_AMPM  10006
+#  define GNULIB_defined_T_FMT_AMPM 1
+# endif
+
 # if !@HAVE_LANGINFO_ERA@
 #  define ERA         10047
 #  define ERA_D_FMT   10048
@@ -123,6 +129,12 @@ typedef int nl_item;
 #  define GNULIB_defined_ERA 1
 # endif
 
+# if !@HAVE_LANGINFO_YESEXPR@
+#  define YESEXPR     10053
+#  define NOEXPR      10054
+#  define GNULIB_defined_YESEXPR 1
+# endif
+
 #endif
 
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
index 0753010b9b994220fb9d895b6306d04e800164ae..8daaa2b9891404e8b38bce0009fb3b204de1094a 100644 (file)
@@ -72,11 +72,12 @@ lchown (const char *file, uid_t uid, gid_t gid)
 int
 rpl_lchown (const char *file, uid_t uid, gid_t gid)
 {
-  struct stat st;
   bool stat_valid = false;
   int result;
 
 # if CHOWN_CHANGE_TIME_BUG
+  struct stat st;
+
   if (gid != (gid_t) -1 || uid != (uid_t) -1)
     {
       if (lstat (file, &st))
diff --git a/gnu/link.c b/gnu/link.c
new file mode 100644 (file)
index 0000000..9b988bc
--- /dev/null
@@ -0,0 +1,205 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Emulate link on platforms that lack it, namely native Windows platforms.
+
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#if !HAVE_LINK
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+
+/* CreateHardLink was introduced only in Windows 2000.  */
+typedef BOOL (WINAPI * CreateHardLinkFuncType) (LPCTSTR lpFileName,
+                                                LPCTSTR lpExistingFileName,
+                                                LPSECURITY_ATTRIBUTES lpSecurityAttributes);
+static CreateHardLinkFuncType CreateHardLinkFunc = NULL;
+static BOOL initialized = FALSE;
+
+static void
+initialize (void)
+{
+  HMODULE kernel32 = GetModuleHandle ("kernel32.dll");
+  if (kernel32 != NULL)
+    {
+      CreateHardLinkFunc =
+        (CreateHardLinkFuncType) GetProcAddress (kernel32, "CreateHardLinkA");
+    }
+  initialized = TRUE;
+}
+
+int
+link (const char *file1, const char *file2)
+{
+  char *dir;
+  size_t len1 = strlen (file1);
+  size_t len2 = strlen (file2);
+  if (!initialized)
+    initialize ();
+  if (CreateHardLinkFunc == NULL)
+    {
+      /* System does not support hard links.  */
+      errno = EPERM;
+      return -1;
+    }
+  /* Reject trailing slashes on non-directories; mingw does not
+     support hard-linking directories.  */
+  if ((len1 && (file1[len1 - 1] == '/' || file1[len1 - 1] == '\\'))
+      || (len2 && (file2[len2 - 1] == '/' || file2[len2 - 1] == '\\')))
+    {
+      struct stat st;
+      if (stat (file1, &st) == 0 && S_ISDIR (st.st_mode))
+        errno = EPERM;
+      else
+        errno = ENOTDIR;
+      return -1;
+    }
+  /* CreateHardLink("b/.","a",NULL) creates file "b", so we must check
+     that dirname(file2) exists.  */
+  dir = strdup (file2);
+  if (!dir)
+    return -1;
+  {
+    struct stat st;
+    char *p = strchr (dir, '\0');
+    while (dir < p && (*--p != '/' && *p != '\\'));
+    *p = '\0';
+    if (p != dir && stat (dir, &st) == -1)
+      {
+        int saved_errno = errno;
+        free (dir);
+        errno = saved_errno;
+        return -1;
+      }
+    free (dir);
+  }
+  /* Now create the link.  */
+  if (CreateHardLinkFunc (file2, file1, NULL) == 0)
+    {
+      /* It is not documented which errors CreateHardLink() can produce.
+       * The following conversions are based on tests on a Windows XP SP2
+       * system. */
+      DWORD err = GetLastError ();
+      switch (err)
+        {
+        case ERROR_ACCESS_DENIED:
+          errno = EACCES;
+          break;
+
+        case ERROR_INVALID_FUNCTION:    /* fs does not support hard links */
+          errno = EPERM;
+          break;
+
+        case ERROR_NOT_SAME_DEVICE:
+          errno = EXDEV;
+          break;
+
+        case ERROR_PATH_NOT_FOUND:
+        case ERROR_FILE_NOT_FOUND:
+          errno = ENOENT;
+          break;
+
+        case ERROR_INVALID_PARAMETER:
+          errno = ENAMETOOLONG;
+          break;
+
+        case ERROR_TOO_MANY_LINKS:
+          errno = EMLINK;
+          break;
+
+        case ERROR_ALREADY_EXISTS:
+          errno = EEXIST;
+          break;
+
+        default:
+          errno = EIO;
+        }
+      return -1;
+    }
+
+  return 0;
+}
+
+# else /* !Windows */
+
+#  error "This platform lacks a link function, and Gnulib doesn't provide a replacement. This is a bug in Gnulib."
+
+# endif /* !Windows */
+#else /* HAVE_LINK */
+
+# undef link
+
+/* Create a hard link from FILE1 to FILE2, working around platform bugs.  */
+int
+rpl_link (char const *file1, char const *file2)
+{
+  /* Reject trailing slashes on non-directories.  */
+  size_t len1 = strlen (file1);
+  size_t len2 = strlen (file2);
+  if ((len1 && file1[len1 - 1] == '/')
+      || (len2 && file2[len2 - 1] == '/'))
+    {
+      /* Let link() decide whether hard-linking directories is legal.
+         If stat() fails, then link() should fail for the same reason
+         (although on Solaris 9, link("file/","oops") mistakenly
+         succeeds); if stat() succeeds, require a directory.  */
+      struct stat st;
+      if (stat (file1, &st))
+        return -1;
+      if (!S_ISDIR (st.st_mode))
+        {
+          errno = ENOTDIR;
+          return -1;
+        }
+    }
+  else
+    {
+      /* Fix Cygwin 1.5.x bug where link("a","b/.") creates file "b".  */
+      char *dir = strdup (file2);
+      struct stat st;
+      char *p;
+      if (!dir)
+        return -1;
+      /* We already know file2 does not end in slash.  Strip off the
+         basename, then check that the dirname exists.  */
+      p = strrchr (dir, '/');
+      if (p)
+        {
+          *p = '\0';
+          if (stat (dir, &st) == -1)
+            {
+              int saved_errno = errno;
+              free (dir);
+              errno = saved_errno;
+              return -1;
+            }
+        }
+      free (dir);
+    }
+  return link (file1, file2);
+}
+#endif /* HAVE_LINK */
diff --git a/gnu/linkat.c b/gnu/linkat.c
new file mode 100644 (file)
index 0000000..1f855cb
--- /dev/null
@@ -0,0 +1,316 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Create a hard link relative to open directories.
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "areadlink.h"
+#include "dirname.h"
+#include "filenamecat.h"
+#include "openat-priv.h"
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#ifndef MAXSYMLINKS
+# ifdef SYMLOOP_MAX
+#  define MAXSYMLINKS SYMLOOP_MAX
+# else
+#  define MAXSYMLINKS 20
+# endif
+#endif
+
+#if !HAVE_LINKAT
+
+/* Create a link.  If FILE1 is a symlink, either create a hardlink to
+   that symlink, or fake it by creating an identical symlink.  */
+# if LINK_FOLLOWS_SYMLINKS == 0
+#  define link_immediate link
+# else
+static int
+link_immediate (char const *file1, char const *file2)
+{
+  char *target = areadlink (file1);
+  if (target)
+    {
+      /* A symlink cannot be modified in-place.  Therefore, creating
+         an identical symlink behaves like a hard link to a symlink,
+         except for incorrect st_ino and st_nlink.  However, we must
+         be careful of EXDEV.  */
+      struct stat st1;
+      struct stat st2;
+      char *dir = mdir_name (file2);
+      if (!dir)
+        {
+          free (target);
+          errno = ENOMEM;
+          return -1;
+        }
+      if (lstat (file1, &st1) == 0 && stat (dir, &st2) == 0)
+        {
+          if (st1.st_dev == st2.st_dev)
+            {
+              int result = symlink (target, file2);
+              int saved_errno = errno;
+              free (target);
+              free (dir);
+              errno = saved_errno;
+              return result;
+            }
+          free (target);
+          free (dir);
+          errno = EXDEV;
+          return -1;
+        }
+      free (target);
+      free (dir);
+    }
+  if (errno == ENOMEM)
+    return -1;
+  return link (file1, file2);
+}
+# endif /* LINK_FOLLOWS_SYMLINKS == 0 */
+
+/* Create a link.  If FILE1 is a symlink, create a hardlink to the
+   canonicalized file.  */
+# if 0 < LINK_FOLLOWS_SYMLINKS
+#  define link_follow link
+# else
+static int
+link_follow (char const *file1, char const *file2)
+{
+  char *name = (char *) file1;
+  char *target;
+  int result;
+  int i = MAXSYMLINKS;
+
+  /* Using realpath or canonicalize_file_name is too heavy-handed: we
+     don't need an absolute name, and we don't need to resolve
+     intermediate symlinks, just the basename of each iteration.  */
+  while (i-- && (target = areadlink (name)))
+    {
+      if (IS_ABSOLUTE_FILE_NAME (target))
+        {
+          if (name != file1)
+            free (name);
+          name = target;
+        }
+      else
+        {
+          char *dir = mdir_name (name);
+          if (name != file1)
+            free (name);
+          if (!dir)
+            {
+              free (target);
+              errno = ENOMEM;
+              return -1;
+            }
+          name = mfile_name_concat (dir, target, NULL);
+          free (dir);
+          free (target);
+          if (!name)
+            {
+              errno = ENOMEM;
+              return -1;
+            }
+        }
+    }
+  if (i < 0)
+    {
+      target = NULL;
+      errno = ELOOP;
+    }
+  if (!target && errno != EINVAL)
+    {
+      if (name != file1)
+        {
+          int saved_errno = errno;
+          free (name);
+          errno = saved_errno;
+        }
+      return -1;
+    }
+  result = link (name, file2);
+  if (name != file1)
+    {
+      int saved_errno = errno;
+      free (name);
+      errno = saved_errno;
+    }
+  return result;
+}
+# endif /* 0 < LINK_FOLLOWS_SYMLINKS */
+
+/* Create a link to FILE1, in the directory open on descriptor FD1, to FILE2,
+   in the directory open on descriptor FD2.  If FILE1 is a symlink, FLAG
+   controls whether to dereference FILE1 first.  If possible, do it without
+   changing the working directory.  Otherwise, resort to using
+   save_cwd/fchdir, then rename/restore_cwd.  If either the save_cwd or
+   the restore_cwd fails, then give a diagnostic and exit nonzero.  */
+
+int
+linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
+{
+  if (flag & ~AT_SYMLINK_FOLLOW)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+  return at_func2 (fd1, file1, fd2, file2,
+                   flag ? link_follow : link_immediate);
+}
+
+#else /* HAVE_LINKAT */
+
+# undef linkat
+
+/* Create a link.  If FILE1 is a symlink, create a hardlink to the
+   canonicalized file.  */
+
+static int
+linkat_follow (int fd1, char const *file1, int fd2, char const *file2)
+{
+  char *name = (char *) file1;
+  char *target;
+  int result;
+  int i = MAXSYMLINKS;
+
+  /* There is no realpathat.  */
+  while (i-- && (target = areadlinkat (fd1, name)))
+    {
+      if (IS_ABSOLUTE_FILE_NAME (target))
+        {
+          if (name != file1)
+            free (name);
+          name = target;
+        }
+      else
+        {
+          char *dir = mdir_name (name);
+          if (name != file1)
+            free (name);
+          if (!dir)
+            {
+              free (target);
+              errno = ENOMEM;
+              return -1;
+            }
+          name = mfile_name_concat (dir, target, NULL);
+          free (dir);
+          free (target);
+          if (!name)
+            {
+              errno = ENOMEM;
+              return -1;
+            }
+        }
+    }
+  if (i < 0)
+    {
+      target = NULL;
+      errno = ELOOP;
+    }
+  if (!target && errno != EINVAL)
+    {
+      if (name != file1)
+        {
+          int saved_errno = errno;
+          free (name);
+          errno = saved_errno;
+        }
+      return -1;
+    }
+  result = linkat (fd1, name, fd2, file2, 0);
+  if (name != file1)
+    {
+      int saved_errno = errno;
+      free (name);
+      errno = saved_errno;
+    }
+  return result;
+}
+
+
+/* Like linkat, but guarantee that AT_SYMLINK_FOLLOW works even on
+   older Linux kernels.  */
+
+int
+rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
+{
+  if (flag & ~AT_SYMLINK_FOLLOW)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+#if LINKAT_TRAILING_SLASH_BUG
+  /* Reject trailing slashes on non-directories.  */
+  {
+    size_t len1 = strlen (file1);
+    size_t len2 = strlen (file2);
+    if ((len1 && file1[len1 - 1] == '/')
+        || (len2 && file2[len2 - 1] == '/'))
+      {
+        /* Let linkat() decide whether hard-linking directories is legal.
+           If fstatat() fails, then linkat() should fail for the same reason;
+           if fstatat() succeeds, require a directory.  */
+        struct stat st;
+        if (fstatat (fd1, file1, &st, flag ? 0 : AT_SYMLINK_NOFOLLOW))
+          return -1;
+        if (!S_ISDIR (st.st_mode))
+          {
+            errno = ENOTDIR;
+            return -1;
+          }
+      }
+  }
+#endif
+
+  if (!flag)
+    return linkat (fd1, file1, fd2, file2, flag);
+
+  /* Cache the information on whether the system call really works.  */
+  {
+    static int have_follow_really; /* 0 = unknown, 1 = yes, -1 = no */
+    if (0 <= have_follow_really)
+    {
+      int result = linkat (fd1, file1, fd2, file2, flag);
+      if (!(result == -1 && errno == EINVAL))
+        {
+          have_follow_really = 1;
+          return result;
+        }
+      have_follow_really = -1;
+    }
+  }
+  return linkat_follow (fd1, file1, fd2, file2);
+}
+
+#endif /* HAVE_LINKAT */
index 4255174418b5b14cde8935f6df3f38bd86413ac0..794fec6bef28f2965436a94abf8f6bd8b8e51186 100644 (file)
@@ -371,10 +371,9 @@ locale_charset (void)
   codeset = nl_langinfo (CODESET);
 
 #  ifdef __CYGWIN__
-  /* Cygwin 1.5.x does not have locales.  nl_langinfo (CODESET) always
-     returns "US-ASCII".  As long as this is not fixed, return the suffix
-     of the locale name from the environment variables (if present) or
-     the codepage as a number.  */
+  /* Cygwin < 1.7 does not have locales.  nl_langinfo (CODESET) always
+     returns "US-ASCII".  Return the suffix of the locale name from the
+     environment variables (if present) or the codepage as a number.  */
   if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
     {
       const char *locale;
index d9eec75e5d114cced0bb6ead665fabbdea15f375..3daa8582df0d2367086355e2ca8a090b36684c27 100644 (file)
 #include <config.h>
 /* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h.  */
 #ifdef malloc
-# define NEED_MALLOC_GNU
+# define NEED_MALLOC_GNU 1
 # undef malloc
+/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
+#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU
+# define NEED_MALLOC_GNU 1
 #endif
 
 /* Specification.  */
@@ -43,7 +46,7 @@ rpl_malloc (size_t n)
 {
   void *result;
 
-#ifdef NEED_MALLOC_GNU
+#if NEED_MALLOC_GNU
   if (n == 0)
     n = 1;
 #endif
index 6b59638e2a5c730f17d17de24fd8d4b475489d2f..8992000d9c3bad9ffbe8b825add30dd50d6b8c91 100644 (file)
 /* Specification.  */
 #include "malloca.h"
 
+#include "verify.h"
+
+/* Use the system functions, not the gnulib overrides in this file.  */
+#undef malloc
+
 /* The speed critical point in this file is freea() applied to an alloca()
    result: it must be fast, to match the speed of alloca().  The speed of
    mmalloca() and freea() in the other case are not critical, because they
@@ -52,8 +57,7 @@ struct preliminary_header { void *next; char room[MAGIC_SIZE]; };
 #define HEADER_SIZE \
   (((sizeof (struct preliminary_header) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max)
 struct header { void *next; char room[HEADER_SIZE - sizeof (struct preliminary_header) + MAGIC_SIZE]; };
-/* Verify that HEADER_SIZE == sizeof (struct header).  */
-typedef int verify1[2 * (HEADER_SIZE == sizeof (struct header)) - 1];
+verify (HEADER_SIZE == sizeof (struct header));
 /* We make the hash table quite big, so that during lookups the probability
    of empty hash buckets is quite high.  There is no need to make the hash
    table resizable, because when the hash table gets filled so much that the
index c782a732bf2269b10884503df68a415b6e0becdd..d2d618e0d8658a7db69865083c870d20cff4df4d 100644 (file)
@@ -38,7 +38,8 @@
 
 /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
    Additionally, it declares _mkdir (and depending on compile flags, an
-   alias mkdir), only in the nonstandard io.h.  */
+   alias mkdir), only in the nonstandard includes <direct.h> and <io.h>,
+   which are included in the <sys/stat.h> override.  */
 #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
 # define mkdir(name,mode) _mkdir (name)
 # define maybe_unused _GL_UNUSED
diff --git a/gnu/mkfifo.c b/gnu/mkfifo.c
new file mode 100644 (file)
index 0000000..2bd9245
--- /dev/null
@@ -0,0 +1,60 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Create a named fifo.
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <string.h>
+
+#if !HAVE_MKFIFO
+/* Mingw lacks mkfifo; always fail with ENOSYS.  */
+
+int
+mkfifo (char const *name _GL_UNUSED, mode_t mode _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#else /* HAVE_MKFIFO */
+
+# undef mkfifo
+
+/* Create a named fifo FILE, with access permissions in MODE.  Work
+around trailing slash bugs.  */
+
+int
+rpl_mkfifo (char const *name, mode_t mode)
+{
+# if MKFIFO_TRAILING_SLASH_BUG
+  size_t len = strlen (name);
+  if (len && name[len - 1] == '/')
+    {
+      struct stat st;
+      if (stat (name, &st) == 0)
+        errno = EEXIST;
+      return -1;
+    }
+# endif
+  return mkfifo (name, mode);
+}
+#endif /* HAVE_MKFIFO */
diff --git a/gnu/mkfifoat.c b/gnu/mkfifoat.c
new file mode 100644 (file)
index 0000000..814351d
--- /dev/null
@@ -0,0 +1,57 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Create a named fifo relative to an open directory.
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#if !HAVE_MKFIFO
+
+# include <errno.h>
+
+/* Mingw lacks mkfifo, so this wrapper is trivial.  */
+
+int
+mkfifoat (int fd _GL_UNUSED, char const *path _GL_UNUSED,
+          mode_t mode _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#else /* HAVE_MKFIFO */
+
+/* Create a named fifo FILE relative to directory FD, with access
+   permissions in MODE.  If possible, do it without changing the
+   working directory.  Otherwise, resort to using save_cwd/fchdir,
+   then mkfifo/restore_cwd.  If either the save_cwd or the restore_cwd
+   fails, then give a diagnostic and exit nonzero.  */
+
+# define AT_FUNC_NAME mkfifoat
+# define AT_FUNC_F1 mkfifo
+# define AT_FUNC_POST_FILE_PARAM_DECLS , mode_t mode
+# define AT_FUNC_POST_FILE_ARGS        , mode
+# include "at-func.c"
+# undef AT_FUNC_NAME
+# undef AT_FUNC_F1
+# undef AT_FUNC_POST_FILE_PARAM_DECLS
+# undef AT_FUNC_POST_FILE_ARGS
+
+#endif /* HAVE_MKFIFO */
diff --git a/gnu/mknod.c b/gnu/mknod.c
new file mode 100644 (file)
index 0000000..01e5cc4
--- /dev/null
@@ -0,0 +1,76 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Create a device inode.
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <string.h>
+
+#if !HAVE_MKNOD
+/* Mingw lacks mknod; always fail with ENOSYS.  */
+
+int
+mknod (char const *name _GL_UNUSED, mode_t mode _GL_UNUSED,
+       dev_t dev _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#else /* HAVE_MKNOD */
+
+# undef mknod
+
+/* Create a file system node FILE, with access permissions and file
+   type in MODE, and device type in DEV.  Usually, non-root
+   applications can only create named fifos (mode includes S_IFIFO),
+   with DEV set to 0.  Also work around trailing slash bugs.  */
+
+int
+rpl_mknod (char const *name, mode_t mode, dev_t dev)
+{
+# if MKFIFO_TRAILING_SLASH_BUG
+  /* Trailing slash only makes sense for directories.  Of course,
+     using mknod to create a directory is not very portable, so it may
+     still fail later on.  */
+  if (!S_ISDIR (mode))
+    {
+      size_t len = strlen (name);
+      if (len && name[len - 1] == '/')
+        {
+          struct stat st;
+          if (stat (name, &st) == 0)
+            errno = EEXIST;
+          return -1;
+        }
+    }
+# endif
+# if MKNOD_FIFO_BUG
+  /* POSIX requires mknod to create fifos for non-privileged
+     processes, but BSD implementations fail with EPERM.  */
+  if (S_ISFIFO (mode) && dev == 0)
+    return mkfifo (name, mode & ~S_IFIFO);
+# endif
+  return mknod (name, mode, dev);
+}
+
+#endif /* HAVE_MKNOD */
diff --git a/gnu/mknodat.c b/gnu/mknodat.c
new file mode 100644 (file)
index 0000000..19a2fcd
--- /dev/null
@@ -0,0 +1,59 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Create an inode relative to an open directory.
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#if !HAVE_MKNOD
+
+# include <errno.h>
+
+/* Mingw lacks mknod, so this wrapper is trivial.  */
+
+int
+mknodat (int fd _GL_UNUSED, char const *path _GL_UNUSED,
+         mode_t mode _GL_UNUSED, dev_t dev _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#else /* HAVE_MKFIFO */
+
+/* Create a file system node FILE relative to directory FD, with
+   access permissions and file type in MODE, and device type in DEV.
+   Usually, non-root applications can only create named fifos, with
+   DEV set to 0.  If possible, create the node without changing the
+   working directory.  Otherwise, resort to using save_cwd/fchdir,
+   then mknod/restore_cwd.  If either the save_cwd or the restore_cwd
+   fails, then give a diagnostic and exit nonzero.  */
+
+# define AT_FUNC_NAME mknodat
+# define AT_FUNC_F1 mknod
+# define AT_FUNC_POST_FILE_PARAM_DECLS , mode_t mode, dev_t dev
+# define AT_FUNC_POST_FILE_ARGS        , mode, dev
+# include "at-func.c"
+# undef AT_FUNC_NAME
+# undef AT_FUNC_F1
+# undef AT_FUNC_POST_FILE_PARAM_DECLS
+# undef AT_FUNC_POST_FILE_ARGS
+
+#endif /* HAVE_MKFIFO */
index a709942976c4443b6711af7ae4e35559bd1bac1e..4fcb76f34ea1985accb5979d909aff39f77bc547 100644 (file)
@@ -69,6 +69,10 @@ rpl_nl_langinfo (nl_item item)
         return "";
       }
 # endif
+# if GNULIB_defined_T_FMT_AMPM
+    case T_FMT_AMPM:
+      return "%I:%M:%S %p";
+# endif
 # if GNULIB_defined_ERA
     case ERA:
       /* The format is not standardized.  In glibc it is a sequence of strings
@@ -94,6 +98,12 @@ rpl_nl_langinfo (nl_item item)
       /* The format is not standardized.  In glibc it is a sequence of 10
          strings, appended in memory.  */
       return "\0\0\0\0\0\0\0\0\0\0";
+# endif
+# if GNULIB_defined_YESEXPR
+    case YESEXPR:
+      return "^[yY]";
+    case NOEXPR:
+      return "^[nN]";
 # endif
     default:
       break;
index 113aad817e432f049805074f9298518a33984bf2..f225a523b3ce5f4adac77db5b4fcef66033fb1ab 100644 (file)
@@ -105,10 +105,6 @@ Summary:
 
 #ifndef _OBSTACK_H
 #define _OBSTACK_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
 \f
 /* We need the type of a pointer subtraction.  If __PTRDIFF_TYPE__ is
    defined, as with GNU C, use that; that way we don't pollute the
@@ -141,6 +137,10 @@ extern "C" {
 
 #include <string.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct _obstack_chunk           /* Lives at front of each chunk. */
 {
   char  *limit;                 /* 1 past end of this chunk */
index 98b0c0592d70e8cede45bf5ed1bab7230f425bef..e3e11fc3d0dfeead8d193f97ef4eff152045fd15 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-#define inttostr offtostr
+#define anytostr offtostr
 #define inttype off_t
 #define inttype_is_signed 1
-#include "inttostr.c"
+#include "anytostr.c"
index 7c2bbb81d975266bc34162f1a494a35f55524b67..1d066962aa31e8791a48f87be8a01263a045f93b 100644 (file)
@@ -113,7 +113,8 @@ open (const char *filename, int flags, ...)
      override fstat() in fchdir.c to hide the fact that we have a
      dummy.  */
   if (REPLACE_OPEN_DIRECTORY && fd < 0 && errno == EACCES
-      && (flags & O_ACCMODE) == O_RDONLY)
+      && ((flags & O_ACCMODE) == O_RDONLY
+          || (O_SEARCH != O_RDONLY && (flags & O_ACCMODE) == O_SEARCH)))
     {
       struct stat statbuf;
       if (stat (filename, &statbuf) == 0 && S_ISDIR (statbuf.st_mode))
index e0693be38b0332a274879998d37839a572793901..9b4d9578b3227543dff965208b14a147622c1edc 100644 (file)
@@ -77,7 +77,7 @@ openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file)
          problem is exhibited on code that built on Solaris 8 and
          running on Solaris 10.  */
 
-      int proc_self_fd = open ("/proc/self/fd", O_RDONLY);
+      int proc_self_fd = open ("/proc/self/fd", O_SEARCH);
       if (proc_self_fd < 0)
         proc_status = -1;
       else
index f5e8a49dd7a3207d9b23318bc699013bb3f3764a..79e2b65c21f831a2cc4cfe4bce152dbed21dcf1d 100644 (file)
@@ -246,7 +246,7 @@ bool
 openat_needs_fchdir (void)
 {
   bool needs_fchdir = true;
-  int fd = open ("/", O_RDONLY);
+  int fd = open ("/", O_SEARCH);
 
   if (0 <= fd)
     {
index 7cc7ad99a5a99cf4aab74c0996d89f739810f810..590e5760175164d08ecd15f013e492f6c772ea0f 100644 (file)
@@ -95,22 +95,10 @@ lstatat (int fd, char const *name, struct stat *st)
   return fstatat (fd, name, st, AT_SYMLINK_NOFOLLOW);
 }
 
-#if GNULIB_FACCESSAT
 /* For now, there are no wrappers named laccessat or leuidaccessat,
    since gnulib doesn't support faccessat(,AT_SYMLINK_NOFOLLOW) and
-   since access rights on symlinks are of limited utility.  */
-
-static inline int
-accessat (int fd, char const *file, int mode)
-{
-  return faccessat (fd, file, mode, 0);
-}
-
-static inline int
-euidaccessat (int fd, char const *file, int mode)
-{
-  return faccessat (fd, file, mode, AT_EACCESS);
-}
-#endif
+   since access rights on symlinks are of limited utility.  Likewise,
+   wrappers are not provided for accessat or euidaccessat, so as to
+   avoid dragging in -lgen on some platforms.  */
 
 #endif /* _GL_HEADER_OPENAT */
diff --git a/gnu/parse-datetime.c b/gnu/parse-datetime.c
new file mode 100644 (file)
index 0000000..6a204c2
--- /dev/null
@@ -0,0 +1,3358 @@
+/* A Bison parser, made by GNU Bison 2.3.  */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.3"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 1
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     tAGO = 258,
+     tDST = 259,
+     tYEAR_UNIT = 260,
+     tMONTH_UNIT = 261,
+     tHOUR_UNIT = 262,
+     tMINUTE_UNIT = 263,
+     tSEC_UNIT = 264,
+     tDAY_UNIT = 265,
+     tDAY_SHIFT = 266,
+     tDAY = 267,
+     tDAYZONE = 268,
+     tLOCAL_ZONE = 269,
+     tMERIDIAN = 270,
+     tMONTH = 271,
+     tORDINAL = 272,
+     tZONE = 273,
+     tSNUMBER = 274,
+     tUNUMBER = 275,
+     tSDECIMAL_NUMBER = 276,
+     tUDECIMAL_NUMBER = 277
+   };
+#endif
+/* Tokens.  */
+#define tAGO 258
+#define tDST 259
+#define tYEAR_UNIT 260
+#define tMONTH_UNIT 261
+#define tHOUR_UNIT 262
+#define tMINUTE_UNIT 263
+#define tSEC_UNIT 264
+#define tDAY_UNIT 265
+#define tDAY_SHIFT 266
+#define tDAY 267
+#define tDAYZONE 268
+#define tLOCAL_ZONE 269
+#define tMERIDIAN 270
+#define tMONTH 271
+#define tORDINAL 272
+#define tZONE 273
+#define tSNUMBER 274
+#define tUNUMBER 275
+#define tSDECIMAL_NUMBER 276
+#define tUDECIMAL_NUMBER 277
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 1 "parse-datetime.y"
+
+/* Parse a string into an internal time stamp.
+
+   Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+   2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Originally written by Steven M. Bellovin <smb@research.att.com> while
+   at the University of North Carolina at Chapel Hill.  Later tweaked by
+   a couple of people on Usenet.  Completely overhauled by Rich $alz
+   <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
+
+   Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do
+   the right thing about local DST.  Also modified by Paul Eggert
+   <eggert@cs.ucla.edu> in February 2004 to support
+   nanosecond-resolution time stamps, and in October 2004 to support
+   TZ strings in dates.  */
+
+/* FIXME: Check for arithmetic overflow in all cases, not just
+   some of them.  */
+
+#include <config.h>
+
+#include "parse-datetime.h"
+
+#include "intprops.h"
+#include "timespec.h"
+#include "verify.h"
+
+/* There's no need to extend the stack, so there's no need to involve
+   alloca.  */
+#define YYSTACK_USE_ALLOCA 0
+
+/* Tell Bison how much stack space is needed.  20 should be plenty for
+   this grammar, which is not right recursive.  Beware setting it too
+   high, since that might cause problems on machines whose
+   implementations have lame stack-overflow checking.  */
+#define YYMAXDEPTH 20
+#define YYINITDEPTH YYMAXDEPTH
+
+/* Since the code of parse-datetime.y is not included in the Emacs executable
+   itself, there is no need to #define static in this file.  Even if
+   the code were included in the Emacs executable, it probably
+   wouldn't do any harm to #undef it here; this will only cause
+   problems if we try to write to a static variable, which I don't
+   think this code needs to do.  */
+#ifdef emacs
+# undef static
+#endif
+
+#include <c-ctype.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xalloc.h"
+
+/* Bison's skeleton tests _STDLIB_H, while some stdlib.h headers
+   use _STDLIB_H_ as witness.  Map the latter to the one bison uses.  */
+/* FIXME: this is temporary.  Remove when we have a mechanism to ensure
+   that the version we're using is fixed, too.  */
+#ifdef _STDLIB_H_
+# undef _STDLIB_H
+# define _STDLIB_H 1
+#endif
+
+/* ISDIGIT differs from isdigit, as follows:
+   - Its arg may be any int or unsigned int; it need not be an unsigned char
+     or EOF.
+   - It's typically faster.
+   POSIX says that only '0' through '9' are digits.  Prefer ISDIGIT to
+   isdigit unless it's important to use the locale's definition
+   of `digit' even when the host does not conform to POSIX.  */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+   truncating towards minus infinity.  A and B should be free of side
+   effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+   INT_BITS is the number of useful bits in an int.  GNU code can
+   assume that INT_BITS is at least 32.
+
+   ISO C99 says that A >> B is implementation-defined if A < 0.  Some
+   implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+   right in the usual way when A < 0, so SHR falls back on division if
+   ordinary A >> B doesn't seem to be the usual signed shift.  */
+#define SHR(a, b)       \
+  (-1 >> 1 == -1        \
+   ? (a) >> (b)         \
+   : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+#define EPOCH_YEAR 1970
+#define TM_YEAR_BASE 1900
+
+#define HOUR(x) ((x) * 60)
+
+/* long_time_t is a signed integer type that contains all time_t values.  */
+verify (TYPE_IS_INTEGER (time_t));
+#if TIME_T_FITS_IN_LONG_INT
+typedef long int long_time_t;
+#else
+typedef time_t long_time_t;
+#endif
+
+/* Lots of this code assumes time_t and time_t-like values fit into
+   long_time_t.  */
+verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
+        && TYPE_MAXIMUM (time_t) <= TYPE_MAXIMUM (long_time_t));
+
+/* FIXME: It also assumes that signed integer overflow silently wraps around,
+   but this is not true any more with recent versions of GCC 4.  */
+
+/* An integer value, and the number of digits in its textual
+   representation.  */
+typedef struct
+{
+  bool negative;
+  long int value;
+  size_t digits;
+} textint;
+
+/* An entry in the lexical lookup table.  */
+typedef struct
+{
+  char const *name;
+  int type;
+  int value;
+} table;
+
+/* Meridian: am, pm, or 24-hour style.  */
+enum { MERam, MERpm, MER24 };
+
+enum { BILLION = 1000000000, LOG10_BILLION = 9 };
+
+/* Relative times.  */
+typedef struct
+{
+  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
+  long int year;
+  long int month;
+  long int day;
+  long int hour;
+  long int minutes;
+  long_time_t seconds;
+  long int ns;
+} relative_time;
+
+#if HAVE_COMPOUND_LITERALS
+# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
+#else
+static relative_time const RELATIVE_TIME_0;
+#endif
+
+/* Information passed to and from the parser.  */
+typedef struct
+{
+  /* The input string remaining to be parsed. */
+  const char *input;
+
+  /* N, if this is the Nth Tuesday.  */
+  long int day_ordinal;
+
+  /* Day of week; Sunday is 0.  */
+  int day_number;
+
+  /* tm_isdst flag for the local zone.  */
+  int local_isdst;
+
+  /* Time zone, in minutes east of UTC.  */
+  long int time_zone;
+
+  /* Style used for time.  */
+  int meridian;
+
+  /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds.  */
+  textint year;
+  long int month;
+  long int day;
+  long int hour;
+  long int minutes;
+  struct timespec seconds; /* includes nanoseconds */
+
+  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
+  relative_time rel;
+
+  /* Presence or counts of nonterminals of various flavors parsed so far.  */
+  bool timespec_seen;
+  bool rels_seen;
+  size_t dates_seen;
+  size_t days_seen;
+  size_t local_zones_seen;
+  size_t dsts_seen;
+  size_t times_seen;
+  size_t zones_seen;
+
+  /* Table of local time zone abbrevations, terminated by a null entry.  */
+  table local_time_zone_table[3];
+} parser_control;
+
+union YYSTYPE;
+static int yylex (union YYSTYPE *, parser_control *);
+static int yyerror (parser_control const *, char const *);
+static long int time_zone_hhmm (parser_control *, textint, long int);
+
+/* Extract into *PC any date and time info from a string of digits
+   of the form e.g., YYYYMMDD, YYMMDD, HHMM, HH (and sometimes YYY,
+   YYYY, ...).  */
+static void
+digits_to_date_time (parser_control *pc, textint text_int)
+{
+  if (pc->dates_seen && ! pc->year.digits
+      && ! pc->rels_seen && (pc->times_seen || 2 < text_int.digits))
+    pc->year = text_int;
+  else
+    {
+      if (4 < text_int.digits)
+        {
+          pc->dates_seen++;
+          pc->day = text_int.value % 100;
+          pc->month = (text_int.value / 100) % 100;
+          pc->year.value = text_int.value / 10000;
+          pc->year.digits = text_int.digits - 4;
+        }
+      else
+        {
+          pc->times_seen++;
+          if (text_int.digits <= 2)
+            {
+              pc->hour = text_int.value;
+              pc->minutes = 0;
+            }
+          else
+            {
+              pc->hour = text_int.value / 100;
+              pc->minutes = text_int.value % 100;
+            }
+          pc->seconds.tv_sec = 0;
+          pc->seconds.tv_nsec = 0;
+          pc->meridian = MER24;
+        }
+    }
+}
+
+/* Increment PC->rel by FACTOR * REL (FACTOR is 1 or -1).  */
+static void
+apply_relative_time (parser_control *pc, relative_time rel, int factor)
+{
+  pc->rel.ns += factor * rel.ns;
+  pc->rel.seconds += factor * rel.seconds;
+  pc->rel.minutes += factor * rel.minutes;
+  pc->rel.hour += factor * rel.hour;
+  pc->rel.day += factor * rel.day;
+  pc->rel.month += factor * rel.month;
+  pc->rel.year += factor * rel.year;
+  pc->rels_seen = true;
+}
+
+/* Set PC-> hour, minutes, seconds and nanoseconds members from arguments.  */
+static void
+set_hhmmss (parser_control *pc, long int hour, long int minutes,
+            time_t sec, long int nsec)
+{
+  pc->hour = hour;
+  pc->minutes = minutes;
+  pc->seconds.tv_sec = sec;
+  pc->seconds.tv_nsec = nsec;
+}
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 293 "parse-datetime.y"
+{
+  long int intval;
+  textint textintval;
+  struct timespec timespec;
+  relative_time rel;
+}
+/* Line 187 of yacc.c.  */
+#line 429 "parse-datetime.c"
+       YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 216 of yacc.c.  */
+#line 442 "parse-datetime.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# else
+#  define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+    int i;
+#endif
+{
+  return i;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   elif defined __BUILTIN_VA_ARG_INCR
+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  endif
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+            && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         YYSIZE_T yyi;                         \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
+      while (YYID (0))
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)                                       \
+    do                                                                 \
+      {                                                                        \
+       YYSIZE_T yynewbytes;                                            \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        \
+    while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state.  */
+#define YYFINAL  12
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   98
+
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  27
+/* YYNNTS -- Number of nonterminals.  */
+#define YYNNTS  21
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  82
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  100
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   277
+
+#define YYTRANSLATE(YYX)                                               \
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint8 yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    25,     2,     2,    26,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    24,     2,
+       2,     2,     2,     2,    23,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint8 yyprhs[] =
+{
+       0,     0,     3,     5,     7,    10,    11,    14,    16,    18,
+      20,    22,    24,    26,    28,    30,    33,    38,    44,    51,
+      59,    61,    64,    66,    69,    73,    75,    78,    80,    83,
+      86,    89,    93,    99,   103,   107,   111,   114,   119,   122,
+     126,   129,   131,   133,   136,   139,   141,   144,   147,   149,
+     152,   155,   157,   160,   163,   165,   168,   171,   173,   176,
+     179,   182,   185,   187,   189,   192,   195,   198,   201,   204,
+     207,   209,   211,   213,   215,   217,   219,   221,   223,   226,
+     227,   230,   231
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int8 yyrhs[] =
+{
+      28,     0,    -1,    29,    -1,    30,    -1,    23,    41,    -1,
+      -1,    30,    31,    -1,    32,    -1,    33,    -1,    34,    -1,
+      36,    -1,    35,    -1,    37,    -1,    44,    -1,    45,    -1,
+      20,    15,    -1,    20,    24,    20,    47,    -1,    20,    24,
+      20,    19,    46,    -1,    20,    24,    20,    24,    43,    47,
+      -1,    20,    24,    20,    24,    43,    19,    46,    -1,    14,
+      -1,    14,     4,    -1,    18,    -1,    18,    39,    -1,    18,
+      19,    46,    -1,    13,    -1,    18,     4,    -1,    12,    -1,
+      12,    25,    -1,    17,    12,    -1,    20,    12,    -1,    20,
+      26,    20,    -1,    20,    26,    20,    26,    20,    -1,    20,
+      19,    19,    -1,    20,    16,    19,    -1,    16,    19,    19,
+      -1,    16,    20,    -1,    16,    20,    25,    20,    -1,    20,
+      16,    -1,    20,    16,    20,    -1,    38,     3,    -1,    38,
+      -1,    40,    -1,    17,     5,    -1,    20,     5,    -1,     5,
+      -1,    17,     6,    -1,    20,     6,    -1,     6,    -1,    17,
+      10,    -1,    20,    10,    -1,    10,    -1,    17,     7,    -1,
+      20,     7,    -1,     7,    -1,    17,     8,    -1,    20,     8,
+      -1,     8,    -1,    17,     9,    -1,    20,     9,    -1,    21,
+       9,    -1,    22,     9,    -1,     9,    -1,    39,    -1,    19,
+       5,    -1,    19,     6,    -1,    19,    10,    -1,    19,     7,
+      -1,    19,     8,    -1,    19,     9,    -1,    11,    -1,    42,
+      -1,    43,    -1,    21,    -1,    19,    -1,    22,    -1,    20,
+      -1,    20,    -1,    20,    39,    -1,    -1,    24,    20,    -1,
+      -1,    15,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const yytype_uint16 yyrline[] =
+{
+       0,   319,   319,   320,   324,   331,   333,   337,   339,   341,
+     343,   345,   347,   348,   349,   353,   358,   363,   370,   375,
+     385,   390,   398,   400,   403,   405,   407,   412,   417,   422,
+     427,   435,   440,   460,   467,   475,   483,   488,   494,   499,
+     508,   510,   512,   517,   519,   521,   523,   525,   527,   529,
+     531,   533,   535,   537,   539,   541,   543,   545,   547,   549,
+     551,   553,   555,   557,   561,   563,   565,   567,   569,   571,
+     576,   580,   580,   583,   584,   589,   590,   595,   600,   611,
+     612,   618,   619
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "tAGO", "tDST", "tYEAR_UNIT",
+  "tMONTH_UNIT", "tHOUR_UNIT", "tMINUTE_UNIT", "tSEC_UNIT", "tDAY_UNIT",
+  "tDAY_SHIFT", "tDAY", "tDAYZONE", "tLOCAL_ZONE", "tMERIDIAN", "tMONTH",
+  "tORDINAL", "tZONE", "tSNUMBER", "tUNUMBER", "tSDECIMAL_NUMBER",
+  "tUDECIMAL_NUMBER", "'@'", "':'", "','", "'/'", "$accept", "spec",
+  "timespec", "items", "item", "time", "local_zone", "zone", "day", "date",
+  "rel", "relunit", "relunit_snumber", "dayshift", "seconds",
+  "signed_seconds", "unsigned_seconds", "number", "hybrid",
+  "o_colon_minutes", "o_merid", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const yytype_uint16 yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,    64,    58,    44,    47
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,    27,    28,    28,    29,    30,    30,    31,    31,    31,
+      31,    31,    31,    31,    31,    32,    32,    32,    32,    32,
+      33,    33,    34,    34,    34,    34,    34,    35,    35,    35,
+      35,    36,    36,    36,    36,    36,    36,    36,    36,    36,
+      37,    37,    37,    38,    38,    38,    38,    38,    38,    38,
+      38,    38,    38,    38,    38,    38,    38,    38,    38,    38,
+      38,    38,    38,    38,    39,    39,    39,    39,    39,    39,
+      40,    41,    41,    42,    42,    43,    43,    44,    45,    46,
+      46,    47,    47
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     1,     1,     2,     0,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     4,     5,     6,     7,
+       1,     2,     1,     2,     3,     1,     2,     1,     2,     2,
+       2,     3,     5,     3,     3,     3,     2,     4,     2,     3,
+       2,     1,     1,     2,     2,     1,     2,     2,     1,     2,
+       2,     1,     2,     2,     1,     2,     2,     1,     2,     2,
+       2,     2,     1,     1,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       2,     0,     1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_uint8 yydefact[] =
+{
+       5,     0,     0,     2,     3,    74,    76,    73,    75,     4,
+      71,    72,     1,    45,    48,    54,    57,    62,    51,    70,
+      27,    25,    20,     0,     0,    22,     0,    77,     0,     0,
+       6,     7,     8,     9,    11,    10,    12,    41,    63,    42,
+      13,    14,    28,    21,     0,    36,    43,    46,    52,    55,
+      58,    49,    29,    26,    79,    23,    64,    65,    67,    68,
+      69,    66,    44,    47,    53,    56,    59,    50,    30,    15,
+      38,     0,     0,     0,    78,    60,    61,    40,    35,     0,
+       0,    24,    34,    39,    33,    81,    31,    37,    80,    82,
+      79,     0,    16,     0,    17,    81,    32,    79,    18,    19
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int8 yydefgoto[] =
+{
+      -1,     2,     3,     4,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,     9,    10,    11,    40,    41,    81,
+      92
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -82
+static const yytype_int8 yypact[] =
+{
+     -17,    56,    15,   -82,    26,   -82,   -82,   -82,   -82,   -82,
+     -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,
+      36,   -82,    68,    10,    50,     9,    59,    -5,    72,    73,
+     -82,   -82,   -82,   -82,   -82,   -82,   -82,    80,   -82,   -82,
+     -82,   -82,   -82,   -82,    65,    61,   -82,   -82,   -82,   -82,
+     -82,   -82,   -82,   -82,    17,   -82,   -82,   -82,   -82,   -82,
+     -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,
+      60,    44,    67,    69,   -82,   -82,   -82,   -82,   -82,    70,
+      71,   -82,   -82,   -82,   -82,    -7,    62,   -82,   -82,   -82,
+      74,    -2,   -82,    75,   -82,    55,   -82,    74,   -82,   -82
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int8 yypgoto[] =
+{
+     -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,   -82,
+     -82,   -82,    46,   -82,   -82,   -82,    -6,   -82,   -82,   -81,
+      -3
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -1
+static const yytype_uint8 yytable[] =
+{
+      62,    63,    64,    65,    66,    67,     1,    68,    89,    94,
+      69,    70,    90,    53,    71,    12,    99,    91,     6,    72,
+       8,    73,    56,    57,    58,    59,    60,    61,    54,    44,
+      45,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    80,    23,    24,    25,    26,    27,    28,    29,    56,
+      57,    58,    59,    60,    61,    46,    47,    48,    49,    50,
+      51,    42,    52,    84,    56,    57,    58,    59,    60,    61,
+      89,    55,    43,    74,    97,     5,     6,     7,     8,    82,
+      83,    75,    76,    77,    78,    95,    79,    85,    93,    86,
+      87,    88,    98,     0,     0,    96,     0,     0,    80
+};
+
+static const yytype_int8 yycheck[] =
+{
+       5,     6,     7,     8,     9,    10,    23,    12,    15,    90,
+      15,    16,    19,     4,    19,     0,    97,    24,    20,    24,
+      22,    26,     5,     6,     7,     8,     9,    10,    19,    19,
+      20,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    24,    16,    17,    18,    19,    20,    21,    22,     5,
+       6,     7,     8,     9,    10,     5,     6,     7,     8,     9,
+      10,    25,    12,    19,     5,     6,     7,     8,     9,    10,
+      15,    25,     4,    27,    19,    19,    20,    21,    22,    19,
+      20,     9,     9,     3,    19,    91,    25,    20,    26,    20,
+      20,    20,    95,    -1,    -1,    20,    -1,    -1,    24
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint8 yystos[] =
+{
+       0,    23,    28,    29,    30,    19,    20,    21,    22,    41,
+      42,    43,     0,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    16,    17,    18,    19,    20,    21,    22,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      44,    45,    25,     4,    19,    20,     5,     6,     7,     8,
+       9,    10,    12,     4,    19,    39,     5,     6,     7,     8,
+       9,    10,     5,     6,     7,     8,     9,    10,    12,    15,
+      16,    19,    24,    26,    39,     9,     9,     3,    19,    25,
+      24,    46,    19,    20,    19,    20,    20,    20,    20,    15,
+      19,    24,    47,    26,    46,    43,    20,    19,    47,    46
+};
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF          0
+
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL         goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yytoken = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK (1);                                          \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror (pc, YY_("syntax error: cannot back up")); \
+      YYERROR;                                                 \
+    }                                                          \
+while (YYID (0))
+
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (YYID (N))                                                    \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)                 \
+     fprintf (File, "%d.%d-%d.%d",                     \
+             (Loc).first_line, (Loc).first_column,     \
+             (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval, pc)
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    YYFPRINTF Args;                            \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                   \
+do {                                                                     \
+  if (yydebug)                                                           \
+    {                                                                    \
+      YYFPRINTF (stderr, "%s ", Title);                                          \
+      yy_symbol_print (stderr,                                           \
+                 Type, Value, pc); \
+      YYFPRINTF (stderr, "\n");                                                  \
+    }                                                                    \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+    parser_control *pc;
+#endif
+{
+  if (!yyvaluep)
+    return;
+  YYUSE (pc);
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
+# endif
+  switch (yytype)
+    {
+      default:
+       break;
+    }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep, pc)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+    parser_control *pc;
+#endif
+{
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc);
+  YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)                           \
+do {                                                           \
+  if (yydebug)                                                 \
+    yy_stack_print ((Bottom), (Top));                          \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_control *pc)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule, pc)
+    YYSTYPE *yyvsp;
+    int yyrule;
+    parser_control *pc;
+#endif
+{
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+            yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      fprintf (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+                      &(yyvsp[(yyi + 1) - (yynrhs)])
+                                      , pc);
+      fprintf (stderr, "\n");
+    }
+}
+
+# define YY_REDUCE_PRINT(Rule)         \
+do {                                   \
+  if (yydebug)                         \
+    yy_reduce_print (yyvsp, Rule, pc); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+\f
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined __GLIBC__ && defined _STRING_H
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
+{
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
+    continue;
+  return yylen;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      YYSIZE_T yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+       switch (*++yyp)
+         {
+         case '\'':
+         case ',':
+           goto do_not_strip_quotes;
+
+         case '\\':
+           if (*++yyp != '\\')
+             goto do_not_strip_quotes;
+           /* Fall through.  */
+         default:
+           if (yyres)
+             yyres[yyn] = *yyp;
+           yyn++;
+           break;
+
+         case '"':
+           if (yyres)
+             yyres[yyn] = '\0';
+           return yyn;
+         }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into YYRESULT an error message about the unexpected token
+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+   including the terminating null byte.  If YYRESULT is null, do not
+   copy anything; just return the number of bytes that would be
+   copied.  As a special case, return 0 if an ordinary "syntax error"
+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+   size calculation.  */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+  int yyn = yypact[yystate];
+
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+    return 0;
+  else
+    {
+      int yytype = YYTRANSLATE (yychar);
+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+      YYSIZE_T yysize = yysize0;
+      YYSIZE_T yysize1;
+      int yysize_overflow = 0;
+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+      int yyx;
+
+# if 0
+      /* This is so xgettext sees the translatable formats that are
+        constructed on the fly.  */
+      YY_("syntax error, unexpected %s");
+      YY_("syntax error, unexpected %s, expecting %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+      char *yyfmt;
+      char const *yyf;
+      static char const yyunexpected[] = "syntax error, unexpected %s";
+      static char const yyexpecting[] = ", expecting %s";
+      static char const yyor[] = " or %s";
+      char yyformat[sizeof yyunexpected
+                   + sizeof yyexpecting - 1
+                   + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+                      * (sizeof yyor - 1))];
+      char const *yyprefix = yyexpecting;
+
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+        YYCHECK.  */
+      int yyxbegin = yyn < 0 ? -yyn : 0;
+
+      /* Stay within bounds of both yycheck and yytname.  */
+      int yychecklim = YYLAST - yyn + 1;
+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+      int yycount = 1;
+
+      yyarg[0] = yytname[yytype];
+      yyfmt = yystpcpy (yyformat, yyunexpected);
+
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+       if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+         {
+           if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+             {
+               yycount = 1;
+               yysize = yysize0;
+               yyformat[sizeof yyunexpected - 1] = '\0';
+               break;
+             }
+           yyarg[yycount++] = yytname[yyx];
+           yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+           yysize_overflow |= (yysize1 < yysize);
+           yysize = yysize1;
+           yyfmt = yystpcpy (yyfmt, yyprefix);
+           yyprefix = yyor;
+         }
+
+      yyf = YY_(yyformat);
+      yysize1 = yysize + yystrlen (yyf);
+      yysize_overflow |= (yysize1 < yysize);
+      yysize = yysize1;
+
+      if (yysize_overflow)
+       return YYSIZE_MAXIMUM;
+
+      if (yyresult)
+       {
+         /* Avoid sprintf, as that infringes on the user's name space.
+            Don't have undefined behavior even if the translation
+            produced a string with the wrong number of "%s"s.  */
+         char *yyp = yyresult;
+         int yyi = 0;
+         while ((*yyp = *yyf) != '\0')
+           {
+             if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+               {
+                 yyp += yytnamerr (yyp, yyarg[yyi++]);
+                 yyf += 2;
+               }
+             else
+               {
+                 yyp++;
+                 yyf++;
+               }
+           }
+       }
+      return yysize;
+    }
+}
+#endif /* YYERROR_VERBOSE */
+\f
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_control *pc)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep, pc)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+    parser_control *pc;
+#endif
+{
+  YYUSE (yyvaluep);
+  YYUSE (pc);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+       break;
+    }
+}
+\f
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (parser_control *pc);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (parser_control *pc)
+#else
+int
+yyparse (pc)
+    parser_control *pc;
+#endif
+#endif
+{
+  /* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* The number of symbols on the RHS of the reduced rule.
+     Keep to zero when no symbol should be popped.  */
+  int yylen = 0;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed.  So pushing a state here evens the stacks.  */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack.  Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       yytype_int16 *yyss1 = yyss;
+
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  This used to be a
+          conditional around just the two extra args, but that might
+          be undefined if yyoverflow is a macro.  */
+       yyoverflow (YY_("memory exhausted"),
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+
+                   &yystacksize);
+
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+       goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       yytype_int16 *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyexhaustedlab;
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+  /* Do appropriate processing given the current state.  Read a
+     look-ahead token if we need one and don't already have one.  */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  yystate = yyn;
+  *++yyvsp = yylval;
+
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 4:
+#line 325 "parse-datetime.y"
+    {
+        pc->seconds = (yyvsp[(2) - (2)].timespec);
+        pc->timespec_seen = true;
+      }
+    break;
+
+  case 7:
+#line 338 "parse-datetime.y"
+    { pc->times_seen++; }
+    break;
+
+  case 8:
+#line 340 "parse-datetime.y"
+    { pc->local_zones_seen++; }
+    break;
+
+  case 9:
+#line 342 "parse-datetime.y"
+    { pc->zones_seen++; }
+    break;
+
+  case 10:
+#line 344 "parse-datetime.y"
+    { pc->dates_seen++; }
+    break;
+
+  case 11:
+#line 346 "parse-datetime.y"
+    { pc->days_seen++; }
+    break;
+
+  case 15:
+#line 354 "parse-datetime.y"
+    {
+        set_hhmmss (pc, (yyvsp[(1) - (2)].textintval).value, 0, 0, 0);
+        pc->meridian = (yyvsp[(2) - (2)].intval);
+      }
+    break;
+
+  case 16:
+#line 359 "parse-datetime.y"
+    {
+        set_hhmmss (pc, (yyvsp[(1) - (4)].textintval).value, (yyvsp[(3) - (4)].textintval).value, 0, 0);
+        pc->meridian = (yyvsp[(4) - (4)].intval);
+      }
+    break;
+
+  case 17:
+#line 364 "parse-datetime.y"
+    {
+        set_hhmmss (pc, (yyvsp[(1) - (5)].textintval).value, (yyvsp[(3) - (5)].textintval).value, 0, 0);
+        pc->meridian = MER24;
+        pc->zones_seen++;
+        pc->time_zone = time_zone_hhmm (pc, (yyvsp[(4) - (5)].textintval), (yyvsp[(5) - (5)].intval));
+      }
+    break;
+
+  case 18:
+#line 371 "parse-datetime.y"
+    {
+        set_hhmmss (pc, (yyvsp[(1) - (6)].textintval).value, (yyvsp[(3) - (6)].textintval).value, (yyvsp[(5) - (6)].timespec).tv_sec, (yyvsp[(5) - (6)].timespec).tv_nsec);
+        pc->meridian = (yyvsp[(6) - (6)].intval);
+      }
+    break;
+
+  case 19:
+#line 376 "parse-datetime.y"
+    {
+        set_hhmmss (pc, (yyvsp[(1) - (7)].textintval).value, (yyvsp[(3) - (7)].textintval).value, (yyvsp[(5) - (7)].timespec).tv_sec, (yyvsp[(5) - (7)].timespec).tv_nsec);
+        pc->meridian = MER24;
+        pc->zones_seen++;
+        pc->time_zone = time_zone_hhmm (pc, (yyvsp[(6) - (7)].textintval), (yyvsp[(7) - (7)].intval));
+      }
+    break;
+
+  case 20:
+#line 386 "parse-datetime.y"
+    {
+        pc->local_isdst = (yyvsp[(1) - (1)].intval);
+        pc->dsts_seen += (0 < (yyvsp[(1) - (1)].intval));
+      }
+    break;
+
+  case 21:
+#line 391 "parse-datetime.y"
+    {
+        pc->local_isdst = 1;
+        pc->dsts_seen += (0 < (yyvsp[(1) - (2)].intval)) + 1;
+      }
+    break;
+
+  case 22:
+#line 399 "parse-datetime.y"
+    { pc->time_zone = (yyvsp[(1) - (1)].intval); }
+    break;
+
+  case 23:
+#line 401 "parse-datetime.y"
+    { pc->time_zone = (yyvsp[(1) - (2)].intval);
+        apply_relative_time (pc, (yyvsp[(2) - (2)].rel), 1); }
+    break;
+
+  case 24:
+#line 404 "parse-datetime.y"
+    { pc->time_zone = (yyvsp[(1) - (3)].intval) + time_zone_hhmm (pc, (yyvsp[(2) - (3)].textintval), (yyvsp[(3) - (3)].intval)); }
+    break;
+
+  case 25:
+#line 406 "parse-datetime.y"
+    { pc->time_zone = (yyvsp[(1) - (1)].intval) + 60; }
+    break;
+
+  case 26:
+#line 408 "parse-datetime.y"
+    { pc->time_zone = (yyvsp[(1) - (2)].intval) + 60; }
+    break;
+
+  case 27:
+#line 413 "parse-datetime.y"
+    {
+        pc->day_ordinal = 0;
+        pc->day_number = (yyvsp[(1) - (1)].intval);
+      }
+    break;
+
+  case 28:
+#line 418 "parse-datetime.y"
+    {
+        pc->day_ordinal = 0;
+        pc->day_number = (yyvsp[(1) - (2)].intval);
+      }
+    break;
+
+  case 29:
+#line 423 "parse-datetime.y"
+    {
+        pc->day_ordinal = (yyvsp[(1) - (2)].intval);
+        pc->day_number = (yyvsp[(2) - (2)].intval);
+      }
+    break;
+
+  case 30:
+#line 428 "parse-datetime.y"
+    {
+        pc->day_ordinal = (yyvsp[(1) - (2)].textintval).value;
+        pc->day_number = (yyvsp[(2) - (2)].intval);
+      }
+    break;
+
+  case 31:
+#line 436 "parse-datetime.y"
+    {
+        pc->month = (yyvsp[(1) - (3)].textintval).value;
+        pc->day = (yyvsp[(3) - (3)].textintval).value;
+      }
+    break;
+
+  case 32:
+#line 441 "parse-datetime.y"
+    {
+        /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
+           otherwise as MM/DD/YY.
+           The goal in recognizing YYYY/MM/DD is solely to support legacy
+           machine-generated dates like those in an RCS log listing.  If
+           you want portability, use the ISO 8601 format.  */
+        if (4 <= (yyvsp[(1) - (5)].textintval).digits)
+          {
+            pc->year = (yyvsp[(1) - (5)].textintval);
+            pc->month = (yyvsp[(3) - (5)].textintval).value;
+            pc->day = (yyvsp[(5) - (5)].textintval).value;
+          }
+        else
+          {
+            pc->month = (yyvsp[(1) - (5)].textintval).value;
+            pc->day = (yyvsp[(3) - (5)].textintval).value;
+            pc->year = (yyvsp[(5) - (5)].textintval);
+          }
+      }
+    break;
+
+  case 33:
+#line 461 "parse-datetime.y"
+    {
+        /* ISO 8601 format.  YYYY-MM-DD.  */
+        pc->year = (yyvsp[(1) - (3)].textintval);
+        pc->month = -(yyvsp[(2) - (3)].textintval).value;
+        pc->day = -(yyvsp[(3) - (3)].textintval).value;
+      }
+    break;
+
+  case 34:
+#line 468 "parse-datetime.y"
+    {
+        /* e.g. 17-JUN-1992.  */
+        pc->day = (yyvsp[(1) - (3)].textintval).value;
+        pc->month = (yyvsp[(2) - (3)].intval);
+        pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
+        pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
+      }
+    break;
+
+  case 35:
+#line 476 "parse-datetime.y"
+    {
+        /* e.g. JUN-17-1992.  */
+        pc->month = (yyvsp[(1) - (3)].intval);
+        pc->day = -(yyvsp[(2) - (3)].textintval).value;
+        pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
+        pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
+      }
+    break;
+
+  case 36:
+#line 484 "parse-datetime.y"
+    {
+        pc->month = (yyvsp[(1) - (2)].intval);
+        pc->day = (yyvsp[(2) - (2)].textintval).value;
+      }
+    break;
+
+  case 37:
+#line 489 "parse-datetime.y"
+    {
+        pc->month = (yyvsp[(1) - (4)].intval);
+        pc->day = (yyvsp[(2) - (4)].textintval).value;
+        pc->year = (yyvsp[(4) - (4)].textintval);
+      }
+    break;
+
+  case 38:
+#line 495 "parse-datetime.y"
+    {
+        pc->day = (yyvsp[(1) - (2)].textintval).value;
+        pc->month = (yyvsp[(2) - (2)].intval);
+      }
+    break;
+
+  case 39:
+#line 500 "parse-datetime.y"
+    {
+        pc->day = (yyvsp[(1) - (3)].textintval).value;
+        pc->month = (yyvsp[(2) - (3)].intval);
+        pc->year = (yyvsp[(3) - (3)].textintval);
+      }
+    break;
+
+  case 40:
+#line 509 "parse-datetime.y"
+    { apply_relative_time (pc, (yyvsp[(1) - (2)].rel), -1); }
+    break;
+
+  case 41:
+#line 511 "parse-datetime.y"
+    { apply_relative_time (pc, (yyvsp[(1) - (1)].rel), 1); }
+    break;
+
+  case 42:
+#line 513 "parse-datetime.y"
+    { apply_relative_time (pc, (yyvsp[(1) - (1)].rel), 1); }
+    break;
+
+  case 43:
+#line 518 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].intval); }
+    break;
+
+  case 44:
+#line 520 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 45:
+#line 522 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = 1; }
+    break;
+
+  case 46:
+#line 524 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].intval); }
+    break;
+
+  case 47:
+#line 526 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 48:
+#line 528 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = 1; }
+    break;
+
+  case 49:
+#line 530 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); }
+    break;
+
+  case 50:
+#line 532 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); }
+    break;
+
+  case 51:
+#line 534 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (1)].intval); }
+    break;
+
+  case 52:
+#line 536 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].intval); }
+    break;
+
+  case 53:
+#line 538 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 54:
+#line 540 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = 1; }
+    break;
+
+  case 55:
+#line 542 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].intval); }
+    break;
+
+  case 56:
+#line 544 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 57:
+#line 546 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = 1; }
+    break;
+
+  case 58:
+#line 548 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].intval); }
+    break;
+
+  case 59:
+#line 550 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 60:
+#line 552 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].timespec).tv_sec; (yyval.rel).ns = (yyvsp[(1) - (2)].timespec).tv_nsec; }
+    break;
+
+  case 61:
+#line 554 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].timespec).tv_sec; (yyval.rel).ns = (yyvsp[(1) - (2)].timespec).tv_nsec; }
+    break;
+
+  case 62:
+#line 556 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = 1; }
+    break;
+
+  case 64:
+#line 562 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 65:
+#line 564 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 66:
+#line 566 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); }
+    break;
+
+  case 67:
+#line 568 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 68:
+#line 570 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 69:
+#line 572 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].textintval).value; }
+    break;
+
+  case 70:
+#line 577 "parse-datetime.y"
+    { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (1)].intval); }
+    break;
+
+  case 74:
+#line 585 "parse-datetime.y"
+    { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; }
+    break;
+
+  case 76:
+#line 591 "parse-datetime.y"
+    { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; }
+    break;
+
+  case 77:
+#line 596 "parse-datetime.y"
+    { digits_to_date_time (pc, (yyvsp[(1) - (1)].textintval)); }
+    break;
+
+  case 78:
+#line 601 "parse-datetime.y"
+    {
+        /* Hybrid all-digit and relative offset, so that we accept e.g.,
+           "YYYYMMDD +N days" as well as "YYYYMMDD N days".  */
+        digits_to_date_time (pc, (yyvsp[(1) - (2)].textintval));
+        apply_relative_time (pc, (yyvsp[(2) - (2)].rel), 1);
+      }
+    break;
+
+  case 79:
+#line 611 "parse-datetime.y"
+    { (yyval.intval) = -1; }
+    break;
+
+  case 80:
+#line 613 "parse-datetime.y"
+    { (yyval.intval) = (yyvsp[(2) - (2)].textintval).value; }
+    break;
+
+  case 81:
+#line 618 "parse-datetime.y"
+    { (yyval.intval) = MER24; }
+    break;
+
+  case 82:
+#line 620 "parse-datetime.y"
+    { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
+    break;
+
+
+/* Line 1267 of yacc.c.  */
+#line 2185 "parse-datetime.c"
+      default: break;
+    }
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if ! YYERROR_VERBOSE
+      yyerror (pc, YY_("syntax error"));
+#else
+      {
+       YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+       if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+         {
+           YYSIZE_T yyalloc = 2 * yysize;
+           if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+             yyalloc = YYSTACK_ALLOC_MAXIMUM;
+           if (yymsg != yymsgbuf)
+             YYSTACK_FREE (yymsg);
+           yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+           if (yymsg)
+             yymsg_alloc = yyalloc;
+           else
+             {
+               yymsg = yymsgbuf;
+               yymsg_alloc = sizeof yymsgbuf;
+             }
+         }
+
+       if (0 < yysize && yysize <= yymsg_alloc)
+         {
+           (void) yysyntax_error (yymsg, yystate, yychar);
+           yyerror (pc, yymsg);
+         }
+       else
+         {
+           yyerror (pc, YY_("syntax error"));
+           if (yysize != 0)
+             goto yyexhaustedlab;
+         }
+      }
+#endif
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+        error, discard it.  */
+
+      if (yychar <= YYEOF)
+       {
+         /* Return failure if at end of input.  */
+         if (yychar == YYEOF)
+           YYABORT;
+       }
+      else
+       {
+         yydestruct ("Error: discarding",
+                     yytoken, &yylval, pc);
+         yychar = YYEMPTY;
+       }
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 0)
+     goto yyerrorlab;
+
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYERROR.  */
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+       {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+           {
+             yyn = yytable[yyn];
+             if (0 < yyn)
+               break;
+           }
+       }
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+       YYABORT;
+
+
+      yydestruct ("Error: popping",
+                 yystos[yystate], yyvsp, pc);
+      YYPOPSTACK (1);
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token.  */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (pc, YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+                yytoken, &yylval, pc);
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYABORT or YYACCEPT.  */
+  YYPOPSTACK (yylen);
+  YY_STACK_PRINT (yyss, yyssp);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+                 yystos[*yyssp], yyvsp, pc);
+      YYPOPSTACK (1);
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
+#endif
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
+}
+
+
+#line 623 "parse-datetime.y"
+
+
+static table const meridian_table[] =
+{
+  { "AM",   tMERIDIAN, MERam },
+  { "A.M.", tMERIDIAN, MERam },
+  { "PM",   tMERIDIAN, MERpm },
+  { "P.M.", tMERIDIAN, MERpm },
+  { NULL, 0, 0 }
+};
+
+static table const dst_table[] =
+{
+  { "DST", tDST, 0 }
+};
+
+static table const month_and_day_table[] =
+{
+  { "JANUARY",  tMONTH,  1 },
+  { "FEBRUARY", tMONTH,  2 },
+  { "MARCH",    tMONTH,  3 },
+  { "APRIL",    tMONTH,  4 },
+  { "MAY",      tMONTH,  5 },
+  { "JUNE",     tMONTH,  6 },
+  { "JULY",     tMONTH,  7 },
+  { "AUGUST",   tMONTH,  8 },
+  { "SEPTEMBER",tMONTH,  9 },
+  { "SEPT",     tMONTH,  9 },
+  { "OCTOBER",  tMONTH, 10 },
+  { "NOVEMBER", tMONTH, 11 },
+  { "DECEMBER", tMONTH, 12 },
+  { "SUNDAY",   tDAY,    0 },
+  { "MONDAY",   tDAY,    1 },
+  { "TUESDAY",  tDAY,    2 },
+  { "TUES",     tDAY,    2 },
+  { "WEDNESDAY",tDAY,    3 },
+  { "WEDNES",   tDAY,    3 },
+  { "THURSDAY", tDAY,    4 },
+  { "THUR",     tDAY,    4 },
+  { "THURS",    tDAY,    4 },
+  { "FRIDAY",   tDAY,    5 },
+  { "SATURDAY", tDAY,    6 },
+  { NULL, 0, 0 }
+};
+
+static table const time_units_table[] =
+{
+  { "YEAR",     tYEAR_UNIT,      1 },
+  { "MONTH",    tMONTH_UNIT,     1 },
+  { "FORTNIGHT",tDAY_UNIT,      14 },
+  { "WEEK",     tDAY_UNIT,       7 },
+  { "DAY",      tDAY_UNIT,       1 },
+  { "HOUR",     tHOUR_UNIT,      1 },
+  { "MINUTE",   tMINUTE_UNIT,    1 },
+  { "MIN",      tMINUTE_UNIT,    1 },
+  { "SECOND",   tSEC_UNIT,       1 },
+  { "SEC",      tSEC_UNIT,       1 },
+  { NULL, 0, 0 }
+};
+
+/* Assorted relative-time words. */
+static table const relative_time_table[] =
+{
+  { "TOMORROW", tDAY_SHIFT,      1 },
+  { "YESTERDAY",tDAY_SHIFT,     -1 },
+  { "TODAY",    tDAY_SHIFT,      0 },
+  { "NOW",      tDAY_SHIFT,      0 },
+  { "LAST",     tORDINAL,       -1 },
+  { "THIS",     tORDINAL,        0 },
+  { "NEXT",     tORDINAL,        1 },
+  { "FIRST",    tORDINAL,        1 },
+/*{ "SECOND",   tORDINAL,        2 }, */
+  { "THIRD",    tORDINAL,        3 },
+  { "FOURTH",   tORDINAL,        4 },
+  { "FIFTH",    tORDINAL,        5 },
+  { "SIXTH",    tORDINAL,        6 },
+  { "SEVENTH",  tORDINAL,        7 },
+  { "EIGHTH",   tORDINAL,        8 },
+  { "NINTH",    tORDINAL,        9 },
+  { "TENTH",    tORDINAL,       10 },
+  { "ELEVENTH", tORDINAL,       11 },
+  { "TWELFTH",  tORDINAL,       12 },
+  { "AGO",      tAGO,            1 },
+  { NULL, 0, 0 }
+};
+
+/* The universal time zone table.  These labels can be used even for
+   time stamps that would not otherwise be valid, e.g., GMT time
+   stamps in London during summer.  */
+static table const universal_time_zone_table[] =
+{
+  { "GMT",      tZONE,     HOUR ( 0) }, /* Greenwich Mean */
+  { "UT",       tZONE,     HOUR ( 0) }, /* Universal (Coordinated) */
+  { "UTC",      tZONE,     HOUR ( 0) },
+  { NULL, 0, 0 }
+};
+
+/* The time zone table.  This table is necessarily incomplete, as time
+   zone abbreviations are ambiguous; e.g. Australians interpret "EST"
+   as Eastern time in Australia, not as US Eastern Standard Time.
+   You cannot rely on parse_datetime to handle arbitrary time zone
+   abbreviations; use numeric abbreviations like `-0500' instead.  */
+static table const time_zone_table[] =
+{
+  { "WET",      tZONE,     HOUR ( 0) }, /* Western European */
+  { "WEST",     tDAYZONE,  HOUR ( 0) }, /* Western European Summer */
+  { "BST",      tDAYZONE,  HOUR ( 0) }, /* British Summer */
+  { "ART",      tZONE,    -HOUR ( 3) }, /* Argentina */
+  { "BRT",      tZONE,    -HOUR ( 3) }, /* Brazil */
+  { "BRST",     tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */
+  { "NST",      tZONE,   -(HOUR ( 3) + 30) },   /* Newfoundland Standard */
+  { "NDT",      tDAYZONE,-(HOUR ( 3) + 30) },   /* Newfoundland Daylight */
+  { "AST",      tZONE,    -HOUR ( 4) }, /* Atlantic Standard */
+  { "ADT",      tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */
+  { "CLT",      tZONE,    -HOUR ( 4) }, /* Chile */
+  { "CLST",     tDAYZONE, -HOUR ( 4) }, /* Chile Summer */
+  { "EST",      tZONE,    -HOUR ( 5) }, /* Eastern Standard */
+  { "EDT",      tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */
+  { "CST",      tZONE,    -HOUR ( 6) }, /* Central Standard */
+  { "CDT",      tDAYZONE, -HOUR ( 6) }, /* Central Daylight */
+  { "MST",      tZONE,    -HOUR ( 7) }, /* Mountain Standard */
+  { "MDT",      tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */
+  { "PST",      tZONE,    -HOUR ( 8) }, /* Pacific Standard */
+  { "PDT",      tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */
+  { "AKST",     tZONE,    -HOUR ( 9) }, /* Alaska Standard */
+  { "AKDT",     tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */
+  { "HST",      tZONE,    -HOUR (10) }, /* Hawaii Standard */
+  { "HAST",     tZONE,    -HOUR (10) }, /* Hawaii-Aleutian Standard */
+  { "HADT",     tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */
+  { "SST",      tZONE,    -HOUR (12) }, /* Samoa Standard */
+  { "WAT",      tZONE,     HOUR ( 1) }, /* West Africa */
+  { "CET",      tZONE,     HOUR ( 1) }, /* Central European */
+  { "CEST",     tDAYZONE,  HOUR ( 1) }, /* Central European Summer */
+  { "MET",      tZONE,     HOUR ( 1) }, /* Middle European */
+  { "MEZ",      tZONE,     HOUR ( 1) }, /* Middle European */
+  { "MEST",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
+  { "MESZ",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
+  { "EET",      tZONE,     HOUR ( 2) }, /* Eastern European */
+  { "EEST",     tDAYZONE,  HOUR ( 2) }, /* Eastern European Summer */
+  { "CAT",      tZONE,     HOUR ( 2) }, /* Central Africa */
+  { "SAST",     tZONE,     HOUR ( 2) }, /* South Africa Standard */
+  { "EAT",      tZONE,     HOUR ( 3) }, /* East Africa */
+  { "MSK",      tZONE,     HOUR ( 3) }, /* Moscow */
+  { "MSD",      tDAYZONE,  HOUR ( 3) }, /* Moscow Daylight */
+  { "IST",      tZONE,    (HOUR ( 5) + 30) },   /* India Standard */
+  { "SGT",      tZONE,     HOUR ( 8) }, /* Singapore */
+  { "KST",      tZONE,     HOUR ( 9) }, /* Korea Standard */
+  { "JST",      tZONE,     HOUR ( 9) }, /* Japan Standard */
+  { "GST",      tZONE,     HOUR (10) }, /* Guam Standard */
+  { "NZST",     tZONE,     HOUR (12) }, /* New Zealand Standard */
+  { "NZDT",     tDAYZONE,  HOUR (12) }, /* New Zealand Daylight */
+  { NULL, 0, 0 }
+};
+
+/* Military time zone table. */
+static table const military_table[] =
+{
+  { "A", tZONE, -HOUR ( 1) },
+  { "B", tZONE, -HOUR ( 2) },
+  { "C", tZONE, -HOUR ( 3) },
+  { "D", tZONE, -HOUR ( 4) },
+  { "E", tZONE, -HOUR ( 5) },
+  { "F", tZONE, -HOUR ( 6) },
+  { "G", tZONE, -HOUR ( 7) },
+  { "H", tZONE, -HOUR ( 8) },
+  { "I", tZONE, -HOUR ( 9) },
+  { "K", tZONE, -HOUR (10) },
+  { "L", tZONE, -HOUR (11) },
+  { "M", tZONE, -HOUR (12) },
+  { "N", tZONE,  HOUR ( 1) },
+  { "O", tZONE,  HOUR ( 2) },
+  { "P", tZONE,  HOUR ( 3) },
+  { "Q", tZONE,  HOUR ( 4) },
+  { "R", tZONE,  HOUR ( 5) },
+  { "S", tZONE,  HOUR ( 6) },
+  { "T", tZONE,  HOUR ( 7) },
+  { "U", tZONE,  HOUR ( 8) },
+  { "V", tZONE,  HOUR ( 9) },
+  { "W", tZONE,  HOUR (10) },
+  { "X", tZONE,  HOUR (11) },
+  { "Y", tZONE,  HOUR (12) },
+  { "Z", tZONE,  HOUR ( 0) },
+  { NULL, 0, 0 }
+};
+
+\f
+
+/* Convert a time zone expressed as HH:MM into an integer count of
+   minutes.  If MM is negative, then S is of the form HHMM and needs
+   to be picked apart; otherwise, S is of the form HH.  As specified in
+   http://www.opengroup.org/susv3xbd/xbd_chap08.html#tag_08_03, allow
+   only valid TZ range, and consider first two digits as hours, if no
+   minutes specified.  */
+
+static long int
+time_zone_hhmm (parser_control *pc, textint s, long int mm)
+{
+  long int n_minutes;
+
+  /* If the length of S is 1 or 2 and no minutes are specified,
+     interpret it as a number of hours.  */
+  if (s.digits <= 2 && mm < 0)
+    s.value *= 100;
+
+  if (mm < 0)
+    n_minutes = (s.value / 100) * 60 + s.value % 100;
+  else
+    n_minutes = s.value * 60 + (s.negative ? -mm : mm);
+
+  /* If the absolute number of minutes is larger than 24 hours,
+     arrange to reject it by incrementing pc->zones_seen.  Thus,
+     we allow only values in the range UTC-24:00 to UTC+24:00.  */
+  if (24 * 60 < abs (n_minutes))
+    pc->zones_seen++;
+
+  return n_minutes;
+}
+
+static int
+to_hour (long int hours, int meridian)
+{
+  switch (meridian)
+    {
+    default: /* Pacify GCC.  */
+    case MER24:
+      return 0 <= hours && hours < 24 ? hours : -1;
+    case MERam:
+      return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1;
+    case MERpm:
+      return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1;
+    }
+}
+
+static long int
+to_year (textint textyear)
+{
+  long int year = textyear.value;
+
+  if (year < 0)
+    year = -year;
+
+  /* XPG4 suggests that years 00-68 map to 2000-2068, and
+     years 69-99 map to 1969-1999.  */
+  else if (textyear.digits == 2)
+    year += year < 69 ? 2000 : 1900;
+
+  return year;
+}
+
+static table const *
+lookup_zone (parser_control const *pc, char const *name)
+{
+  table const *tp;
+
+  for (tp = universal_time_zone_table; tp->name; tp++)
+    if (strcmp (name, tp->name) == 0)
+      return tp;
+
+  /* Try local zone abbreviations before those in time_zone_table, as
+     the local ones are more likely to be right.  */
+  for (tp = pc->local_time_zone_table; tp->name; tp++)
+    if (strcmp (name, tp->name) == 0)
+      return tp;
+
+  for (tp = time_zone_table; tp->name; tp++)
+    if (strcmp (name, tp->name) == 0)
+      return tp;
+
+  return NULL;
+}
+
+#if ! HAVE_TM_GMTOFF
+/* Yield the difference between *A and *B,
+   measured in seconds, ignoring leap seconds.
+   The body of this function is taken directly from the GNU C Library;
+   see src/strftime.c.  */
+static long int
+tm_diff (struct tm const *a, struct tm const *b)
+{
+  /* Compute intervening leap days correctly even if year is negative.
+     Take care to avoid int overflow in leap day calculations.  */
+  int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+  int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+  int a100 = a4 / 25 - (a4 % 25 < 0);
+  int b100 = b4 / 25 - (b4 % 25 < 0);
+  int a400 = SHR (a100, 2);
+  int b400 = SHR (b100, 2);
+  int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+  long int ayear = a->tm_year;
+  long int years = ayear - b->tm_year;
+  long int days = (365 * years + intervening_leap_days
+                   + (a->tm_yday - b->tm_yday));
+  return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+                + (a->tm_min - b->tm_min))
+          + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+static table const *
+lookup_word (parser_control const *pc, char *word)
+{
+  char *p;
+  char *q;
+  size_t wordlen;
+  table const *tp;
+  bool period_found;
+  bool abbrev;
+
+  /* Make it uppercase.  */
+  for (p = word; *p; p++)
+    {
+      unsigned char ch = *p;
+      *p = c_toupper (ch);
+    }
+
+  for (tp = meridian_table; tp->name; tp++)
+    if (strcmp (word, tp->name) == 0)
+      return tp;
+
+  /* See if we have an abbreviation for a month. */
+  wordlen = strlen (word);
+  abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');
+
+  for (tp = month_and_day_table; tp->name; tp++)
+    if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)
+      return tp;
+
+  if ((tp = lookup_zone (pc, word)))
+    return tp;
+
+  if (strcmp (word, dst_table[0].name) == 0)
+    return dst_table;
+
+  for (tp = time_units_table; tp->name; tp++)
+    if (strcmp (word, tp->name) == 0)
+      return tp;
+
+  /* Strip off any plural and try the units table again. */
+  if (word[wordlen - 1] == 'S')
+    {
+      word[wordlen - 1] = '\0';
+      for (tp = time_units_table; tp->name; tp++)
+        if (strcmp (word, tp->name) == 0)
+          return tp;
+      word[wordlen - 1] = 'S';  /* For "this" in relative_time_table.  */
+    }
+
+  for (tp = relative_time_table; tp->name; tp++)
+    if (strcmp (word, tp->name) == 0)
+      return tp;
+
+  /* Military time zones. */
+  if (wordlen == 1)
+    for (tp = military_table; tp->name; tp++)
+      if (word[0] == tp->name[0])
+        return tp;
+
+  /* Drop out any periods and try the time zone table again. */
+  for (period_found = false, p = q = word; (*p = *q); q++)
+    if (*q == '.')
+      period_found = true;
+    else
+      p++;
+  if (period_found && (tp = lookup_zone (pc, word)))
+    return tp;
+
+  return NULL;
+}
+
+static int
+yylex (YYSTYPE *lvalp, parser_control *pc)
+{
+  unsigned char c;
+  size_t count;
+
+  for (;;)
+    {
+      while (c = *pc->input, c_isspace (c))
+        pc->input++;
+
+      if (ISDIGIT (c) || c == '-' || c == '+')
+        {
+          char const *p;
+          int sign;
+          unsigned long int value;
+          if (c == '-' || c == '+')
+            {
+              sign = c == '-' ? -1 : 1;
+              while (c = *++pc->input, c_isspace (c))
+                continue;
+              if (! ISDIGIT (c))
+                /* skip the '-' sign */
+                continue;
+            }
+          else
+            sign = 0;
+          p = pc->input;
+          for (value = 0; ; value *= 10)
+            {
+              unsigned long int value1 = value + (c - '0');
+              if (value1 < value)
+                return '?';
+              value = value1;
+              c = *++p;
+              if (! ISDIGIT (c))
+                break;
+              if (ULONG_MAX / 10 < value)
+                return '?';
+            }
+          if ((c == '.' || c == ',') && ISDIGIT (p[1]))
+            {
+              time_t s;
+              int ns;
+              int digits;
+              unsigned long int value1;
+
+              /* Check for overflow when converting value to time_t.  */
+              if (sign < 0)
+                {
+                  s = - value;
+                  if (0 < s)
+                    return '?';
+                  value1 = -s;
+                }
+              else
+                {
+                  s = value;
+                  if (s < 0)
+                    return '?';
+                  value1 = s;
+                }
+              if (value != value1)
+                return '?';
+
+              /* Accumulate fraction, to ns precision.  */
+              p++;
+              ns = *p++ - '0';
+              for (digits = 2; digits <= LOG10_BILLION; digits++)
+                {
+                  ns *= 10;
+                  if (ISDIGIT (*p))
+                    ns += *p++ - '0';
+                }
+
+              /* Skip excess digits, truncating toward -Infinity.  */
+              if (sign < 0)
+                for (; ISDIGIT (*p); p++)
+                  if (*p != '0')
+                    {
+                      ns++;
+                      break;
+                    }
+              while (ISDIGIT (*p))
+                p++;
+
+              /* Adjust to the timespec convention, which is that
+                 tv_nsec is always a positive offset even if tv_sec is
+                 negative.  */
+              if (sign < 0 && ns)
+                {
+                  s--;
+                  if (! (s < 0))
+                    return '?';
+                  ns = BILLION - ns;
+                }
+
+              lvalp->timespec.tv_sec = s;
+              lvalp->timespec.tv_nsec = ns;
+              pc->input = p;
+              return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER;
+            }
+          else
+            {
+              lvalp->textintval.negative = sign < 0;
+              if (sign < 0)
+                {
+                  lvalp->textintval.value = - value;
+                  if (0 < lvalp->textintval.value)
+                    return '?';
+                }
+              else
+                {
+                  lvalp->textintval.value = value;
+                  if (lvalp->textintval.value < 0)
+                    return '?';
+                }
+              lvalp->textintval.digits = p - pc->input;
+              pc->input = p;
+              return sign ? tSNUMBER : tUNUMBER;
+            }
+        }
+
+      if (c_isalpha (c))
+        {
+          char buff[20];
+          char *p = buff;
+          table const *tp;
+
+          do
+            {
+              if (p < buff + sizeof buff - 1)
+                *p++ = c;
+              c = *++pc->input;
+            }
+          while (c_isalpha (c) || c == '.');
+
+          *p = '\0';
+          tp = lookup_word (pc, buff);
+          if (! tp)
+            return '?';
+          lvalp->intval = tp->value;
+          return tp->type;
+        }
+
+      if (c != '(')
+        return *pc->input++;
+      count = 0;
+      do
+        {
+          c = *pc->input++;
+          if (c == '\0')
+            return c;
+          if (c == '(')
+            count++;
+          else if (c == ')')
+            count--;
+        }
+      while (count != 0);
+    }
+}
+
+/* Do nothing if the parser reports an error.  */
+static int
+yyerror (parser_control const *pc _GL_UNUSED,
+         char const *s _GL_UNUSED)
+{
+  return 0;
+}
+
+/* If *TM0 is the old and *TM1 is the new value of a struct tm after
+   passing it to mktime, return true if it's OK that mktime returned T.
+   It's not OK if *TM0 has out-of-range members.  */
+
+static bool
+mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t)
+{
+  if (t == (time_t) -1)
+    {
+      /* Guard against falsely reporting an error when parsing a time
+         stamp that happens to equal (time_t) -1, on a host that
+         supports such a time stamp.  */
+      tm1 = localtime (&t);
+      if (!tm1)
+        return false;
+    }
+
+  return ! ((tm0->tm_sec ^ tm1->tm_sec)
+            | (tm0->tm_min ^ tm1->tm_min)
+            | (tm0->tm_hour ^ tm1->tm_hour)
+            | (tm0->tm_mday ^ tm1->tm_mday)
+            | (tm0->tm_mon ^ tm1->tm_mon)
+            | (tm0->tm_year ^ tm1->tm_year));
+}
+
+/* A reasonable upper bound for the size of ordinary TZ strings.
+   Use heap allocation if TZ's length exceeds this.  */
+enum { TZBUFSIZE = 100 };
+
+/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated
+   otherwise.  */
+static char *
+get_tz (char tzbuf[TZBUFSIZE])
+{
+  char *tz = getenv ("TZ");
+  if (tz)
+    {
+      size_t tzsize = strlen (tz) + 1;
+      tz = (tzsize <= TZBUFSIZE
+            ? memcpy (tzbuf, tz, tzsize)
+            : xmemdup (tz, tzsize));
+    }
+  return tz;
+}
+
+/* Parse a date/time string, storing the resulting time value into *RESULT.
+   The string itself is pointed to by P.  Return true if successful.
+   P can be an incomplete or relative time specification; if so, use
+   *NOW as the basis for the returned time.  */
+bool
+parse_datetime (struct timespec *result, char const *p,
+                struct timespec const *now)
+{
+  time_t Start;
+  long int Start_ns;
+  struct tm const *tmp;
+  struct tm tm;
+  struct tm tm0;
+  parser_control pc;
+  struct timespec gettime_buffer;
+  unsigned char c;
+  bool tz_was_altered = false;
+  char *tz0 = NULL;
+  char tz0buf[TZBUFSIZE];
+  bool ok = true;
+
+  if (! now)
+    {
+      gettime (&gettime_buffer);
+      now = &gettime_buffer;
+    }
+
+  Start = now->tv_sec;
+  Start_ns = now->tv_nsec;
+
+  tmp = localtime (&now->tv_sec);
+  if (! tmp)
+    return false;
+
+  while (c = *p, c_isspace (c))
+    p++;
+
+  if (strncmp (p, "TZ=\"", 4) == 0)
+    {
+      char const *tzbase = p + 4;
+      size_t tzsize = 1;
+      char const *s;
+
+      for (s = tzbase; *s; s++, tzsize++)
+        if (*s == '\\')
+          {
+            s++;
+            if (! (*s == '\\' || *s == '"'))
+              break;
+          }
+        else if (*s == '"')
+          {
+            char *z;
+            char *tz1;
+            char tz1buf[TZBUFSIZE];
+            bool large_tz = TZBUFSIZE < tzsize;
+            bool setenv_ok;
+            /* Free tz0, in case this is the 2nd or subsequent time through. */
+            free (tz0);
+            tz0 = get_tz (tz0buf);
+            z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
+            for (s = tzbase; *s != '"'; s++)
+              *z++ = *(s += *s == '\\');
+            *z = '\0';
+            setenv_ok = setenv ("TZ", tz1, 1) == 0;
+            if (large_tz)
+              free (tz1);
+            if (!setenv_ok)
+              goto fail;
+            tz_was_altered = true;
+            p = s + 1;
+          }
+    }
+
+  /* As documented, be careful to treat the empty string just like
+     a date string of "0".  Without this, an empty string would be
+     declared invalid when parsed during a DST transition.  */
+  if (*p == '\0')
+    p = "0";
+
+  pc.input = p;
+  pc.year.value = tmp->tm_year;
+  pc.year.value += TM_YEAR_BASE;
+  pc.year.digits = 0;
+  pc.month = tmp->tm_mon + 1;
+  pc.day = tmp->tm_mday;
+  pc.hour = tmp->tm_hour;
+  pc.minutes = tmp->tm_min;
+  pc.seconds.tv_sec = tmp->tm_sec;
+  pc.seconds.tv_nsec = Start_ns;
+  tm.tm_isdst = tmp->tm_isdst;
+
+  pc.meridian = MER24;
+  pc.rel = RELATIVE_TIME_0;
+  pc.timespec_seen = false;
+  pc.rels_seen = false;
+  pc.dates_seen = 0;
+  pc.days_seen = 0;
+  pc.times_seen = 0;
+  pc.local_zones_seen = 0;
+  pc.dsts_seen = 0;
+  pc.zones_seen = 0;
+
+#if HAVE_STRUCT_TM_TM_ZONE
+  pc.local_time_zone_table[0].name = tmp->tm_zone;
+  pc.local_time_zone_table[0].type = tLOCAL_ZONE;
+  pc.local_time_zone_table[0].value = tmp->tm_isdst;
+  pc.local_time_zone_table[1].name = NULL;
+
+  /* Probe the names used in the next three calendar quarters, looking
+     for a tm_isdst different from the one we already have.  */
+  {
+    int quarter;
+    for (quarter = 1; quarter <= 3; quarter++)
+      {
+        time_t probe = Start + quarter * (90 * 24 * 60 * 60);
+        struct tm const *probe_tm = localtime (&probe);
+        if (probe_tm && probe_tm->tm_zone
+            && probe_tm->tm_isdst != pc.local_time_zone_table[0].value)
+          {
+              {
+                pc.local_time_zone_table[1].name = probe_tm->tm_zone;
+                pc.local_time_zone_table[1].type = tLOCAL_ZONE;
+                pc.local_time_zone_table[1].value = probe_tm->tm_isdst;
+                pc.local_time_zone_table[2].name = NULL;
+              }
+            break;
+          }
+      }
+  }
+#else
+#if HAVE_TZNAME
+  {
+# if !HAVE_DECL_TZNAME
+    extern char *tzname[];
+# endif
+    int i;
+    for (i = 0; i < 2; i++)
+      {
+        pc.local_time_zone_table[i].name = tzname[i];
+        pc.local_time_zone_table[i].type = tLOCAL_ZONE;
+        pc.local_time_zone_table[i].value = i;
+      }
+    pc.local_time_zone_table[i].name = NULL;
+  }
+#else
+  pc.local_time_zone_table[0].name = NULL;
+#endif
+#endif
+
+  if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name
+      && ! strcmp (pc.local_time_zone_table[0].name,
+                   pc.local_time_zone_table[1].name))
+    {
+      /* This locale uses the same abbrevation for standard and
+         daylight times.  So if we see that abbreviation, we don't
+         know whether it's daylight time.  */
+      pc.local_time_zone_table[0].value = -1;
+      pc.local_time_zone_table[1].name = NULL;
+    }
+
+  if (yyparse (&pc) != 0)
+    goto fail;
+
+  if (pc.timespec_seen)
+    *result = pc.seconds;
+  else
+    {
+      if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
+               | (pc.local_zones_seen + pc.zones_seen)))
+        goto fail;
+
+      tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
+      tm.tm_mon = pc.month - 1;
+      tm.tm_mday = pc.day;
+      if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
+        {
+          tm.tm_hour = to_hour (pc.hour, pc.meridian);
+          if (tm.tm_hour < 0)
+            goto fail;
+          tm.tm_min = pc.minutes;
+          tm.tm_sec = pc.seconds.tv_sec;
+        }
+      else
+        {
+          tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+          pc.seconds.tv_nsec = 0;
+        }
+
+      /* Let mktime deduce tm_isdst if we have an absolute time stamp.  */
+      if (pc.dates_seen | pc.days_seen | pc.times_seen)
+        tm.tm_isdst = -1;
+
+      /* But if the input explicitly specifies local time with or without
+         DST, give mktime that information.  */
+      if (pc.local_zones_seen)
+        tm.tm_isdst = pc.local_isdst;
+
+      tm0 = tm;
+
+      Start = mktime (&tm);
+
+      if (! mktime_ok (&tm0, &tm, Start))
+        {
+          if (! pc.zones_seen)
+            goto fail;
+          else
+            {
+              /* Guard against falsely reporting errors near the time_t
+                 boundaries when parsing times in other time zones.  For
+                 example, suppose the input string "1969-12-31 23:00:00 -0100",
+                 the current time zone is 8 hours ahead of UTC, and the min
+                 time_t value is 1970-01-01 00:00:00 UTC.  Then the min
+                 localtime value is 1970-01-01 08:00:00, and mktime will
+                 therefore fail on 1969-12-31 23:00:00.  To work around the
+                 problem, set the time zone to 1 hour behind UTC temporarily
+                 by setting TZ="XXX1:00" and try mktime again.  */
+
+              long int time_zone = pc.time_zone;
+              long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone;
+              long int abs_time_zone_hour = abs_time_zone / 60;
+              int abs_time_zone_min = abs_time_zone % 60;
+              char tz1buf[sizeof "XXX+0:00"
+                          + sizeof pc.time_zone * CHAR_BIT / 3];
+              if (!tz_was_altered)
+                tz0 = get_tz (tz0buf);
+              sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
+                       abs_time_zone_hour, abs_time_zone_min);
+              if (setenv ("TZ", tz1buf, 1) != 0)
+                goto fail;
+              tz_was_altered = true;
+              tm = tm0;
+              Start = mktime (&tm);
+              if (! mktime_ok (&tm0, &tm, Start))
+                goto fail;
+            }
+        }
+
+      if (pc.days_seen && ! pc.dates_seen)
+        {
+          tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7
+                         + 7 * (pc.day_ordinal
+                                - (0 < pc.day_ordinal
+                                   && tm.tm_wday != pc.day_number)));
+          tm.tm_isdst = -1;
+          Start = mktime (&tm);
+          if (Start == (time_t) -1)
+            goto fail;
+        }
+
+      /* Add relative date.  */
+      if (pc.rel.year | pc.rel.month | pc.rel.day)
+        {
+          int year = tm.tm_year + pc.rel.year;
+          int month = tm.tm_mon + pc.rel.month;
+          int day = tm.tm_mday + pc.rel.day;
+          if (((year < tm.tm_year) ^ (pc.rel.year < 0))
+              | ((month < tm.tm_mon) ^ (pc.rel.month < 0))
+              | ((day < tm.tm_mday) ^ (pc.rel.day < 0)))
+            goto fail;
+          tm.tm_year = year;
+          tm.tm_mon = month;
+          tm.tm_mday = day;
+          tm.tm_hour = tm0.tm_hour;
+          tm.tm_min = tm0.tm_min;
+          tm.tm_sec = tm0.tm_sec;
+          tm.tm_isdst = tm0.tm_isdst;
+          Start = mktime (&tm);
+          if (Start == (time_t) -1)
+            goto fail;
+        }
+
+      /* The only "output" of this if-block is an updated Start value,
+         so this block must follow others that clobber Start.  */
+      if (pc.zones_seen)
+        {
+          long int delta = pc.time_zone * 60;
+          time_t t1;
+#ifdef HAVE_TM_GMTOFF
+          delta -= tm.tm_gmtoff;
+#else
+          time_t t = Start;
+          struct tm const *gmt = gmtime (&t);
+          if (! gmt)
+            goto fail;
+          delta -= tm_diff (&tm, gmt);
+#endif
+          t1 = Start - delta;
+          if ((Start < t1) != (delta < 0))
+            goto fail;  /* time_t overflow */
+          Start = t1;
+        }
+
+      /* Add relative hours, minutes, and seconds.  On hosts that support
+         leap seconds, ignore the possibility of leap seconds; e.g.,
+         "+ 10 minutes" adds 600 seconds, even if one of them is a
+         leap second.  Typically this is not what the user wants, but it's
+         too hard to do it the other way, because the time zone indicator
+         must be applied before relative times, and if mktime is applied
+         again the time zone will be lost.  */
+      {
+        long int sum_ns = pc.seconds.tv_nsec + pc.rel.ns;
+        long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION;
+        time_t t0 = Start;
+        long int d1 = 60 * 60 * pc.rel.hour;
+        time_t t1 = t0 + d1;
+        long int d2 = 60 * pc.rel.minutes;
+        time_t t2 = t1 + d2;
+        long_time_t d3 = pc.rel.seconds;
+        long_time_t t3 = t2 + d3;
+        long int d4 = (sum_ns - normalized_ns) / BILLION;
+        long_time_t t4 = t3 + d4;
+        time_t t5 = t4;
+
+        if ((d1 / (60 * 60) ^ pc.rel.hour)
+            | (d2 / 60 ^ pc.rel.minutes)
+            | ((t1 < t0) ^ (d1 < 0))
+            | ((t2 < t1) ^ (d2 < 0))
+            | ((t3 < t2) ^ (d3 < 0))
+            | ((t4 < t3) ^ (d4 < 0))
+            | (t5 != t4))
+          goto fail;
+
+        result->tv_sec = t5;
+        result->tv_nsec = normalized_ns;
+      }
+    }
+
+  goto done;
+
+ fail:
+  ok = false;
+ done:
+  if (tz_was_altered)
+    ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
+  if (tz0 != tz0buf)
+    free (tz0);
+  return ok;
+}
+
+#if TEST
+
+int
+main (int ac, char **av)
+{
+  char buff[BUFSIZ];
+
+  printf ("Enter date, or blank line to exit.\n\t> ");
+  fflush (stdout);
+
+  buff[BUFSIZ - 1] = '\0';
+  while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
+    {
+      struct timespec d;
+      struct tm const *tm;
+      if (! parse_datetime (&d, buff, NULL))
+        printf ("Bad format - couldn't convert.\n");
+      else if (! (tm = localtime (&d.tv_sec)))
+        {
+          long int sec = d.tv_sec;
+          printf ("localtime (%ld) failed\n", sec);
+        }
+      else
+        {
+          int ns = d.tv_nsec;
+          printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
+                  tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
+                  tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
+        }
+      printf ("\t> ");
+      fflush (stdout);
+    }
+  return 0;
+}
+#endif /* TEST */
+
diff --git a/gnu/parse-datetime.h b/gnu/parse-datetime.h
new file mode 100644 (file)
index 0000000..1081f97
--- /dev/null
@@ -0,0 +1,24 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Parse a string into an internal time stamp.
+
+   Copyright (C) 1995, 1997, 1998, 2003, 2004, 2007, 2009, 2010 Free Software
+   Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <stdbool.h>
+#include <time.h>
+
+bool parse_datetime (struct timespec *, char const *, struct timespec const *);
diff --git a/gnu/parse-datetime.y b/gnu/parse-datetime.y
new file mode 100644 (file)
index 0000000..a760e69
--- /dev/null
@@ -0,0 +1,1581 @@
+%{
+/* Parse a string into an internal time stamp.
+
+   Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+   2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Originally written by Steven M. Bellovin <smb@research.att.com> while
+   at the University of North Carolina at Chapel Hill.  Later tweaked by
+   a couple of people on Usenet.  Completely overhauled by Rich $alz
+   <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
+
+   Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do
+   the right thing about local DST.  Also modified by Paul Eggert
+   <eggert@cs.ucla.edu> in February 2004 to support
+   nanosecond-resolution time stamps, and in October 2004 to support
+   TZ strings in dates.  */
+
+/* FIXME: Check for arithmetic overflow in all cases, not just
+   some of them.  */
+
+#include <config.h>
+
+#include "parse-datetime.h"
+
+#include "intprops.h"
+#include "timespec.h"
+#include "verify.h"
+
+/* There's no need to extend the stack, so there's no need to involve
+   alloca.  */
+#define YYSTACK_USE_ALLOCA 0
+
+/* Tell Bison how much stack space is needed.  20 should be plenty for
+   this grammar, which is not right recursive.  Beware setting it too
+   high, since that might cause problems on machines whose
+   implementations have lame stack-overflow checking.  */
+#define YYMAXDEPTH 20
+#define YYINITDEPTH YYMAXDEPTH
+
+/* Since the code of parse-datetime.y is not included in the Emacs executable
+   itself, there is no need to #define static in this file.  Even if
+   the code were included in the Emacs executable, it probably
+   wouldn't do any harm to #undef it here; this will only cause
+   problems if we try to write to a static variable, which I don't
+   think this code needs to do.  */
+#ifdef emacs
+# undef static
+#endif
+
+#include <c-ctype.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xalloc.h"
+
+/* Bison's skeleton tests _STDLIB_H, while some stdlib.h headers
+   use _STDLIB_H_ as witness.  Map the latter to the one bison uses.  */
+/* FIXME: this is temporary.  Remove when we have a mechanism to ensure
+   that the version we're using is fixed, too.  */
+#ifdef _STDLIB_H_
+# undef _STDLIB_H
+# define _STDLIB_H 1
+#endif
+
+/* ISDIGIT differs from isdigit, as follows:
+   - Its arg may be any int or unsigned int; it need not be an unsigned char
+     or EOF.
+   - It's typically faster.
+   POSIX says that only '0' through '9' are digits.  Prefer ISDIGIT to
+   isdigit unless it's important to use the locale's definition
+   of `digit' even when the host does not conform to POSIX.  */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+   truncating towards minus infinity.  A and B should be free of side
+   effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+   INT_BITS is the number of useful bits in an int.  GNU code can
+   assume that INT_BITS is at least 32.
+
+   ISO C99 says that A >> B is implementation-defined if A < 0.  Some
+   implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+   right in the usual way when A < 0, so SHR falls back on division if
+   ordinary A >> B doesn't seem to be the usual signed shift.  */
+#define SHR(a, b)       \
+  (-1 >> 1 == -1        \
+   ? (a) >> (b)         \
+   : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+#define EPOCH_YEAR 1970
+#define TM_YEAR_BASE 1900
+
+#define HOUR(x) ((x) * 60)
+
+/* long_time_t is a signed integer type that contains all time_t values.  */
+verify (TYPE_IS_INTEGER (time_t));
+#if TIME_T_FITS_IN_LONG_INT
+typedef long int long_time_t;
+#else
+typedef time_t long_time_t;
+#endif
+
+/* Lots of this code assumes time_t and time_t-like values fit into
+   long_time_t.  */
+verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
+        && TYPE_MAXIMUM (time_t) <= TYPE_MAXIMUM (long_time_t));
+
+/* FIXME: It also assumes that signed integer overflow silently wraps around,
+   but this is not true any more with recent versions of GCC 4.  */
+
+/* An integer value, and the number of digits in its textual
+   representation.  */
+typedef struct
+{
+  bool negative;
+  long int value;
+  size_t digits;
+} textint;
+
+/* An entry in the lexical lookup table.  */
+typedef struct
+{
+  char const *name;
+  int type;
+  int value;
+} table;
+
+/* Meridian: am, pm, or 24-hour style.  */
+enum { MERam, MERpm, MER24 };
+
+enum { BILLION = 1000000000, LOG10_BILLION = 9 };
+
+/* Relative times.  */
+typedef struct
+{
+  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
+  long int year;
+  long int month;
+  long int day;
+  long int hour;
+  long int minutes;
+  long_time_t seconds;
+  long int ns;
+} relative_time;
+
+#if HAVE_COMPOUND_LITERALS
+# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
+#else
+static relative_time const RELATIVE_TIME_0;
+#endif
+
+/* Information passed to and from the parser.  */
+typedef struct
+{
+  /* The input string remaining to be parsed. */
+  const char *input;
+
+  /* N, if this is the Nth Tuesday.  */
+  long int day_ordinal;
+
+  /* Day of week; Sunday is 0.  */
+  int day_number;
+
+  /* tm_isdst flag for the local zone.  */
+  int local_isdst;
+
+  /* Time zone, in minutes east of UTC.  */
+  long int time_zone;
+
+  /* Style used for time.  */
+  int meridian;
+
+  /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds.  */
+  textint year;
+  long int month;
+  long int day;
+  long int hour;
+  long int minutes;
+  struct timespec seconds; /* includes nanoseconds */
+
+  /* Relative year, month, day, hour, minutes, seconds, and nanoseconds.  */
+  relative_time rel;
+
+  /* Presence or counts of nonterminals of various flavors parsed so far.  */
+  bool timespec_seen;
+  bool rels_seen;
+  size_t dates_seen;
+  size_t days_seen;
+  size_t local_zones_seen;
+  size_t dsts_seen;
+  size_t times_seen;
+  size_t zones_seen;
+
+  /* Table of local time zone abbrevations, terminated by a null entry.  */
+  table local_time_zone_table[3];
+} parser_control;
+
+union YYSTYPE;
+static int yylex (union YYSTYPE *, parser_control *);
+static int yyerror (parser_control const *, char const *);
+static long int time_zone_hhmm (parser_control *, textint, long int);
+
+/* Extract into *PC any date and time info from a string of digits
+   of the form e.g., YYYYMMDD, YYMMDD, HHMM, HH (and sometimes YYY,
+   YYYY, ...).  */
+static void
+digits_to_date_time (parser_control *pc, textint text_int)
+{
+  if (pc->dates_seen && ! pc->year.digits
+      && ! pc->rels_seen && (pc->times_seen || 2 < text_int.digits))
+    pc->year = text_int;
+  else
+    {
+      if (4 < text_int.digits)
+        {
+          pc->dates_seen++;
+          pc->day = text_int.value % 100;
+          pc->month = (text_int.value / 100) % 100;
+          pc->year.value = text_int.value / 10000;
+          pc->year.digits = text_int.digits - 4;
+        }
+      else
+        {
+          pc->times_seen++;
+          if (text_int.digits <= 2)
+            {
+              pc->hour = text_int.value;
+              pc->minutes = 0;
+            }
+          else
+            {
+              pc->hour = text_int.value / 100;
+              pc->minutes = text_int.value % 100;
+            }
+          pc->seconds.tv_sec = 0;
+          pc->seconds.tv_nsec = 0;
+          pc->meridian = MER24;
+        }
+    }
+}
+
+/* Increment PC->rel by FACTOR * REL (FACTOR is 1 or -1).  */
+static void
+apply_relative_time (parser_control *pc, relative_time rel, int factor)
+{
+  pc->rel.ns += factor * rel.ns;
+  pc->rel.seconds += factor * rel.seconds;
+  pc->rel.minutes += factor * rel.minutes;
+  pc->rel.hour += factor * rel.hour;
+  pc->rel.day += factor * rel.day;
+  pc->rel.month += factor * rel.month;
+  pc->rel.year += factor * rel.year;
+  pc->rels_seen = true;
+}
+
+/* Set PC-> hour, minutes, seconds and nanoseconds members from arguments.  */
+static void
+set_hhmmss (parser_control *pc, long int hour, long int minutes,
+            time_t sec, long int nsec)
+{
+  pc->hour = hour;
+  pc->minutes = minutes;
+  pc->seconds.tv_sec = sec;
+  pc->seconds.tv_nsec = nsec;
+}
+
+%}
+
+/* We want a reentrant parser, even if the TZ manipulation and the calls to
+   localtime and gmtime are not reentrant.  */
+%pure-parser
+%parse-param { parser_control *pc }
+%lex-param { parser_control *pc }
+
+/* This grammar has 20 shift/reduce conflicts. */
+%expect 20
+
+%union
+{
+  long int intval;
+  textint textintval;
+  struct timespec timespec;
+  relative_time rel;
+}
+
+%token tAGO tDST
+
+%token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT
+%token <intval> tDAY_UNIT tDAY_SHIFT
+
+%token <intval> tDAY tDAYZONE tLOCAL_ZONE tMERIDIAN
+%token <intval> tMONTH tORDINAL tZONE
+
+%token <textintval> tSNUMBER tUNUMBER
+%token <timespec> tSDECIMAL_NUMBER tUDECIMAL_NUMBER
+
+%type <intval> o_colon_minutes o_merid
+%type <timespec> seconds signed_seconds unsigned_seconds
+
+%type <rel> relunit relunit_snumber dayshift
+
+%%
+
+spec:
+    timespec
+  | items
+  ;
+
+timespec:
+    '@' seconds
+      {
+        pc->seconds = $2;
+        pc->timespec_seen = true;
+      }
+  ;
+
+items:
+    /* empty */
+  | items item
+  ;
+
+item:
+    time
+      { pc->times_seen++; }
+  | local_zone
+      { pc->local_zones_seen++; }
+  | zone
+      { pc->zones_seen++; }
+  | date
+      { pc->dates_seen++; }
+  | day
+      { pc->days_seen++; }
+  | rel
+  | number
+  | hybrid
+  ;
+
+time:
+    tUNUMBER tMERIDIAN
+      {
+        set_hhmmss (pc, $1.value, 0, 0, 0);
+        pc->meridian = $2;
+      }
+  | tUNUMBER ':' tUNUMBER o_merid
+      {
+        set_hhmmss (pc, $1.value, $3.value, 0, 0);
+        pc->meridian = $4;
+      }
+  | tUNUMBER ':' tUNUMBER tSNUMBER o_colon_minutes
+      {
+        set_hhmmss (pc, $1.value, $3.value, 0, 0);
+        pc->meridian = MER24;
+        pc->zones_seen++;
+        pc->time_zone = time_zone_hhmm (pc, $4, $5);
+      }
+  | tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_merid
+      {
+        set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
+        pc->meridian = $6;
+      }
+  | tUNUMBER ':' tUNUMBER ':' unsigned_seconds tSNUMBER o_colon_minutes
+      {
+        set_hhmmss (pc, $1.value, $3.value, $5.tv_sec, $5.tv_nsec);
+        pc->meridian = MER24;
+        pc->zones_seen++;
+        pc->time_zone = time_zone_hhmm (pc, $6, $7);
+      }
+  ;
+
+local_zone:
+    tLOCAL_ZONE
+      {
+        pc->local_isdst = $1;
+        pc->dsts_seen += (0 < $1);
+      }
+  | tLOCAL_ZONE tDST
+      {
+        pc->local_isdst = 1;
+        pc->dsts_seen += (0 < $1) + 1;
+      }
+  ;
+
+zone:
+    tZONE
+      { pc->time_zone = $1; }
+  | tZONE relunit_snumber
+      { pc->time_zone = $1;
+        apply_relative_time (pc, $2, 1); }
+  | tZONE tSNUMBER o_colon_minutes
+      { pc->time_zone = $1 + time_zone_hhmm (pc, $2, $3); }
+  | tDAYZONE
+      { pc->time_zone = $1 + 60; }
+  | tZONE tDST
+      { pc->time_zone = $1 + 60; }
+  ;
+
+day:
+    tDAY
+      {
+        pc->day_ordinal = 0;
+        pc->day_number = $1;
+      }
+  | tDAY ','
+      {
+        pc->day_ordinal = 0;
+        pc->day_number = $1;
+      }
+  | tORDINAL tDAY
+      {
+        pc->day_ordinal = $1;
+        pc->day_number = $2;
+      }
+  | tUNUMBER tDAY
+      {
+        pc->day_ordinal = $1.value;
+        pc->day_number = $2;
+      }
+  ;
+
+date:
+    tUNUMBER '/' tUNUMBER
+      {
+        pc->month = $1.value;
+        pc->day = $3.value;
+      }
+  | tUNUMBER '/' tUNUMBER '/' tUNUMBER
+      {
+        /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
+           otherwise as MM/DD/YY.
+           The goal in recognizing YYYY/MM/DD is solely to support legacy
+           machine-generated dates like those in an RCS log listing.  If
+           you want portability, use the ISO 8601 format.  */
+        if (4 <= $1.digits)
+          {
+            pc->year = $1;
+            pc->month = $3.value;
+            pc->day = $5.value;
+          }
+        else
+          {
+            pc->month = $1.value;
+            pc->day = $3.value;
+            pc->year = $5;
+          }
+      }
+  | tUNUMBER tSNUMBER tSNUMBER
+      {
+        /* ISO 8601 format.  YYYY-MM-DD.  */
+        pc->year = $1;
+        pc->month = -$2.value;
+        pc->day = -$3.value;
+      }
+  | tUNUMBER tMONTH tSNUMBER
+      {
+        /* e.g. 17-JUN-1992.  */
+        pc->day = $1.value;
+        pc->month = $2;
+        pc->year.value = -$3.value;
+        pc->year.digits = $3.digits;
+      }
+  | tMONTH tSNUMBER tSNUMBER
+      {
+        /* e.g. JUN-17-1992.  */
+        pc->month = $1;
+        pc->day = -$2.value;
+        pc->year.value = -$3.value;
+        pc->year.digits = $3.digits;
+      }
+  | tMONTH tUNUMBER
+      {
+        pc->month = $1;
+        pc->day = $2.value;
+      }
+  | tMONTH tUNUMBER ',' tUNUMBER
+      {
+        pc->month = $1;
+        pc->day = $2.value;
+        pc->year = $4;
+      }
+  | tUNUMBER tMONTH
+      {
+        pc->day = $1.value;
+        pc->month = $2;
+      }
+  | tUNUMBER tMONTH tUNUMBER
+      {
+        pc->day = $1.value;
+        pc->month = $2;
+        pc->year = $3;
+      }
+  ;
+
+rel:
+    relunit tAGO
+      { apply_relative_time (pc, $1, -1); }
+  | relunit
+      { apply_relative_time (pc, $1, 1); }
+  | dayshift
+      { apply_relative_time (pc, $1, 1); }
+  ;
+
+relunit:
+    tORDINAL tYEAR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.year = $1; }
+  | tUNUMBER tYEAR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.year = $1.value; }
+  | tYEAR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.year = 1; }
+  | tORDINAL tMONTH_UNIT
+      { $$ = RELATIVE_TIME_0; $$.month = $1; }
+  | tUNUMBER tMONTH_UNIT
+      { $$ = RELATIVE_TIME_0; $$.month = $1.value; }
+  | tMONTH_UNIT
+      { $$ = RELATIVE_TIME_0; $$.month = 1; }
+  | tORDINAL tDAY_UNIT
+      { $$ = RELATIVE_TIME_0; $$.day = $1 * $2; }
+  | tUNUMBER tDAY_UNIT
+      { $$ = RELATIVE_TIME_0; $$.day = $1.value * $2; }
+  | tDAY_UNIT
+      { $$ = RELATIVE_TIME_0; $$.day = $1; }
+  | tORDINAL tHOUR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.hour = $1; }
+  | tUNUMBER tHOUR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.hour = $1.value; }
+  | tHOUR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.hour = 1; }
+  | tORDINAL tMINUTE_UNIT
+      { $$ = RELATIVE_TIME_0; $$.minutes = $1; }
+  | tUNUMBER tMINUTE_UNIT
+      { $$ = RELATIVE_TIME_0; $$.minutes = $1.value; }
+  | tMINUTE_UNIT
+      { $$ = RELATIVE_TIME_0; $$.minutes = 1; }
+  | tORDINAL tSEC_UNIT
+      { $$ = RELATIVE_TIME_0; $$.seconds = $1; }
+  | tUNUMBER tSEC_UNIT
+      { $$ = RELATIVE_TIME_0; $$.seconds = $1.value; }
+  | tSDECIMAL_NUMBER tSEC_UNIT
+      { $$ = RELATIVE_TIME_0; $$.seconds = $1.tv_sec; $$.ns = $1.tv_nsec; }
+  | tUDECIMAL_NUMBER tSEC_UNIT
+      { $$ = RELATIVE_TIME_0; $$.seconds = $1.tv_sec; $$.ns = $1.tv_nsec; }
+  | tSEC_UNIT
+      { $$ = RELATIVE_TIME_0; $$.seconds = 1; }
+  | relunit_snumber
+  ;
+
+relunit_snumber:
+    tSNUMBER tYEAR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.year = $1.value; }
+  | tSNUMBER tMONTH_UNIT
+      { $$ = RELATIVE_TIME_0; $$.month = $1.value; }
+  | tSNUMBER tDAY_UNIT
+      { $$ = RELATIVE_TIME_0; $$.day = $1.value * $2; }
+  | tSNUMBER tHOUR_UNIT
+      { $$ = RELATIVE_TIME_0; $$.hour = $1.value; }
+  | tSNUMBER tMINUTE_UNIT
+      { $$ = RELATIVE_TIME_0; $$.minutes = $1.value; }
+  | tSNUMBER tSEC_UNIT
+      { $$ = RELATIVE_TIME_0; $$.seconds = $1.value; }
+  ;
+
+dayshift:
+    tDAY_SHIFT
+      { $$ = RELATIVE_TIME_0; $$.day = $1; }
+  ;
+
+seconds: signed_seconds | unsigned_seconds;
+
+signed_seconds:
+    tSDECIMAL_NUMBER
+  | tSNUMBER
+      { $$.tv_sec = $1.value; $$.tv_nsec = 0; }
+  ;
+
+unsigned_seconds:
+    tUDECIMAL_NUMBER
+  | tUNUMBER
+      { $$.tv_sec = $1.value; $$.tv_nsec = 0; }
+  ;
+
+number:
+    tUNUMBER
+      { digits_to_date_time (pc, $1); }
+  ;
+
+hybrid:
+    tUNUMBER relunit_snumber
+      {
+        /* Hybrid all-digit and relative offset, so that we accept e.g.,
+           "YYYYMMDD +N days" as well as "YYYYMMDD N days".  */
+        digits_to_date_time (pc, $1);
+        apply_relative_time (pc, $2, 1);
+      }
+  ;
+
+o_colon_minutes:
+    /* empty */
+      { $$ = -1; }
+  | ':' tUNUMBER
+      { $$ = $2.value; }
+  ;
+
+o_merid:
+    /* empty */
+      { $$ = MER24; }
+  | tMERIDIAN
+      { $$ = $1; }
+  ;
+
+%%
+
+static table const meridian_table[] =
+{
+  { "AM",   tMERIDIAN, MERam },
+  { "A.M.", tMERIDIAN, MERam },
+  { "PM",   tMERIDIAN, MERpm },
+  { "P.M.", tMERIDIAN, MERpm },
+  { NULL, 0, 0 }
+};
+
+static table const dst_table[] =
+{
+  { "DST", tDST, 0 }
+};
+
+static table const month_and_day_table[] =
+{
+  { "JANUARY",  tMONTH,  1 },
+  { "FEBRUARY", tMONTH,  2 },
+  { "MARCH",    tMONTH,  3 },
+  { "APRIL",    tMONTH,  4 },
+  { "MAY",      tMONTH,  5 },
+  { "JUNE",     tMONTH,  6 },
+  { "JULY",     tMONTH,  7 },
+  { "AUGUST",   tMONTH,  8 },
+  { "SEPTEMBER",tMONTH,  9 },
+  { "SEPT",     tMONTH,  9 },
+  { "OCTOBER",  tMONTH, 10 },
+  { "NOVEMBER", tMONTH, 11 },
+  { "DECEMBER", tMONTH, 12 },
+  { "SUNDAY",   tDAY,    0 },
+  { "MONDAY",   tDAY,    1 },
+  { "TUESDAY",  tDAY,    2 },
+  { "TUES",     tDAY,    2 },
+  { "WEDNESDAY",tDAY,    3 },
+  { "WEDNES",   tDAY,    3 },
+  { "THURSDAY", tDAY,    4 },
+  { "THUR",     tDAY,    4 },
+  { "THURS",    tDAY,    4 },
+  { "FRIDAY",   tDAY,    5 },
+  { "SATURDAY", tDAY,    6 },
+  { NULL, 0, 0 }
+};
+
+static table const time_units_table[] =
+{
+  { "YEAR",     tYEAR_UNIT,      1 },
+  { "MONTH",    tMONTH_UNIT,     1 },
+  { "FORTNIGHT",tDAY_UNIT,      14 },
+  { "WEEK",     tDAY_UNIT,       7 },
+  { "DAY",      tDAY_UNIT,       1 },
+  { "HOUR",     tHOUR_UNIT,      1 },
+  { "MINUTE",   tMINUTE_UNIT,    1 },
+  { "MIN",      tMINUTE_UNIT,    1 },
+  { "SECOND",   tSEC_UNIT,       1 },
+  { "SEC",      tSEC_UNIT,       1 },
+  { NULL, 0, 0 }
+};
+
+/* Assorted relative-time words. */
+static table const relative_time_table[] =
+{
+  { "TOMORROW", tDAY_SHIFT,      1 },
+  { "YESTERDAY",tDAY_SHIFT,     -1 },
+  { "TODAY",    tDAY_SHIFT,      0 },
+  { "NOW",      tDAY_SHIFT,      0 },
+  { "LAST",     tORDINAL,       -1 },
+  { "THIS",     tORDINAL,        0 },
+  { "NEXT",     tORDINAL,        1 },
+  { "FIRST",    tORDINAL,        1 },
+/*{ "SECOND",   tORDINAL,        2 }, */
+  { "THIRD",    tORDINAL,        3 },
+  { "FOURTH",   tORDINAL,        4 },
+  { "FIFTH",    tORDINAL,        5 },
+  { "SIXTH",    tORDINAL,        6 },
+  { "SEVENTH",  tORDINAL,        7 },
+  { "EIGHTH",   tORDINAL,        8 },
+  { "NINTH",    tORDINAL,        9 },
+  { "TENTH",    tORDINAL,       10 },
+  { "ELEVENTH", tORDINAL,       11 },
+  { "TWELFTH",  tORDINAL,       12 },
+  { "AGO",      tAGO,            1 },
+  { NULL, 0, 0 }
+};
+
+/* The universal time zone table.  These labels can be used even for
+   time stamps that would not otherwise be valid, e.g., GMT time
+   stamps in London during summer.  */
+static table const universal_time_zone_table[] =
+{
+  { "GMT",      tZONE,     HOUR ( 0) }, /* Greenwich Mean */
+  { "UT",       tZONE,     HOUR ( 0) }, /* Universal (Coordinated) */
+  { "UTC",      tZONE,     HOUR ( 0) },
+  { NULL, 0, 0 }
+};
+
+/* The time zone table.  This table is necessarily incomplete, as time
+   zone abbreviations are ambiguous; e.g. Australians interpret "EST"
+   as Eastern time in Australia, not as US Eastern Standard Time.
+   You cannot rely on parse_datetime to handle arbitrary time zone
+   abbreviations; use numeric abbreviations like `-0500' instead.  */
+static table const time_zone_table[] =
+{
+  { "WET",      tZONE,     HOUR ( 0) }, /* Western European */
+  { "WEST",     tDAYZONE,  HOUR ( 0) }, /* Western European Summer */
+  { "BST",      tDAYZONE,  HOUR ( 0) }, /* British Summer */
+  { "ART",      tZONE,    -HOUR ( 3) }, /* Argentina */
+  { "BRT",      tZONE,    -HOUR ( 3) }, /* Brazil */
+  { "BRST",     tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */
+  { "NST",      tZONE,   -(HOUR ( 3) + 30) },   /* Newfoundland Standard */
+  { "NDT",      tDAYZONE,-(HOUR ( 3) + 30) },   /* Newfoundland Daylight */
+  { "AST",      tZONE,    -HOUR ( 4) }, /* Atlantic Standard */
+  { "ADT",      tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */
+  { "CLT",      tZONE,    -HOUR ( 4) }, /* Chile */
+  { "CLST",     tDAYZONE, -HOUR ( 4) }, /* Chile Summer */
+  { "EST",      tZONE,    -HOUR ( 5) }, /* Eastern Standard */
+  { "EDT",      tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */
+  { "CST",      tZONE,    -HOUR ( 6) }, /* Central Standard */
+  { "CDT",      tDAYZONE, -HOUR ( 6) }, /* Central Daylight */
+  { "MST",      tZONE,    -HOUR ( 7) }, /* Mountain Standard */
+  { "MDT",      tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */
+  { "PST",      tZONE,    -HOUR ( 8) }, /* Pacific Standard */
+  { "PDT",      tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */
+  { "AKST",     tZONE,    -HOUR ( 9) }, /* Alaska Standard */
+  { "AKDT",     tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */
+  { "HST",      tZONE,    -HOUR (10) }, /* Hawaii Standard */
+  { "HAST",     tZONE,    -HOUR (10) }, /* Hawaii-Aleutian Standard */
+  { "HADT",     tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */
+  { "SST",      tZONE,    -HOUR (12) }, /* Samoa Standard */
+  { "WAT",      tZONE,     HOUR ( 1) }, /* West Africa */
+  { "CET",      tZONE,     HOUR ( 1) }, /* Central European */
+  { "CEST",     tDAYZONE,  HOUR ( 1) }, /* Central European Summer */
+  { "MET",      tZONE,     HOUR ( 1) }, /* Middle European */
+  { "MEZ",      tZONE,     HOUR ( 1) }, /* Middle European */
+  { "MEST",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
+  { "MESZ",     tDAYZONE,  HOUR ( 1) }, /* Middle European Summer */
+  { "EET",      tZONE,     HOUR ( 2) }, /* Eastern European */
+  { "EEST",     tDAYZONE,  HOUR ( 2) }, /* Eastern European Summer */
+  { "CAT",      tZONE,     HOUR ( 2) }, /* Central Africa */
+  { "SAST",     tZONE,     HOUR ( 2) }, /* South Africa Standard */
+  { "EAT",      tZONE,     HOUR ( 3) }, /* East Africa */
+  { "MSK",      tZONE,     HOUR ( 3) }, /* Moscow */
+  { "MSD",      tDAYZONE,  HOUR ( 3) }, /* Moscow Daylight */
+  { "IST",      tZONE,    (HOUR ( 5) + 30) },   /* India Standard */
+  { "SGT",      tZONE,     HOUR ( 8) }, /* Singapore */
+  { "KST",      tZONE,     HOUR ( 9) }, /* Korea Standard */
+  { "JST",      tZONE,     HOUR ( 9) }, /* Japan Standard */
+  { "GST",      tZONE,     HOUR (10) }, /* Guam Standard */
+  { "NZST",     tZONE,     HOUR (12) }, /* New Zealand Standard */
+  { "NZDT",     tDAYZONE,  HOUR (12) }, /* New Zealand Daylight */
+  { NULL, 0, 0 }
+};
+
+/* Military time zone table. */
+static table const military_table[] =
+{
+  { "A", tZONE, -HOUR ( 1) },
+  { "B", tZONE, -HOUR ( 2) },
+  { "C", tZONE, -HOUR ( 3) },
+  { "D", tZONE, -HOUR ( 4) },
+  { "E", tZONE, -HOUR ( 5) },
+  { "F", tZONE, -HOUR ( 6) },
+  { "G", tZONE, -HOUR ( 7) },
+  { "H", tZONE, -HOUR ( 8) },
+  { "I", tZONE, -HOUR ( 9) },
+  { "K", tZONE, -HOUR (10) },
+  { "L", tZONE, -HOUR (11) },
+  { "M", tZONE, -HOUR (12) },
+  { "N", tZONE,  HOUR ( 1) },
+  { "O", tZONE,  HOUR ( 2) },
+  { "P", tZONE,  HOUR ( 3) },
+  { "Q", tZONE,  HOUR ( 4) },
+  { "R", tZONE,  HOUR ( 5) },
+  { "S", tZONE,  HOUR ( 6) },
+  { "T", tZONE,  HOUR ( 7) },
+  { "U", tZONE,  HOUR ( 8) },
+  { "V", tZONE,  HOUR ( 9) },
+  { "W", tZONE,  HOUR (10) },
+  { "X", tZONE,  HOUR (11) },
+  { "Y", tZONE,  HOUR (12) },
+  { "Z", tZONE,  HOUR ( 0) },
+  { NULL, 0, 0 }
+};
+
+\f
+
+/* Convert a time zone expressed as HH:MM into an integer count of
+   minutes.  If MM is negative, then S is of the form HHMM and needs
+   to be picked apart; otherwise, S is of the form HH.  As specified in
+   http://www.opengroup.org/susv3xbd/xbd_chap08.html#tag_08_03, allow
+   only valid TZ range, and consider first two digits as hours, if no
+   minutes specified.  */
+
+static long int
+time_zone_hhmm (parser_control *pc, textint s, long int mm)
+{
+  long int n_minutes;
+
+  /* If the length of S is 1 or 2 and no minutes are specified,
+     interpret it as a number of hours.  */
+  if (s.digits <= 2 && mm < 0)
+    s.value *= 100;
+
+  if (mm < 0)
+    n_minutes = (s.value / 100) * 60 + s.value % 100;
+  else
+    n_minutes = s.value * 60 + (s.negative ? -mm : mm);
+
+  /* If the absolute number of minutes is larger than 24 hours,
+     arrange to reject it by incrementing pc->zones_seen.  Thus,
+     we allow only values in the range UTC-24:00 to UTC+24:00.  */
+  if (24 * 60 < abs (n_minutes))
+    pc->zones_seen++;
+
+  return n_minutes;
+}
+
+static int
+to_hour (long int hours, int meridian)
+{
+  switch (meridian)
+    {
+    default: /* Pacify GCC.  */
+    case MER24:
+      return 0 <= hours && hours < 24 ? hours : -1;
+    case MERam:
+      return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1;
+    case MERpm:
+      return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1;
+    }
+}
+
+static long int
+to_year (textint textyear)
+{
+  long int year = textyear.value;
+
+  if (year < 0)
+    year = -year;
+
+  /* XPG4 suggests that years 00-68 map to 2000-2068, and
+     years 69-99 map to 1969-1999.  */
+  else if (textyear.digits == 2)
+    year += year < 69 ? 2000 : 1900;
+
+  return year;
+}
+
+static table const *
+lookup_zone (parser_control const *pc, char const *name)
+{
+  table const *tp;
+
+  for (tp = universal_time_zone_table; tp->name; tp++)
+    if (strcmp (name, tp->name) == 0)
+      return tp;
+
+  /* Try local zone abbreviations before those in time_zone_table, as
+     the local ones are more likely to be right.  */
+  for (tp = pc->local_time_zone_table; tp->name; tp++)
+    if (strcmp (name, tp->name) == 0)
+      return tp;
+
+  for (tp = time_zone_table; tp->name; tp++)
+    if (strcmp (name, tp->name) == 0)
+      return tp;
+
+  return NULL;
+}
+
+#if ! HAVE_TM_GMTOFF
+/* Yield the difference between *A and *B,
+   measured in seconds, ignoring leap seconds.
+   The body of this function is taken directly from the GNU C Library;
+   see src/strftime.c.  */
+static long int
+tm_diff (struct tm const *a, struct tm const *b)
+{
+  /* Compute intervening leap days correctly even if year is negative.
+     Take care to avoid int overflow in leap day calculations.  */
+  int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+  int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+  int a100 = a4 / 25 - (a4 % 25 < 0);
+  int b100 = b4 / 25 - (b4 % 25 < 0);
+  int a400 = SHR (a100, 2);
+  int b400 = SHR (b100, 2);
+  int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+  long int ayear = a->tm_year;
+  long int years = ayear - b->tm_year;
+  long int days = (365 * years + intervening_leap_days
+                   + (a->tm_yday - b->tm_yday));
+  return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+                + (a->tm_min - b->tm_min))
+          + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+static table const *
+lookup_word (parser_control const *pc, char *word)
+{
+  char *p;
+  char *q;
+  size_t wordlen;
+  table const *tp;
+  bool period_found;
+  bool abbrev;
+
+  /* Make it uppercase.  */
+  for (p = word; *p; p++)
+    {
+      unsigned char ch = *p;
+      *p = c_toupper (ch);
+    }
+
+  for (tp = meridian_table; tp->name; tp++)
+    if (strcmp (word, tp->name) == 0)
+      return tp;
+
+  /* See if we have an abbreviation for a month. */
+  wordlen = strlen (word);
+  abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');
+
+  for (tp = month_and_day_table; tp->name; tp++)
+    if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)
+      return tp;
+
+  if ((tp = lookup_zone (pc, word)))
+    return tp;
+
+  if (strcmp (word, dst_table[0].name) == 0)
+    return dst_table;
+
+  for (tp = time_units_table; tp->name; tp++)
+    if (strcmp (word, tp->name) == 0)
+      return tp;
+
+  /* Strip off any plural and try the units table again. */
+  if (word[wordlen - 1] == 'S')
+    {
+      word[wordlen - 1] = '\0';
+      for (tp = time_units_table; tp->name; tp++)
+        if (strcmp (word, tp->name) == 0)
+          return tp;
+      word[wordlen - 1] = 'S';  /* For "this" in relative_time_table.  */
+    }
+
+  for (tp = relative_time_table; tp->name; tp++)
+    if (strcmp (word, tp->name) == 0)
+      return tp;
+
+  /* Military time zones. */
+  if (wordlen == 1)
+    for (tp = military_table; tp->name; tp++)
+      if (word[0] == tp->name[0])
+        return tp;
+
+  /* Drop out any periods and try the time zone table again. */
+  for (period_found = false, p = q = word; (*p = *q); q++)
+    if (*q == '.')
+      period_found = true;
+    else
+      p++;
+  if (period_found && (tp = lookup_zone (pc, word)))
+    return tp;
+
+  return NULL;
+}
+
+static int
+yylex (YYSTYPE *lvalp, parser_control *pc)
+{
+  unsigned char c;
+  size_t count;
+
+  for (;;)
+    {
+      while (c = *pc->input, c_isspace (c))
+        pc->input++;
+
+      if (ISDIGIT (c) || c == '-' || c == '+')
+        {
+          char const *p;
+          int sign;
+          unsigned long int value;
+          if (c == '-' || c == '+')
+            {
+              sign = c == '-' ? -1 : 1;
+              while (c = *++pc->input, c_isspace (c))
+                continue;
+              if (! ISDIGIT (c))
+                /* skip the '-' sign */
+                continue;
+            }
+          else
+            sign = 0;
+          p = pc->input;
+          for (value = 0; ; value *= 10)
+            {
+              unsigned long int value1 = value + (c - '0');
+              if (value1 < value)
+                return '?';
+              value = value1;
+              c = *++p;
+              if (! ISDIGIT (c))
+                break;
+              if (ULONG_MAX / 10 < value)
+                return '?';
+            }
+          if ((c == '.' || c == ',') && ISDIGIT (p[1]))
+            {
+              time_t s;
+              int ns;
+              int digits;
+              unsigned long int value1;
+
+              /* Check for overflow when converting value to time_t.  */
+              if (sign < 0)
+                {
+                  s = - value;
+                  if (0 < s)
+                    return '?';
+                  value1 = -s;
+                }
+              else
+                {
+                  s = value;
+                  if (s < 0)
+                    return '?';
+                  value1 = s;
+                }
+              if (value != value1)
+                return '?';
+
+              /* Accumulate fraction, to ns precision.  */
+              p++;
+              ns = *p++ - '0';
+              for (digits = 2; digits <= LOG10_BILLION; digits++)
+                {
+                  ns *= 10;
+                  if (ISDIGIT (*p))
+                    ns += *p++ - '0';
+                }
+
+              /* Skip excess digits, truncating toward -Infinity.  */
+              if (sign < 0)
+                for (; ISDIGIT (*p); p++)
+                  if (*p != '0')
+                    {
+                      ns++;
+                      break;
+                    }
+              while (ISDIGIT (*p))
+                p++;
+
+              /* Adjust to the timespec convention, which is that
+                 tv_nsec is always a positive offset even if tv_sec is
+                 negative.  */
+              if (sign < 0 && ns)
+                {
+                  s--;
+                  if (! (s < 0))
+                    return '?';
+                  ns = BILLION - ns;
+                }
+
+              lvalp->timespec.tv_sec = s;
+              lvalp->timespec.tv_nsec = ns;
+              pc->input = p;
+              return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER;
+            }
+          else
+            {
+              lvalp->textintval.negative = sign < 0;
+              if (sign < 0)
+                {
+                  lvalp->textintval.value = - value;
+                  if (0 < lvalp->textintval.value)
+                    return '?';
+                }
+              else
+                {
+                  lvalp->textintval.value = value;
+                  if (lvalp->textintval.value < 0)
+                    return '?';
+                }
+              lvalp->textintval.digits = p - pc->input;
+              pc->input = p;
+              return sign ? tSNUMBER : tUNUMBER;
+            }
+        }
+
+      if (c_isalpha (c))
+        {
+          char buff[20];
+          char *p = buff;
+          table const *tp;
+
+          do
+            {
+              if (p < buff + sizeof buff - 1)
+                *p++ = c;
+              c = *++pc->input;
+            }
+          while (c_isalpha (c) || c == '.');
+
+          *p = '\0';
+          tp = lookup_word (pc, buff);
+          if (! tp)
+            return '?';
+          lvalp->intval = tp->value;
+          return tp->type;
+        }
+
+      if (c != '(')
+        return *pc->input++;
+      count = 0;
+      do
+        {
+          c = *pc->input++;
+          if (c == '\0')
+            return c;
+          if (c == '(')
+            count++;
+          else if (c == ')')
+            count--;
+        }
+      while (count != 0);
+    }
+}
+
+/* Do nothing if the parser reports an error.  */
+static int
+yyerror (parser_control const *pc _GL_UNUSED,
+         char const *s _GL_UNUSED)
+{
+  return 0;
+}
+
+/* If *TM0 is the old and *TM1 is the new value of a struct tm after
+   passing it to mktime, return true if it's OK that mktime returned T.
+   It's not OK if *TM0 has out-of-range members.  */
+
+static bool
+mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t)
+{
+  if (t == (time_t) -1)
+    {
+      /* Guard against falsely reporting an error when parsing a time
+         stamp that happens to equal (time_t) -1, on a host that
+         supports such a time stamp.  */
+      tm1 = localtime (&t);
+      if (!tm1)
+        return false;
+    }
+
+  return ! ((tm0->tm_sec ^ tm1->tm_sec)
+            | (tm0->tm_min ^ tm1->tm_min)
+            | (tm0->tm_hour ^ tm1->tm_hour)
+            | (tm0->tm_mday ^ tm1->tm_mday)
+            | (tm0->tm_mon ^ tm1->tm_mon)
+            | (tm0->tm_year ^ tm1->tm_year));
+}
+
+/* A reasonable upper bound for the size of ordinary TZ strings.
+   Use heap allocation if TZ's length exceeds this.  */
+enum { TZBUFSIZE = 100 };
+
+/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated
+   otherwise.  */
+static char *
+get_tz (char tzbuf[TZBUFSIZE])
+{
+  char *tz = getenv ("TZ");
+  if (tz)
+    {
+      size_t tzsize = strlen (tz) + 1;
+      tz = (tzsize <= TZBUFSIZE
+            ? memcpy (tzbuf, tz, tzsize)
+            : xmemdup (tz, tzsize));
+    }
+  return tz;
+}
+
+/* Parse a date/time string, storing the resulting time value into *RESULT.
+   The string itself is pointed to by P.  Return true if successful.
+   P can be an incomplete or relative time specification; if so, use
+   *NOW as the basis for the returned time.  */
+bool
+parse_datetime (struct timespec *result, char const *p,
+                struct timespec const *now)
+{
+  time_t Start;
+  long int Start_ns;
+  struct tm const *tmp;
+  struct tm tm;
+  struct tm tm0;
+  parser_control pc;
+  struct timespec gettime_buffer;
+  unsigned char c;
+  bool tz_was_altered = false;
+  char *tz0 = NULL;
+  char tz0buf[TZBUFSIZE];
+  bool ok = true;
+
+  if (! now)
+    {
+      gettime (&gettime_buffer);
+      now = &gettime_buffer;
+    }
+
+  Start = now->tv_sec;
+  Start_ns = now->tv_nsec;
+
+  tmp = localtime (&now->tv_sec);
+  if (! tmp)
+    return false;
+
+  while (c = *p, c_isspace (c))
+    p++;
+
+  if (strncmp (p, "TZ=\"", 4) == 0)
+    {
+      char const *tzbase = p + 4;
+      size_t tzsize = 1;
+      char const *s;
+
+      for (s = tzbase; *s; s++, tzsize++)
+        if (*s == '\\')
+          {
+            s++;
+            if (! (*s == '\\' || *s == '"'))
+              break;
+          }
+        else if (*s == '"')
+          {
+            char *z;
+            char *tz1;
+            char tz1buf[TZBUFSIZE];
+            bool large_tz = TZBUFSIZE < tzsize;
+            bool setenv_ok;
+            /* Free tz0, in case this is the 2nd or subsequent time through. */
+            free (tz0);
+            tz0 = get_tz (tz0buf);
+            z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
+            for (s = tzbase; *s != '"'; s++)
+              *z++ = *(s += *s == '\\');
+            *z = '\0';
+            setenv_ok = setenv ("TZ", tz1, 1) == 0;
+            if (large_tz)
+              free (tz1);
+            if (!setenv_ok)
+              goto fail;
+            tz_was_altered = true;
+            p = s + 1;
+          }
+    }
+
+  /* As documented, be careful to treat the empty string just like
+     a date string of "0".  Without this, an empty string would be
+     declared invalid when parsed during a DST transition.  */
+  if (*p == '\0')
+    p = "0";
+
+  pc.input = p;
+  pc.year.value = tmp->tm_year;
+  pc.year.value += TM_YEAR_BASE;
+  pc.year.digits = 0;
+  pc.month = tmp->tm_mon + 1;
+  pc.day = tmp->tm_mday;
+  pc.hour = tmp->tm_hour;
+  pc.minutes = tmp->tm_min;
+  pc.seconds.tv_sec = tmp->tm_sec;
+  pc.seconds.tv_nsec = Start_ns;
+  tm.tm_isdst = tmp->tm_isdst;
+
+  pc.meridian = MER24;
+  pc.rel = RELATIVE_TIME_0;
+  pc.timespec_seen = false;
+  pc.rels_seen = false;
+  pc.dates_seen = 0;
+  pc.days_seen = 0;
+  pc.times_seen = 0;
+  pc.local_zones_seen = 0;
+  pc.dsts_seen = 0;
+  pc.zones_seen = 0;
+
+#if HAVE_STRUCT_TM_TM_ZONE
+  pc.local_time_zone_table[0].name = tmp->tm_zone;
+  pc.local_time_zone_table[0].type = tLOCAL_ZONE;
+  pc.local_time_zone_table[0].value = tmp->tm_isdst;
+  pc.local_time_zone_table[1].name = NULL;
+
+  /* Probe the names used in the next three calendar quarters, looking
+     for a tm_isdst different from the one we already have.  */
+  {
+    int quarter;
+    for (quarter = 1; quarter <= 3; quarter++)
+      {
+        time_t probe = Start + quarter * (90 * 24 * 60 * 60);
+        struct tm const *probe_tm = localtime (&probe);
+        if (probe_tm && probe_tm->tm_zone
+            && probe_tm->tm_isdst != pc.local_time_zone_table[0].value)
+          {
+              {
+                pc.local_time_zone_table[1].name = probe_tm->tm_zone;
+                pc.local_time_zone_table[1].type = tLOCAL_ZONE;
+                pc.local_time_zone_table[1].value = probe_tm->tm_isdst;
+                pc.local_time_zone_table[2].name = NULL;
+              }
+            break;
+          }
+      }
+  }
+#else
+#if HAVE_TZNAME
+  {
+# if !HAVE_DECL_TZNAME
+    extern char *tzname[];
+# endif
+    int i;
+    for (i = 0; i < 2; i++)
+      {
+        pc.local_time_zone_table[i].name = tzname[i];
+        pc.local_time_zone_table[i].type = tLOCAL_ZONE;
+        pc.local_time_zone_table[i].value = i;
+      }
+    pc.local_time_zone_table[i].name = NULL;
+  }
+#else
+  pc.local_time_zone_table[0].name = NULL;
+#endif
+#endif
+
+  if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name
+      && ! strcmp (pc.local_time_zone_table[0].name,
+                   pc.local_time_zone_table[1].name))
+    {
+      /* This locale uses the same abbrevation for standard and
+         daylight times.  So if we see that abbreviation, we don't
+         know whether it's daylight time.  */
+      pc.local_time_zone_table[0].value = -1;
+      pc.local_time_zone_table[1].name = NULL;
+    }
+
+  if (yyparse (&pc) != 0)
+    goto fail;
+
+  if (pc.timespec_seen)
+    *result = pc.seconds;
+  else
+    {
+      if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
+               | (pc.local_zones_seen + pc.zones_seen)))
+        goto fail;
+
+      tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
+      tm.tm_mon = pc.month - 1;
+      tm.tm_mday = pc.day;
+      if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
+        {
+          tm.tm_hour = to_hour (pc.hour, pc.meridian);
+          if (tm.tm_hour < 0)
+            goto fail;
+          tm.tm_min = pc.minutes;
+          tm.tm_sec = pc.seconds.tv_sec;
+        }
+      else
+        {
+          tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+          pc.seconds.tv_nsec = 0;
+        }
+
+      /* Let mktime deduce tm_isdst if we have an absolute time stamp.  */
+      if (pc.dates_seen | pc.days_seen | pc.times_seen)
+        tm.tm_isdst = -1;
+
+      /* But if the input explicitly specifies local time with or without
+         DST, give mktime that information.  */
+      if (pc.local_zones_seen)
+        tm.tm_isdst = pc.local_isdst;
+
+      tm0 = tm;
+
+      Start = mktime (&tm);
+
+      if (! mktime_ok (&tm0, &tm, Start))
+        {
+          if (! pc.zones_seen)
+            goto fail;
+          else
+            {
+              /* Guard against falsely reporting errors near the time_t
+                 boundaries when parsing times in other time zones.  For
+                 example, suppose the input string "1969-12-31 23:00:00 -0100",
+                 the current time zone is 8 hours ahead of UTC, and the min
+                 time_t value is 1970-01-01 00:00:00 UTC.  Then the min
+                 localtime value is 1970-01-01 08:00:00, and mktime will
+                 therefore fail on 1969-12-31 23:00:00.  To work around the
+                 problem, set the time zone to 1 hour behind UTC temporarily
+                 by setting TZ="XXX1:00" and try mktime again.  */
+
+              long int time_zone = pc.time_zone;
+              long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone;
+              long int abs_time_zone_hour = abs_time_zone / 60;
+              int abs_time_zone_min = abs_time_zone % 60;
+              char tz1buf[sizeof "XXX+0:00"
+                          + sizeof pc.time_zone * CHAR_BIT / 3];
+              if (!tz_was_altered)
+                tz0 = get_tz (tz0buf);
+              sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
+                       abs_time_zone_hour, abs_time_zone_min);
+              if (setenv ("TZ", tz1buf, 1) != 0)
+                goto fail;
+              tz_was_altered = true;
+              tm = tm0;
+              Start = mktime (&tm);
+              if (! mktime_ok (&tm0, &tm, Start))
+                goto fail;
+            }
+        }
+
+      if (pc.days_seen && ! pc.dates_seen)
+        {
+          tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7
+                         + 7 * (pc.day_ordinal
+                                - (0 < pc.day_ordinal
+                                   && tm.tm_wday != pc.day_number)));
+          tm.tm_isdst = -1;
+          Start = mktime (&tm);
+          if (Start == (time_t) -1)
+            goto fail;
+        }
+
+      /* Add relative date.  */
+      if (pc.rel.year | pc.rel.month | pc.rel.day)
+        {
+          int year = tm.tm_year + pc.rel.year;
+          int month = tm.tm_mon + pc.rel.month;
+          int day = tm.tm_mday + pc.rel.day;
+          if (((year < tm.tm_year) ^ (pc.rel.year < 0))
+              | ((month < tm.tm_mon) ^ (pc.rel.month < 0))
+              | ((day < tm.tm_mday) ^ (pc.rel.day < 0)))
+            goto fail;
+          tm.tm_year = year;
+          tm.tm_mon = month;
+          tm.tm_mday = day;
+          tm.tm_hour = tm0.tm_hour;
+          tm.tm_min = tm0.tm_min;
+          tm.tm_sec = tm0.tm_sec;
+          tm.tm_isdst = tm0.tm_isdst;
+          Start = mktime (&tm);
+          if (Start == (time_t) -1)
+            goto fail;
+        }
+
+      /* The only "output" of this if-block is an updated Start value,
+         so this block must follow others that clobber Start.  */
+      if (pc.zones_seen)
+        {
+          long int delta = pc.time_zone * 60;
+          time_t t1;
+#ifdef HAVE_TM_GMTOFF
+          delta -= tm.tm_gmtoff;
+#else
+          time_t t = Start;
+          struct tm const *gmt = gmtime (&t);
+          if (! gmt)
+            goto fail;
+          delta -= tm_diff (&tm, gmt);
+#endif
+          t1 = Start - delta;
+          if ((Start < t1) != (delta < 0))
+            goto fail;  /* time_t overflow */
+          Start = t1;
+        }
+
+      /* Add relative hours, minutes, and seconds.  On hosts that support
+         leap seconds, ignore the possibility of leap seconds; e.g.,
+         "+ 10 minutes" adds 600 seconds, even if one of them is a
+         leap second.  Typically this is not what the user wants, but it's
+         too hard to do it the other way, because the time zone indicator
+         must be applied before relative times, and if mktime is applied
+         again the time zone will be lost.  */
+      {
+        long int sum_ns = pc.seconds.tv_nsec + pc.rel.ns;
+        long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION;
+        time_t t0 = Start;
+        long int d1 = 60 * 60 * pc.rel.hour;
+        time_t t1 = t0 + d1;
+        long int d2 = 60 * pc.rel.minutes;
+        time_t t2 = t1 + d2;
+        long_time_t d3 = pc.rel.seconds;
+        long_time_t t3 = t2 + d3;
+        long int d4 = (sum_ns - normalized_ns) / BILLION;
+        long_time_t t4 = t3 + d4;
+        time_t t5 = t4;
+
+        if ((d1 / (60 * 60) ^ pc.rel.hour)
+            | (d2 / 60 ^ pc.rel.minutes)
+            | ((t1 < t0) ^ (d1 < 0))
+            | ((t2 < t1) ^ (d2 < 0))
+            | ((t3 < t2) ^ (d3 < 0))
+            | ((t4 < t3) ^ (d4 < 0))
+            | (t5 != t4))
+          goto fail;
+
+        result->tv_sec = t5;
+        result->tv_nsec = normalized_ns;
+      }
+    }
+
+  goto done;
+
+ fail:
+  ok = false;
+ done:
+  if (tz_was_altered)
+    ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
+  if (tz0 != tz0buf)
+    free (tz0);
+  return ok;
+}
+
+#if TEST
+
+int
+main (int ac, char **av)
+{
+  char buff[BUFSIZ];
+
+  printf ("Enter date, or blank line to exit.\n\t> ");
+  fflush (stdout);
+
+  buff[BUFSIZ - 1] = '\0';
+  while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
+    {
+      struct timespec d;
+      struct tm const *tm;
+      if (! parse_datetime (&d, buff, NULL))
+        printf ("Bad format - couldn't convert.\n");
+      else if (! (tm = localtime (&d.tv_sec)))
+        {
+          long int sec = d.tv_sec;
+          printf ("localtime (%ld) failed\n", sec);
+        }
+      else
+        {
+          int ns = d.tv_nsec;
+          printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
+                  tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
+                  tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
+        }
+      printf ("\t> ");
+      fflush (stdout);
+    }
+  return 0;
+}
+#endif /* TEST */
index e9f8fb24f3993b484c11a682c2356be917167012..6d98a97232f0a34344936b3294bd485219efb557 100644 (file)
@@ -22,7 +22,7 @@
 #include <config.h>
 #include "priv-set.h"
 
-#if HAVE_GETPPRIV
+#if HAVE_GETPPRIV && HAVE_PRIV_H
 
 # include <errno.h>
 # include <stdbool.h>
@@ -80,7 +80,7 @@ priv_set_ismember (const char *priv)
 
 
 /* Try to remove priv from the effective set.
-   Returns 0 if priv was removed from or was not present in the effective set.
+   Returns 0 if priv was removed.
    Returns -1 on error with errno set appropriately.  */
 int
 priv_set_remove (const char *priv)
@@ -111,9 +111,8 @@ priv_set_remove (const char *priv)
 
 
 /* Try to restore priv to the effective set.
-   Returns 0 if priv was re-added to the effective set (after being prviously
-   removed by a call to priv_set_remove) or if priv was already in the
-   effective set.
+   Returns 0 if priv was re-added to the effective set (after being previously
+   removed by a call to priv_set_remove).
    Returns -1 on error with errno set appropriately.  */
 int
 priv_set_restore (const char *priv)
index 588f57926ee574d9cf37ab4b3359f535e0160bb5..c6988245379346ed23f2c1eca49427b4c7cdd40a 100644 (file)
@@ -19,7 +19,7 @@
 
    Written by David Bartley.  */
 
-#if HAVE_GETPPRIV
+#if HAVE_GETPPRIV && HAVE_PRIV_H
 
 # include <priv.h>
 
diff --git a/gnu/readlinkat.c b/gnu/readlinkat.c
new file mode 100644 (file)
index 0000000..a722ec4
--- /dev/null
@@ -0,0 +1,49 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Read a symlink relative to an open directory.
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <unistd.h>
+
+/* Gnulib provides a readlink stub for mingw; use it for distinction
+   between EINVAL and ENOENT, rather than always failing with ENOSYS.  */
+
+/* POSIX 2008 says that unlike readlink, readlinkat returns 0 for
+   success instead of the buffer length.  But this would render
+   readlinkat worthless since readlink does not guarantee a
+   NUL-terminated buffer.  Assume this was a bug in POSIX.  */
+
+/* Read the contents of symlink FILE into buffer BUF of size LEN, in the
+   directory open on descriptor FD.  If possible, do it without changing
+   the working directory.  Otherwise, resort to using save_cwd/fchdir,
+   then readlink/restore_cwd.  If either the save_cwd or the restore_cwd
+   fails, then give a diagnostic and exit nonzero.  */
+
+#define AT_FUNC_NAME readlinkat
+#define AT_FUNC_F1 readlink
+#define AT_FUNC_POST_FILE_PARAM_DECLS , char *buf, size_t len
+#define AT_FUNC_POST_FILE_ARGS        , buf, len
+#define AT_FUNC_RESULT ssize_t
+#include "at-func.c"
+#undef AT_FUNC_NAME
+#undef AT_FUNC_F1
+#undef AT_FUNC_POST_FILE_PARAM_DECLS
+#undef AT_FUNC_POST_FILE_ARGS
+#undef AT_FUNC_RESULT
index 04894fa530ae8a583d871f7138759ffabfd0ce8d..61d047f66032fbba2f70454766ee879e46cc3327 100644 (file)
 /* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h.  */
 #ifdef realloc
 # define NEED_REALLOC_GNU 1
+/* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU.  */
+#elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU
+# define NEED_REALLOC_GNU 1
 #endif
 
 /* Infer the properties of the system's malloc function.
-   Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h.  */
-#if GNULIB_MALLOC_GNU && !defined malloc
+   The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
+#if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU
 # define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
 #endif
 
index 69f5c94d71930148842d625d18c73bd0bf6baa26..fd9272f28f67d38be5b620f9ce0db07cdc7550ff 100644 (file)
@@ -2624,11 +2624,17 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
 static reg_errcode_t
 internal_function
 # ifdef RE_ENABLE_I18N
-build_range_exp (bitset_t sbcset, re_charset_t *mbcset, Idx *range_alloc,
-                bracket_elem_t *start_elem, bracket_elem_t *end_elem)
+build_range_exp (const reg_syntax_t syntax,
+                 bitset_t sbcset,
+                 re_charset_t *mbcset,
+                 Idx *range_alloc,
+                 const bracket_elem_t *start_elem,
+                 const bracket_elem_t *end_elem)
 # else /* not RE_ENABLE_I18N */
-build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
-                bracket_elem_t *end_elem)
+build_range_exp (const reg_syntax_t syntax,
+                 bitset_t sbcset,
+                 const bracket_elem_t *start_elem,
+                 const bracket_elem_t *end_elem)
 # endif /* not RE_ENABLE_I18N */
 {
   unsigned int start_ch, end_ch;
@@ -2667,7 +2673,9 @@ build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
       return REG_ECOLLATE;
     cmp_buf[0] = start_wc;
     cmp_buf[4] = end_wc;
-    if (wcscoll (cmp_buf, cmp_buf + 4) > 0)
+
+    if (BE ((syntax & RE_NO_EMPTY_RANGES)
+            && wcscoll (cmp_buf, cmp_buf + 4) > 0, 0))
       return REG_ERANGE;
 
     /* Got valid collation sequence values, add them as a new entry.
@@ -3170,11 +3178,11 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
                                  &start_elem, &end_elem);
 #else
 # ifdef RE_ENABLE_I18N
-         *err = build_range_exp (sbcset,
+         *err = build_range_exp (syntax, sbcset,
                                  dfa->mb_cur_max > 1 ? mbcset : NULL,
                                  &range_alloc, &start_elem, &end_elem);
 # else
-         *err = build_range_exp (sbcset, &start_elem, &end_elem);
+         *err = build_range_exp (syntax, sbcset, &start_elem, &end_elem);
 # endif
 #endif /* RE_ENABLE_I18N */
          if (BE (*err != REG_NOERROR, 0))
index ef54b55cf8574f0f809fa9e1a7fd6306a13e5329..14ba6d27e3c63ff87e337652c4f76ba9caaa064a 100644 (file)
@@ -116,10 +116,10 @@ typedef unsigned long int reg_syntax_t;
 /* If this bit is set, then ^ and $ are always anchors (outside bracket
      expressions, of course).
    If this bit is not set, then it depends:
-        ^  is an anchor if it is at the beginning of a regular
-           expression or after an open-group or an alternation operator;
-        $  is an anchor if it is at the end of a regular expression, or
-           before a close-group or an alternation operator.
+       ^  is an anchor if it is at the beginning of a regular
+          expression or after an open-group or an alternation operator;
+       $  is an anchor if it is at the end of a regular expression, or
+          before a close-group or an alternation operator.
 
    This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
    POSIX draft 11.2 says that * etc. in leading positions is undefined.
@@ -221,8 +221,8 @@ typedef unsigned long int reg_syntax_t;
    whether ^ should be special.  */
 # define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
 
-/* If this bit is set, then \{ cannot be first in an bre or
-   immediately after an alternation or begin-group operator.  */
+/* If this bit is set, then \{ cannot be first in a regex or
+   immediately after an alternation, open-group or \} operator.  */
 # define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
 
 /* If this bit is set, then no_sub will be set to 1 during
@@ -497,8 +497,8 @@ struct re_pattern_buffer
 #endif
   unsigned int _REG_RE_NAME (regs_allocated) : 2;
 
-  /* Set to zero when `regex_compile' compiles a pattern; set to one
-     by `re_compile_fastmap' if it updates the fastmap.  */
+  /* Set to zero when `re_compile_pattern' compiles a pattern; set to
+     one by `re_compile_fastmap' if it updates the fastmap.  */
   unsigned int _REG_RE_NAME (fastmap_accurate) : 1;
 
   /* If set, `re_match_2' does not return information about
@@ -612,8 +612,8 @@ extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
    register data.
 
    Unless this function is called, the first search or match using
-   PATTERN_BUFFER will allocate its own register data, without
-   freeing the old data.  */
+   BUFFER will allocate its own register data, without freeing the old
+   data.  */
 extern void re_set_registers (struct re_pattern_buffer *__buffer,
                              struct re_registers *__regs,
                              __re_size_t __num_regs,
index c9648142b496502f86dbbe57f41f4ea3d8e9996c..910424c49fe123bc5f46663e33c8f984a5e22cfc 100644 (file)
@@ -735,15 +735,17 @@ re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
                          mbstate_t cur_state;
                          wchar_t wc2;
                          Idx mlen = raw + pstr->len - p;
-                         unsigned char buf[6];
                          size_t mbclen;
 
+#if 0 /* dead code: buf is set but never used */
+                         unsigned char buf[6];
                          if (BE (pstr->trans != NULL, 0))
                            {
                              int i = mlen < 6 ? mlen : 6;
                              while (--i >= 0)
                                buf[i] = pstr->trans[p[i]];
                            }
+#endif
                          /* XXX Don't use mbrtowc, we know which conversion
                             to use (UTF-8 -> UCS4).  */
                          memset (&cur_state, 0, sizeof (cur_state));
index 4305be3dbddc96b37eba6b65639101c84adb3716..c8c37c32aa6b7b4afc354e044a6b0a80901aadbf 100644 (file)
@@ -469,6 +469,8 @@ static unsigned int re_string_context_at (const re_string_t *input, Idx idx,
 # else
 /* alloca is implemented with malloc, so just use malloc.  */
 #  define __libc_use_alloca(n) 0
+#  undef alloca
+#  define alloca(n) malloc (n)
 # endif
 #endif
 
diff --git a/gnu/rename.c b/gnu/rename.c
new file mode 100644 (file)
index 0000000..4ecf64f
--- /dev/null
@@ -0,0 +1,475 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Work around rename bugs in some systems.
+
+   Copyright (C) 2001-2003, 2005-2006, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Volker Borchert, Eric Blake.  */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#undef rename
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* The mingw rename has problems with trailing slashes; it also
+   requires use of native Windows calls to allow atomic renames over
+   existing files.  */
+
+# include <errno.h>
+# include <stdbool.h>
+# include <stdlib.h>
+# include <sys/stat.h>
+# include <unistd.h>
+
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# include "dirname.h"
+
+/* Rename the file SRC to DST.  This replacement is necessary on
+   Windows, on which the system rename function will not replace
+   an existing DST.  */
+int
+rpl_rename (char const *src, char const *dst)
+{
+  int error;
+  size_t src_len = strlen (src);
+  size_t dst_len = strlen (dst);
+  char *src_base = last_component (src);
+  char *dst_base = last_component (dst);
+  bool src_slash;
+  bool dst_slash;
+  bool dst_exists;
+  struct stat src_st;
+  struct stat dst_st;
+
+  /* Filter out dot as last component.  */
+  if (!src_len || !dst_len)
+    {
+      errno = ENOENT;
+      return -1;
+    }
+  if (*src_base == '.')
+    {
+      size_t len = base_len (src_base);
+      if (len == 1 || (len == 2 && src_base[1] == '.'))
+        {
+          errno = EINVAL;
+          return -1;
+        }
+    }
+  if (*dst_base == '.')
+    {
+      size_t len = base_len (dst_base);
+      if (len == 1 || (len == 2 && dst_base[1] == '.'))
+        {
+          errno = EINVAL;
+          return -1;
+        }
+    }
+
+  /* Presence of a trailing slash requires directory semantics.  If
+     the source does not exist, or if the destination cannot be turned
+     into a directory, give up now.  Otherwise, strip trailing slashes
+     before calling rename.  There are no symlinks on mingw, so stat
+     works instead of lstat.  */
+  src_slash = ISSLASH (src[src_len - 1]);
+  dst_slash = ISSLASH (dst[dst_len - 1]);
+  if (stat (src, &src_st))
+    return -1;
+  if (stat (dst, &dst_st))
+    {
+      if (errno != ENOENT || (!S_ISDIR (src_st.st_mode) && dst_slash))
+        return -1;
+      dst_exists = false;
+    }
+  else
+    {
+      if (S_ISDIR (dst_st.st_mode) != S_ISDIR (src_st.st_mode))
+        {
+          errno = S_ISDIR (dst_st.st_mode) ? EISDIR : ENOTDIR;
+          return -1;
+        }
+      dst_exists = true;
+    }
+
+  /* There are no symlinks, so if a file existed with a trailing
+     slash, it must be a directory, and we don't have to worry about
+     stripping strip trailing slash.  However, mingw refuses to
+     replace an existing empty directory, so we have to help it out.
+     And canonicalize_file_name is not yet ported to mingw; however,
+     for directories, getcwd works as a viable alternative.  Ensure
+     that we can get back to where we started before using it; later
+     attempts to return are fatal.  Note that we can end up losing a
+     directory if rename then fails, but it was empty, so not much
+     damage was done.  */
+  if (dst_exists && S_ISDIR (dst_st.st_mode))
+    {
+      char *cwd = getcwd (NULL, 0);
+      char *src_temp;
+      char *dst_temp;
+      if (!cwd || chdir (cwd))
+        return -1;
+      if (IS_ABSOLUTE_FILE_NAME (src))
+        {
+          dst_temp = chdir (dst) ? NULL : getcwd (NULL, 0);
+          src_temp = chdir (src) ? NULL : getcwd (NULL, 0);
+        }
+      else
+        {
+          src_temp = chdir (src) ? NULL : getcwd (NULL, 0);
+          if (!IS_ABSOLUTE_FILE_NAME (dst) && chdir (cwd))
+            abort ();
+          dst_temp = chdir (dst) ? NULL : getcwd (NULL, 0);
+        }
+      if (chdir (cwd))
+        abort ();
+      free (cwd);
+      if (!src_temp || !dst_temp)
+        {
+          free (src_temp);
+          free (dst_temp);
+          errno = ENOMEM;
+          return -1;
+        }
+      src_len = strlen (src_temp);
+      if (strncmp (src_temp, dst_temp, src_len) == 0
+          && (ISSLASH (dst_temp[src_len]) || dst_temp[src_len] == '\0'))
+        {
+          error = dst_temp[src_len];
+          free (src_temp);
+          free (dst_temp);
+          if (error)
+            {
+              errno = EINVAL;
+              return -1;
+            }
+          return 0;
+        }
+      if (rmdir (dst))
+        {
+          error = errno;
+          free (src_temp);
+          free (dst_temp);
+          errno = error;
+          return -1;
+        }
+      free (src_temp);
+      free (dst_temp);
+    }
+
+  /* MoveFileEx works if SRC is a directory without any flags, but
+     fails with MOVEFILE_REPLACE_EXISTING, so try without flags first.
+     Thankfully, MoveFileEx handles hard links correctly, even though
+     rename() does not.  */
+  if (MoveFileEx (src, dst, 0))
+    return 0;
+
+  /* Retry with MOVEFILE_REPLACE_EXISTING if the move failed
+     due to the destination already existing.  */
+  error = GetLastError ();
+  if (error == ERROR_FILE_EXISTS || error == ERROR_ALREADY_EXISTS)
+    {
+      if (MoveFileEx (src, dst, MOVEFILE_REPLACE_EXISTING))
+        return 0;
+
+      error = GetLastError ();
+    }
+
+  switch (error)
+    {
+    case ERROR_FILE_NOT_FOUND:
+    case ERROR_PATH_NOT_FOUND:
+    case ERROR_BAD_PATHNAME:
+    case ERROR_DIRECTORY:
+      errno = ENOENT;
+      break;
+
+    case ERROR_ACCESS_DENIED:
+    case ERROR_SHARING_VIOLATION:
+      errno = EACCES;
+      break;
+
+    case ERROR_OUTOFMEMORY:
+      errno = ENOMEM;
+      break;
+
+    case ERROR_CURRENT_DIRECTORY:
+      errno = EBUSY;
+      break;
+
+    case ERROR_NOT_SAME_DEVICE:
+      errno = EXDEV;
+      break;
+
+    case ERROR_WRITE_PROTECT:
+      errno = EROFS;
+      break;
+
+    case ERROR_WRITE_FAULT:
+    case ERROR_READ_FAULT:
+    case ERROR_GEN_FAILURE:
+      errno = EIO;
+      break;
+
+    case ERROR_HANDLE_DISK_FULL:
+    case ERROR_DISK_FULL:
+    case ERROR_DISK_TOO_FRAGMENTED:
+      errno = ENOSPC;
+      break;
+
+    case ERROR_FILE_EXISTS:
+    case ERROR_ALREADY_EXISTS:
+      errno = EEXIST;
+      break;
+
+    case ERROR_BUFFER_OVERFLOW:
+    case ERROR_FILENAME_EXCED_RANGE:
+      errno = ENAMETOOLONG;
+      break;
+
+    case ERROR_INVALID_NAME:
+    case ERROR_DELETE_PENDING:
+      errno = EPERM;        /* ? */
+      break;
+
+# ifndef ERROR_FILE_TOO_LARGE
+/* This value is documented but not defined in all versions of windows.h.  */
+#  define ERROR_FILE_TOO_LARGE 223
+# endif
+    case ERROR_FILE_TOO_LARGE:
+      errno = EFBIG;
+      break;
+
+    default:
+      errno = EINVAL;
+      break;
+    }
+
+  return -1;
+}
+
+#else /* ! W32 platform */
+
+# include <errno.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <sys/stat.h>
+# include <unistd.h>
+
+# include "dirname.h"
+# include "same-inode.h"
+
+/* Rename the file SRC to DST, fixing any trailing slash bugs.  */
+
+int
+rpl_rename (char const *src, char const *dst)
+{
+  size_t src_len = strlen (src);
+  size_t dst_len = strlen (dst);
+  char *src_temp = (char *) src;
+  char *dst_temp = (char *) dst;
+  bool src_slash;
+  bool dst_slash;
+  bool dst_exists;
+  int ret_val = -1;
+  int rename_errno = ENOTDIR;
+  struct stat src_st;
+  struct stat dst_st;
+
+  if (!src_len || !dst_len)
+    return rename (src, dst); /* Let strace see the ENOENT failure.  */
+
+# if RENAME_DEST_EXISTS_BUG
+  {
+    char *src_base = last_component (src);
+    char *dst_base = last_component (dst);
+    if (*src_base == '.')
+      {
+        size_t len = base_len (src_base);
+        if (len == 1 || (len == 2 && src_base[1] == '.'))
+          {
+            errno = EINVAL;
+            return -1;
+          }
+      }
+    if (*dst_base == '.')
+      {
+        size_t len = base_len (dst_base);
+        if (len == 1 || (len == 2 && dst_base[1] == '.'))
+          {
+            errno = EINVAL;
+            return -1;
+          }
+      }
+  }
+# endif /* RENAME_DEST_EXISTS_BUG */
+
+  src_slash = src[src_len - 1] == '/';
+  dst_slash = dst[dst_len - 1] == '/';
+
+# if !RENAME_HARD_LINK_BUG && !RENAME_DEST_EXISTS_BUG
+  /* If there are no trailing slashes, then trust the native
+     implementation unless we also suspect issues with hard link
+     detection or file/directory conflicts.  */
+  if (!src_slash && !dst_slash)
+    return rename (src, dst);
+# endif /* !RENAME_HARD_LINK_BUG && !RENAME_DEST_EXISTS_BUG */
+
+  /* Presence of a trailing slash requires directory semantics.  If
+     the source does not exist, or if the destination cannot be turned
+     into a directory, give up now.  Otherwise, strip trailing slashes
+     before calling rename.  */
+  if (lstat (src, &src_st))
+    return -1;
+  if (lstat (dst, &dst_st))
+    {
+      if (errno != ENOENT || (!S_ISDIR (src_st.st_mode) && dst_slash))
+        return -1;
+      dst_exists = false;
+    }
+  else
+    {
+      if (S_ISDIR (dst_st.st_mode) != S_ISDIR (src_st.st_mode))
+        {
+          errno = S_ISDIR (dst_st.st_mode) ? EISDIR : ENOTDIR;
+          return -1;
+        }
+# if RENAME_HARD_LINK_BUG
+      if (SAME_INODE (src_st, dst_st))
+        return 0;
+# endif /* RENAME_HARD_LINK_BUG */
+      dst_exists = true;
+    }
+
+# if (RENAME_TRAILING_SLASH_SOURCE_BUG || RENAME_DEST_EXISTS_BUG        \
+      || RENAME_HARD_LINK_BUG)
+  /* If the only bug was that a trailing slash was allowed on a
+     non-existing file destination, as in Solaris 10, then we've
+     already covered that situation.  But if there is any problem with
+     a trailing slash on an existing source or destination, as in
+     Solaris 9, or if a directory can overwrite a symlink, as on
+     Cygwin 1.5, or if directories cannot be created with trailing
+     slash, as on NetBSD 1.6, then we must strip the offending slash
+     and check that we have not encountered a symlink instead of a
+     directory.
+
+     Stripping a trailing slash interferes with POSIX semantics, where
+     rename behavior on a symlink with a trailing slash operates on
+     the corresponding target directory.  We prefer the GNU semantics
+     of rejecting any use of a symlink with trailing slash, but do not
+     enforce them, since Solaris 10 is able to obey POSIX semantics
+     and there might be clients expecting it, as counter-intuitive as
+     those semantics are.
+
+     Technically, we could also follow the POSIX behavior by chasing a
+     readlink trail, but that is harder to implement.  */
+  if (src_slash)
+    {
+      src_temp = strdup (src);
+      if (!src_temp)
+        {
+          /* Rather than rely on strdup-posix, we set errno ourselves.  */
+          rename_errno = ENOMEM;
+          goto out;
+        }
+      strip_trailing_slashes (src_temp);
+      if (lstat (src_temp, &src_st))
+        {
+          rename_errno = errno;
+          goto out;
+        }
+      if (S_ISLNK (src_st.st_mode))
+        goto out;
+    }
+  if (dst_slash)
+    {
+      dst_temp = strdup (dst);
+      if (!dst_temp)
+        {
+          rename_errno = ENOMEM;
+          goto out;
+        }
+      strip_trailing_slashes (dst_temp);
+      if (lstat (dst_temp, &dst_st))
+        {
+          if (errno != ENOENT)
+            {
+              rename_errno = errno;
+              goto out;
+            }
+        }
+      else if (S_ISLNK (dst_st.st_mode))
+        goto out;
+    }
+# endif /* RENAME_TRAILING_SLASH_SOURCE_BUG || RENAME_DEST_EXISTS_BUG
+           || RENAME_HARD_LINK_BUG */
+
+# if RENAME_DEST_EXISTS_BUG
+  /* Cygwin 1.5 sometimes behaves oddly when moving a non-empty
+     directory on top of an empty one (the old directory name can
+     reappear if the new directory tree is removed).  Work around this
+     by removing the target first, but don't remove the target if it
+     is a subdirectory of the source.  Note that we can end up losing
+     a directory if rename then fails, but it was empty, so not much
+     damage was done.  */
+  if (dst_exists && S_ISDIR (dst_st.st_mode))
+    {
+      if (src_st.st_dev != dst_st.st_dev)
+        {
+          rename_errno = EXDEV;
+          goto out;
+        }
+      if (src_temp != src)
+        free (src_temp);
+      src_temp = canonicalize_file_name (src);
+      if (dst_temp != dst)
+        free (dst_temp);
+      dst_temp = canonicalize_file_name (dst);
+      if (!src_temp || !dst_temp)
+        {
+          rename_errno = ENOMEM;
+          goto out;
+        }
+      src_len = strlen (src_temp);
+      if (strncmp (src_temp, dst_temp, src_len) == 0
+          && dst_temp[src_len] == '/')
+        {
+          rename_errno = EINVAL;
+          goto out;
+        }
+      if (rmdir (dst))
+        {
+          rename_errno = errno;
+          goto out;
+        }
+    }
+# endif /* RENAME_DEST_EXISTS_BUG */
+
+  ret_val = rename (src_temp, dst_temp);
+  rename_errno = errno;
+ out:
+  if (src_temp != src)
+    free (src_temp);
+  if (dst_temp != dst)
+    free (dst_temp);
+  errno = rename_errno;
+  return ret_val;
+}
+#endif /* ! W32 platform */
diff --git a/gnu/renameat.c b/gnu/renameat.c
new file mode 100644 (file)
index 0000000..ddec0dd
--- /dev/null
@@ -0,0 +1,159 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Rename a file relative to open directories.
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#if HAVE_RENAMEAT
+
+# include <errno.h>
+# include <stdbool.h>
+# include <stdlib.h>
+# include <string.h>
+# include <sys/stat.h>
+
+# include "dirname.h"
+# include "openat.h"
+
+# undef renameat
+
+/* renameat does not honor trailing / on Solaris 10.  Solve it in a
+   similar manner to rename.  No need to worry about bugs not present
+   on Solaris, since all other systems either lack renameat or honor
+   trailing slash correctly.  */
+
+int
+rpl_renameat (int fd1, char const *src, int fd2, char const *dst)
+{
+  size_t src_len = strlen (src);
+  size_t dst_len = strlen (dst);
+  char *src_temp = (char *) src;
+  char *dst_temp = (char *) dst;
+  bool src_slash;
+  bool dst_slash;
+  int ret_val = -1;
+  int rename_errno = ENOTDIR;
+  struct stat src_st;
+  struct stat dst_st;
+
+  /* Let strace see any ENOENT failure.  */
+  if (!src_len || !dst_len)
+    return renameat (fd1, src, fd2, dst);
+
+  src_slash = src[src_len - 1] == '/';
+  dst_slash = dst[dst_len - 1] == '/';
+  if (!src_slash && !dst_slash)
+    return renameat (fd1, src, fd2, dst);
+
+  /* Presence of a trailing slash requires directory semantics.  If
+     the source does not exist, or if the destination cannot be turned
+     into a directory, give up now.  Otherwise, strip trailing slashes
+     before calling rename.  */
+  if (lstatat (fd1, src, &src_st))
+    return -1;
+  if (lstatat (fd2, dst, &dst_st))
+    {
+      if (errno != ENOENT || !S_ISDIR (src_st.st_mode))
+        return -1;
+    }
+  else if (!S_ISDIR (dst_st.st_mode))
+    {
+      errno = ENOTDIR;
+      return -1;
+    }
+  else if (!S_ISDIR (src_st.st_mode))
+    {
+      errno = EISDIR;
+      return -1;
+    }
+
+# if RENAME_TRAILING_SLASH_SOURCE_BUG
+  /* See the lengthy comment in rename.c why Solaris 9 is forced to
+     GNU behavior, while Solaris 10 is left with POSIX behavior,
+     regarding symlinks with trailing slash.  */
+  if (src_slash)
+    {
+      src_temp = strdup (src);
+      if (!src_temp)
+        {
+          /* Rather than rely on strdup-posix, we set errno ourselves.  */
+          rename_errno = ENOMEM;
+          goto out;
+        }
+      strip_trailing_slashes (src_temp);
+      if (lstatat (fd1, src_temp, &src_st))
+        {
+          rename_errno = errno;
+          goto out;
+        }
+      if (S_ISLNK (src_st.st_mode))
+        goto out;
+    }
+  if (dst_slash)
+    {
+      dst_temp = strdup (dst);
+      if (!dst_temp)
+        {
+          rename_errno = ENOMEM;
+          goto out;
+        }
+      strip_trailing_slashes (dst_temp);
+      if (lstatat (fd2, dst_temp, &dst_st))
+        {
+          if (errno != ENOENT)
+            {
+              rename_errno = errno;
+              goto out;
+            }
+        }
+      else if (S_ISLNK (dst_st.st_mode))
+        goto out;
+    }
+# endif /* RENAME_TRAILING_SLASH_SOURCE_BUG */
+
+  ret_val = renameat (fd1, src_temp, fd2, dst_temp);
+  rename_errno = errno;
+ out:
+  if (src_temp != src)
+    free (src_temp);
+  if (dst_temp != dst)
+    free (dst_temp);
+  errno = rename_errno;
+  return ret_val;
+}
+
+#else /* !HAVE_RENAMEAT */
+
+# include "openat-priv.h"
+
+/* Rename FILE1, in the directory open on descriptor FD1, to FILE2, in
+   the directory open on descriptor FD2.  If possible, do it without
+   changing the working directory.  Otherwise, resort to using
+   save_cwd/fchdir, then rename/restore_cwd.  If either the save_cwd or
+   the restore_cwd fails, then give a diagnostic and exit nonzero.  */
+
+int
+renameat (int fd1, char const *file1, int fd2, char const *file2)
+{
+  return at_func2 (fd1, file1, fd2, file2, rename);
+}
+
+#endif /* !HAVE_RENAMEAT */
index 5b1c09554a207b3d300385d799ee96f81015c350..c052d34654ec93ca3d1c2ba917fa352f5a5ab2cb 100644 (file)
@@ -24,8 +24,6 @@
 
 #include <errno.h>
 #include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
 
 #undef rmdir
 
@@ -35,7 +33,6 @@
 int
 rpl_rmdir (char const *dir)
 {
-#if HAVE_RMDIR
   /* Work around cygwin 1.5.x bug where rmdir("dir/./") succeeds.  */
   size_t len = strlen (dir);
   int result;
@@ -53,49 +50,4 @@ rpl_rmdir (char const *dir)
   if (result == -1 && errno == EINVAL)
     errno = ENOTDIR;
   return result;
-
-#else /* !HAVE_RMDIR */
-  /* rmdir adapted from GNU tar.  FIXME: Delete this implementation in
-     2010 if no one reports a system with missing rmdir.  */
-  pid_t cpid;
-  int status;
-  struct stat statbuf;
-
-  if (stat (dir, &statbuf) != 0)
-    return -1;                  /* errno already set */
-
-  if (!S_ISDIR (statbuf.st_mode))
-    {
-      errno = ENOTDIR;
-      return -1;
-    }
-
-  cpid = fork ();
-  switch (cpid)
-    {
-    case -1:                    /* cannot fork */
-      return -1;                /* errno already set */
-
-    case 0:                     /* child process */
-      execl ("/bin/rmdir", "rmdir", dir, (char *) 0);
-      _exit (1);
-
-    default:                    /* parent process */
-
-      /* Wait for kid to finish.  */
-
-      while (wait (&status) != cpid)
-        /* Do nothing.  */ ;
-
-      if (status)
-        {
-
-          /* /bin/rmdir failed.  */
-
-          errno = EIO;
-          return -1;
-        }
-      return 0;
-    }
-#endif /* !HAVE_RMDIR */
 }
diff --git a/gnu/same.c b/gnu/same.c
deleted file mode 100644 (file)
index 5d9c585..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Determine whether two file names refer to the same file.
-
-   Copyright (C) 1997-2000, 2002-2006, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* written by Jim Meyering */
-
-#include <config.h>
-
-#include <stdbool.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#include <errno.h>
-
-#include <string.h>
-
-#include <limits.h>
-#ifndef _POSIX_NAME_MAX
-# define _POSIX_NAME_MAX 14
-#endif
-
-#include "same.h"
-#include "dirname.h"
-#include "error.h"
-#include "same-inode.h"
-
-#ifndef MIN
-# define MIN(a, b) ((a) < (b) ? (a) : (b))
-#endif
-
-/* Return nonzero if SOURCE and DEST point to the same name in the same
-   directory.  */
-
-bool
-same_name (const char *source, const char *dest)
-{
-  /* Compare the basenames.  */
-  char const *source_basename = last_component (source);
-  char const *dest_basename = last_component (dest);
-  size_t source_baselen = base_len (source_basename);
-  size_t dest_baselen = base_len (dest_basename);
-  bool identical_basenames =
-    (source_baselen == dest_baselen
-     && memcmp (source_basename, dest_basename, dest_baselen) == 0);
-  bool compare_dirs = identical_basenames;
-  bool same = false;
-
-#if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX
-  /* This implementation silently truncates components of file names.  If
-     the base names might be truncated, check whether the truncated
-     base names are the same, while checking the directories.  */
-  size_t slen_max = HAVE_LONG_FILE_NAMES ? 255 : _POSIX_NAME_MAX;
-  size_t min_baselen = MIN (source_baselen, dest_baselen);
-  if (slen_max <= min_baselen
-      && memcmp (source_basename, dest_basename, slen_max) == 0)
-    compare_dirs = true;
-#endif
-
-  if (compare_dirs)
-    {
-      struct stat source_dir_stats;
-      struct stat dest_dir_stats;
-      char *source_dirname, *dest_dirname;
-
-      /* Compare the parent directories (via the device and inode numbers).  */
-      source_dirname = dir_name (source);
-      dest_dirname = dir_name (dest);
-
-      if (stat (source_dirname, &source_dir_stats))
-        {
-          /* Shouldn't happen.  */
-          error (1, errno, "%s", source_dirname);
-        }
-
-      if (stat (dest_dirname, &dest_dir_stats))
-        {
-          /* Shouldn't happen.  */
-          error (1, errno, "%s", dest_dirname);
-        }
-
-      same = SAME_INODE (source_dir_stats, dest_dir_stats);
-
-#if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX
-      if (same && ! identical_basenames)
-        {
-          long name_max = (errno = 0, pathconf (dest_dirname, _PC_NAME_MAX));
-          if (name_max < 0)
-            {
-              if (errno)
-                {
-                  /* Shouldn't happen.  */
-                  error (1, errno, "%s", dest_dirname);
-                }
-              same = false;
-            }
-          else
-            same = (name_max <= min_baselen
-                    && memcmp (source_basename, dest_basename, name_max) == 0);
-        }
-#endif
-
-      free (source_dirname);
-      free (dest_dirname);
-    }
-
-  return same;
-}
diff --git a/gnu/same.h b/gnu/same.h
deleted file mode 100644 (file)
index c4b58fd..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Determine whether two file names refer to the same file.
-
-   Copyright (C) 1997-2000, 2003-2004, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef SAME_H_
-# define SAME_H_ 1
-
-# include <stdbool.h>
-
-bool same_name (const char *source, const char *dest);
-
-#endif /* SAME_H_ */
index 6cb3c36bbe8dc7b71d01d42f8ade5652b93f59af..c6b6342999119818cdd84ccc43294f81039193f3 100644 (file)
@@ -33,6 +33,7 @@
 #include "chdir-long.h"
 #include "unistd--.h"
 #include "xgetcwd.h"
+#include "cloexec.h"
 
 #if GNULIB_FCNTL_SAFER
 # include "fcntl--.h"
@@ -77,7 +78,7 @@ save_cwd (struct saved_cwd *cwd)
 {
   cwd->name = NULL;
 
-  cwd->desc = open (".", O_RDONLY);
+  cwd->desc = open (".", O_SEARCH);
   if (!GNULIB_FCNTL_SAFER)
     cwd->desc = fd_safer (cwd->desc);
   if (cwd->desc < 0)
@@ -86,6 +87,7 @@ save_cwd (struct saved_cwd *cwd)
       return cwd->name ? 0 : -1;
     }
 
+  set_cloexec_flag (cwd->desc, true);
   return 0;
 }
 
index a1eaa4379c11abd02fdf358044d90d6ed231cfba..598434135efb4495afcea87c7d5b4111bcfdaecd 100644 (file)
 /* Return a freshly allocated string containing the file names
    in directory DIRP, separated by '\0' characters;
    the end is marked by two '\0' characters in a row.
-   Return NULL (setting errno) if DIRP cannot be read or closed.
+   Return NULL (setting errno) if DIRP cannot be read.
    If DIRP is NULL, return NULL without affecting errno.  */
 
-static char *
-savedirstream (DIR *dirp)
+char *
+streamsavedir (DIR *dirp)
 {
   char *name_space;
   size_t allocated = NAME_SIZE_DEFAULT;
@@ -98,8 +98,6 @@ savedirstream (DIR *dirp)
     }
   name_space[used] = '\0';
   save_errno = errno;
-  if (closedir (dirp) != 0)
-    save_errno = errno;
   if (save_errno != 0)
     {
       free (name_space);
@@ -109,6 +107,22 @@ savedirstream (DIR *dirp)
   return name_space;
 }
 
+/* Like savedirstreamp (DIRP), except also close DIRP.  */
+
+static char *
+savedirstream (DIR *dirp)
+{
+  char *name_space = streamsavedir (dirp);
+  if (dirp && closedir (dirp) != 0)
+    {
+      int save_errno = errno;
+      free (name_space);
+      errno = save_errno;
+      return NULL;
+    }
+  return name_space;
+}
+
 /* Return a freshly allocated string containing the file names
    in directory DIR, separated by '\0' characters;
    the end is marked by two '\0' characters in a row.
@@ -125,6 +139,7 @@ savedir (char const *dir)
    the end is marked by two '\0' characters in a row.
    Return NULL (setting errno) if FD cannot be read or closed.  */
 
+/* deprecated */
 char *
 fdsavedir (int fd)
 {
index ee50d80d00bf8e99c316979b8dffaee6454ec216..7ba194397fa1c3268d84b2071f8ff40fa3b34364 100644 (file)
 
 /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
 
-#if !defined SAVEDIR_H_
-# define SAVEDIR_H_
+#ifndef _GL_SAVEDIR_H
+#define _GL_SAVEDIR_H
 
+#include <dirent.h>
+char *streamsavedir (DIR *dirp);
 char *savedir (char const *dir);
-char *fdsavedir (int fd);
+char *fdsavedir (int fd); /* deprecated */
 
 #endif
index d4670e5c99e8f1dffad18acc12acff60cf339833..a1c1df84ede23f97308efeca13b4f5d094a78c73 100644 (file)
@@ -66,6 +66,10 @@ __libc_lock_define_initialized (static, envlock)
 # define clearenv __clearenv
 # define tfind __tfind
 # define tsearch __tsearch
+#else
+/* Use the system functions, not the gnulib overrides in this file.  */
+# undef malloc
+# undef realloc
 #endif
 
 /* In the GNU C library implementation we try to be more clever and
@@ -114,8 +118,8 @@ int
 __add_to_environ (const char *name, const char *value, const char *combined,
                   int replace)
 {
-  register char **ep;
-  register size_t size;
+  char **ep;
+  size_t size;
   const size_t namelen = strlen (name);
   const size_t vallen = value != NULL ? strlen (value) + 1 : 0;
 
@@ -149,6 +153,9 @@ __add_to_environ (const char *name, const char *value, const char *combined,
                    : realloc (last_environ, (size + 2) * sizeof (char *)));
       if (new_environ == NULL)
         {
+          /* It's easier to set errno to ENOMEM than to rely on the
+             'malloc-posix' and 'realloc-posix' gnulib modules.  */
+          __set_errno (ENOMEM);
           UNLOCK;
           return -1;
         }
@@ -251,7 +258,7 @@ __add_to_environ (const char *name, const char *value, const char *combined,
           if (np == NULL)
 #endif
             {
-              np = malloc (namelen + 1 + vallen);
+              np = (char *) malloc (namelen + 1 + vallen);
               if (np == NULL)
                 {
 #if defined USE_TSEARCH && !defined _LIBC
index 5a17d8ac53fb4812364b27d9b11a7e71f65fe00b..84d3e323afeee5bbb2e8b2a2ac3a1db914b90814 100644 (file)
@@ -22,6 +22,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_STDARG_H@
index 39d1847dca8b5ec8f72f88a5b2a217f0b593b4e9..ea7ead5cddc2883cf6d4d6ef563ed0a492c927a9 100644 (file)
@@ -52,6 +52,9 @@
          with this substitute.  With this substitute, only the values 0 and 1
          give the expected result when converted to _Bool' or 'bool'.
 
+       - C99 allows the use of (_Bool)0.0 in constant expressions, but
+         this substitute cannot always provide this property.
+
    Also, it is suggested that programs use 'bool' rather than '_Bool';
    this isn't required, but 'bool' is more common.  */
 
index 2de616b88da33be8f84d68992d888248f0413606..d67a019cc94e8866d7a8fd71fc5eb287d34f7092 100644 (file)
@@ -28,6 +28,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined __need_wchar_t || defined __need_size_t  \
   || defined __need_ptrdiff_t || defined __need_NULL \
index 8fd48f086e0f513151c4b7cb5a23d3138d39e9ed..9775969115f8e9cf3e665026cd1944c22ee4120a 100644 (file)
 
 #ifndef _GL_STDINT_H
 
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
 /* When including a system file that in turn includes <inttypes.h>,
    use the system <inttypes.h>, not our substitute.  This avoids
    problems with (for example) VMS, whose <sys/bitypes.h> includes
@@ -51,9 +56,6 @@
      in <inttypes.h> would reinclude us, skipping our contents because
      _GL_STDINT_H is defined.
      The include_next requires a split double-inclusion guard.  */
-# if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-# endif
 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
 #endif
 
@@ -279,7 +281,8 @@ typedef unsigned long int gl_uintmax_t;
 /* Verify that intmax_t and uintmax_t have the same size.  Too much code
    breaks if this is not the case.  If this check fails, the reason is likely
    to be found in the autoconf macros.  */
-typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
+typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
+                                ? 1 : -1];
 
 /* 7.18.2. Limits of specified-width integer types */
 
@@ -476,8 +479,9 @@ typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) -
 
 /* wchar_t limits */
 /* Get WCHAR_MIN, WCHAR_MAX.
-   This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
-   includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+   This include is not on the top, above, because on OSF/1 4.0 we have a
+   sequence of nested includes
+   <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
    <stdint.h> and assumes its types are already defined.  */
 #if ! (defined WCHAR_MIN && defined WCHAR_MAX)
 # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
index a05563f72d4b7d641193353d0f1bbd4619882a41..f3fbbc5292a10c0f26cfa00f2e013165ee001c3c 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Implementation details of FILE streams.
-   Copyright (C) 2007-2010 Free Software Foundation, Inc.
+   Copyright (C) 2007-2008, 2010 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
 /* BSD stdio derived implementations.  */
 
+#if defined __NetBSD__                         /* NetBSD */
+/* Get __NetBSD_Version__.  */
+# include <sys/param.h>
+#endif
+
 #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */
 
 # if defined __DragonFly__          /* DragonFly */
@@ -52,7 +57,7 @@
 #  define fp_ fp
 # endif
 
-# if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */
+# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ /* NetBSD >= 1.5ZA, OpenBSD */
   /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup>
      and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */
   struct __sfileext
@@ -61,7 +66,7 @@
       /* More fields, not relevant here.  */
     };
 #  define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub
-# else                                         /* FreeBSD, DragonFly, MacOS X, Cygwin */
+# else                                         /* FreeBSD, NetBSD <= 1.5Z, DragonFly, MacOS X, Cygwin */
 #  define fp_ub fp_->_ub
 # endif
 
index 06047b4936faab3fe140ebcdbfa2647ded595aa8..415936882318da24d6dcfbf15483d8705bf29e0e 100644 (file)
@@ -65,7 +65,6 @@
     }
 
 #  if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */
-#   if !DEPENDS_ON_LIBINTL /* avoid collision with intl/printf.c */
 int
 printf (const char *format, ...)
 {
@@ -78,7 +77,6 @@ printf (const char *format, ...)
 
   return retval;
 }
-#   endif
 #  endif
 
 #  if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */
index 88b368be322aad6675d08a68c9043427cab3d9de..02df65a5b1a8f80005a691a6ad54d6cb010a4b13 100644 (file)
@@ -21,6 +21,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined __need_FILE || defined __need___FILE
 /* Special invocation convention inside glibc header files.  */
 
 /* The definition of _GL_WARN_ON_USE is copied here.  */
 
+/* Macros for stringification.  */
+#define _GL_STDIO_STRINGIZE(token) #token
+#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
+
 
 #if @GNULIB_DPRINTF@
 # if @REPLACE_DPRINTF@
@@ -263,7 +268,8 @@ _GL_CXXALIASWARN (freopen);
 #elif defined GNULIB_POSIXCHECK
 # undef freopen
 /* Assume freopen is always declared.  */
-_GL_WARN_ON_USE (freopen, "freopen on Win32 platforms is not POSIX compatible - "
+_GL_WARN_ON_USE (freopen,
+                 "freopen on Win32 platforms is not POSIX compatible - "
                  "use gnulib module freopen for portability");
 #endif
 
@@ -324,30 +330,39 @@ _GL_CXXALIASWARN (fseek);
 #  undef fseek
 # endif
 # if @REPLACE_FSEEKO@
-/* Provide fseek, fseeko functions that are aware of a preceding
-   fflush(), and which detect pipes.  */
+/* Provide an fseeko function that is aware of a preceding fflush(), and which
+   detects pipes.  */
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   undef fseeko
 #   define fseeko rpl_fseeko
 #  endif
 _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
                                _GL_ARG_NONNULL ((1)));
-#  if !@GNULIB_FSEEK@
-    /* In order to avoid that fseek gets defined as a macro here, the
-       developer can request the 'fseek' module.  */
-#   undef fseek
-#   define fseek rpl_fseek
+_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
+# else
+#  if ! @HAVE_FSEEKO@
+_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
+                               _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (fseeko);
+# if (@REPLACE_FSEEKO@ || !@HAVE_FSEEKO@) && !@GNULIB_FSEEK@
+   /* Provide an fseek function that is consistent with fseeko.  */
+   /* In order to avoid that fseek gets defined as a macro here, the
+      developer can request the 'fseek' module.  */
+#  undef fseek
+#  define fseek rpl_fseek
 static inline int _GL_ARG_NONNULL ((1))
 rpl_fseek (FILE *fp, long offset, int whence)
 {
+#  if @REPLACE_FSEEKO@
+  return rpl_fseeko (fp, offset, whence);
+#  else
   return fseeko (fp, offset, whence);
-}
 #  endif
-_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
-# else
-_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
+}
 # endif
-_GL_CXXALIASWARN (fseeko);
 #elif defined GNULIB_POSIXCHECK
 # define _GL_FSEEK_WARN /* Category 1, above.  */
 # undef fseek
@@ -399,22 +414,30 @@ _GL_CXXALIASWARN (ftell);
 #   define ftello rpl_ftello
 #  endif
 _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
-#  if !@GNULIB_FTELL@
-    /* In order to avoid that ftell gets defined as a macro here, the
-       developer can request the 'ftell' module.  */
-#   undef ftell
-#   define ftell rpl_ftell
+_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
+# else
+#  if ! @HAVE_FTELLO@
+_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+#  endif
+_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
+# endif
+_GL_CXXALIASWARN (ftello);
+# if (@REPLACE_FTELLO@ || !@HAVE_FTELLO@) && !@GNULIB_FTELL@
+   /* Provide an ftell function that is consistent with ftello.  */
+   /* In order to avoid that ftell gets defined as a macro here, the
+      developer can request the 'ftell' module.  */
+#  undef ftell
+#  define ftell rpl_ftell
 static inline long _GL_ARG_NONNULL ((1))
 rpl_ftell (FILE *f)
 {
+#  if @REPLACE_FTELLO@
+  return rpl_ftello (f);
+#  else
   return ftello (f);
-}
 #  endif
-_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
-# else
-_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
+}
 # endif
-_GL_CXXALIASWARN (ftello);
 #elif defined GNULIB_POSIXCHECK
 # define _GL_FTELL_WARN /* Category 1, above.  */
 # undef ftell
@@ -518,7 +541,9 @@ _GL_FUNCDECL_SYS (getline, ssize_t,
 _GL_CXXALIAS_SYS (getline, ssize_t,
                   (char **lineptr, size_t *linesize, FILE *stream));
 # endif
+# if @HAVE_DECL_GETLINE@
 _GL_CXXALIASWARN (getline);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef getline
 # if HAVE_RAW_DECL_GETLINE
@@ -623,16 +648,26 @@ _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
 #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
 # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
      || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@)
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#  if defined __GNUC__
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 /* Don't break __attribute__((format(printf,M,N))).  */
-#   define printf __printf__
-#  endif
-#  define GNULIB_overrides_printf 1
+#    define printf __printf__
+#   endif
 _GL_FUNCDECL_RPL_1 (__printf__, int,
                     (const char *format, ...)
+                    __asm__ (@ASM_SYMBOL_PREFIX@
+                             _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
                     __attribute__ ((__format__ (__printf__, 1, 2)))
                     _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
+#  else
+_GL_FUNCDECL_RPL (printf, int,
+                  (const char *format, ...)
+                  __attribute__ ((__format__ (__printf__, 1, 2)))
+                  _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
+#  endif
+#  define GNULIB_overrides_printf 1
 # else
 _GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
 # endif
@@ -821,6 +856,25 @@ _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
                  "POSIX compliance");
 #endif
 
+#if @GNULIB_TMPFILE@
+# if @REPLACE_TMPFILE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define tmpfile rpl_tmpfile
+#  endif
+_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
+_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
+# else
+_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
+# endif
+_GL_CXXALIASWARN (tmpfile);
+#elif defined GNULIB_POSIXCHECK
+# undef tmpfile
+# if HAVE_RAW_DECL_TMPFILE
+_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
+                 "use gnulib module tmpfile for portability");
+# endif
+#endif
+
 #if @GNULIB_VASPRINTF@
 /* Write formatted output to a string dynamically allocated with malloc().
    If the memory allocation succeeds, store the address of the string in
@@ -885,7 +939,10 @@ _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
                                  __attribute__ ((__format__ (__printf__, 2, 0)))
                                  _GL_ARG_NONNULL ((2)));
 #  endif
-_GL_CXXALIAS_SYS (vdprintf, int, (int fd, const char *format, va_list args));
+/* Need to cast, because on Solaris, the third parameter will likely be
+                                                    __va_list args.  */
+_GL_CXXALIAS_SYS_CAST (vdprintf, int,
+                       (int fd, const char *format, va_list args));
 # endif
 _GL_CXXALIASWARN (vdprintf);
 #elif defined GNULIB_POSIXCHECK
@@ -908,7 +965,11 @@ _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
                                  _GL_ARG_NONNULL ((1, 2)));
 _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
 # else
-_GL_CXXALIAS_SYS (vfprintf, int, (FILE *fp, const char *format, va_list args));
+/* Need to cast, because on Solaris, the third parameter is
+                                                      __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vfprintf, int,
+                       (FILE *fp, const char *format, va_list args));
 # endif
 _GL_CXXALIASWARN (vfprintf);
 #endif
@@ -934,7 +995,10 @@ _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
                                 _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
 # else
-_GL_CXXALIAS_SYS (vprintf, int, (const char *format, va_list args));
+/* Need to cast, because on Solaris, the second parameter is
+                                                          __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
 # endif
 _GL_CXXALIASWARN (vprintf);
 #endif
@@ -990,8 +1054,11 @@ _GL_FUNCDECL_RPL (vsprintf, int,
 _GL_CXXALIAS_RPL (vsprintf, int,
                   (char *str, const char *format, va_list args));
 # else
-_GL_CXXALIAS_SYS (vsprintf, int,
-                  (char *str, const char *format, va_list args));
+/* Need to cast, because on Solaris, the third parameter is
+                                                       __va_list args
+   and GCC's fixincludes did not change this to __gnuc_va_list.  */
+_GL_CXXALIAS_SYS_CAST (vsprintf, int,
+                       (char *str, const char *format, va_list args));
 # endif
 _GL_CXXALIASWARN (vsprintf);
 #elif defined GNULIB_POSIXCHECK
index 9b407752a728cc15b434386077d0e1b0540797aa..5b3c4d723388838238e44045b2842cbffa294b69 100644 (file)
@@ -20,6 +20,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined __need_malloc_and_calloc
 /* Special invocation convention inside glibc header files.  */
 /* NetBSD 5.0 mis-defines NULL.  */
 #include <stddef.h>
 
+/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>.  */
+#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
+# include <sys/wait.h>
+#endif
+
 /* Solaris declares getloadavg() in <sys/loadavg.h>.  */
 #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
 # include <sys/loadavg.h>
@@ -57,6 +63,9 @@
 #endif
 
 #if !@HAVE_STRUCT_RANDOM_DATA@
+/* Define 'struct random_data'.
+   But allow multiple gnulib generated <stdlib.h> replacements to coexist.  */
+# if !GNULIB_defined_struct_random_data
 struct random_data
 {
   int32_t *fptr;                /* Front pointer.  */
@@ -67,15 +76,23 @@ struct random_data
   int rand_sep;                 /* Distance between front and rear.  */
   int32_t *end_ptr;             /* Pointer behind state table.  */
 };
+#  define GNULIB_defined_struct_random_data 1
+# endif
 #endif
 
-#if (@GNULIB_MKSTEMP@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__
+#if (@GNULIB_MKSTEMP@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
 /* On MacOS X 10.3, only <unistd.h> declares mkstemp.  */
 /* On Cygwin 1.7.1, only <unistd.h> declares getsubopt.  */
-/* But avoid namespace pollution on glibc systems.  */
+/* But avoid namespace pollution on glibc systems and native Windows.  */
 # include <unistd.h>
 #endif
 
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+#  define __attribute__(Spec)   /* empty */
+# endif
+#endif
+
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
 /* The definition of _GL_ARG_NONNULL is copied here.  */
@@ -97,6 +114,23 @@ struct random_data
 #endif
 
 
+#if @GNULIB__EXIT@
+/* Terminate the current process with the given return code, without running
+   the 'atexit' handlers.  */
+# if !@HAVE__EXIT@
+_GL_FUNCDECL_SYS (_Exit, void, (int status) __attribute__ ((__noreturn__)));
+# endif
+_GL_CXXALIAS_SYS (_Exit, void, (int status));
+_GL_CXXALIASWARN (_Exit);
+#elif defined GNULIB_POSIXCHECK
+# undef _Exit
+# if HAVE_RAW_DECL__EXIT
+_GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
+                 "use gnulib module _Exit for portability");
+# endif
+#endif
+
+
 #if @GNULIB_ATOLL@
 /* Parse a signed decimal integer.
    Returns the value of the integer.  Errors are not detected.  */
@@ -114,7 +148,7 @@ _GL_WARN_ON_USE (atoll, "atoll is unportable - "
 #endif
 
 #if @GNULIB_CALLOC_POSIX@
-# if !@HAVE_CALLOC_POSIX@
+# if @REPLACE_CALLOC@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   undef calloc
 #   define calloc rpl_calloc
@@ -151,7 +185,8 @@ _GL_CXXALIASWARN (canonicalize_file_name);
 #elif defined GNULIB_POSIXCHECK
 # undef canonicalize_file_name
 # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
-_GL_WARN_ON_USE (canonicalize_file_name, "canonicalize_file_name is unportable - "
+_GL_WARN_ON_USE (canonicalize_file_name,
+                 "canonicalize_file_name is unportable - "
                  "use gnulib module canonicalize-lgpl for portability");
 # endif
 #endif
@@ -203,8 +238,24 @@ _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
 # endif
 #endif
 
+#if @GNULIB_GRANTPT@
+/* Change the ownership and access permission of the slave side of the
+   pseudo-terminal whose master side is specified by FD.  */
+# if !@HAVE_GRANTPT@
+_GL_FUNCDECL_SYS (grantpt, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (grantpt, int, (int fd));
+_GL_CXXALIASWARN (grantpt);
+#elif defined GNULIB_POSIXCHECK
+# undef grantpt
+# if HAVE_RAW_DECL_GRANTPT
+_GL_WARN_ON_USE (ptsname, "grantpt is not portable - "
+                 "use gnulib module grantpt for portability");
+# endif
+#endif
+
 #if @GNULIB_MALLOC_POSIX@
-# if !@HAVE_MALLOC_POSIX@
+# if @REPLACE_MALLOC@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   undef malloc
 #   define malloc rpl_malloc
@@ -315,6 +366,9 @@ _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
 _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
 # else
+#  if ! @HAVE_MKSTEMP@
+_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+#  endif
 _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
 # endif
 _GL_CXXALIASWARN (mkstemp);
@@ -351,6 +405,22 @@ _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
 # endif
 #endif
 
+#if @GNULIB_PTSNAME@
+/* Return the pathname of the pseudo-terminal slave associated with
+   the master FD is open on, or NULL on errors.  */
+# if !@HAVE_PTSNAME@
+_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
+# endif
+_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
+_GL_CXXALIASWARN (ptsname);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname
+# if HAVE_RAW_DECL_PTSNAME
+_GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
+                 "use gnulib module ptsname for portability");
+# endif
+#endif
+
 #if @GNULIB_PUTENV@
 # if @REPLACE_PUTENV@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -444,7 +514,7 @@ _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
 
 
 #if @GNULIB_REALLOC_POSIX@
-# if !@HAVE_REALLOC_POSIX@
+# if @REPLACE_REALLOC@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   undef realloc
 #   define realloc rpl_realloc
@@ -608,6 +678,22 @@ _GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
 # endif
 #endif
 
+#if @GNULIB_UNLOCKPT@
+/* Unlock the slave side of the pseudo-terminal whose master side is specified
+   by FD, so that it can be opened.  */
+# if !@HAVE_UNLOCKPT@
+_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (unlockpt, int, (int fd));
+_GL_CXXALIASWARN (unlockpt);
+#elif defined GNULIB_POSIXCHECK
+# undef unlockpt
+# if HAVE_RAW_DECL_UNLOCKPT
+_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
+                 "use gnulib module unlockpt for portability");
+# endif
+#endif
+
 #if @GNULIB_UNSETENV@
 /* Remove the variable NAME from the environment.  */
 # if @REPLACE_UNSETENV@
index 26ef483e4b3288fc09a9422eca81529ecaf6cd73..ad29c7112b0a094ecc6aeea2caa08699c42c01cf 100644 (file)
@@ -34,6 +34,9 @@
 
 # include "intprops.h"
 
+/* Use the system functions, not the gnulib overrides in this file.  */
+# undef sprintf
+
 # undef strerror
 # if ! HAVE_DECL_STRERROR
 #  define strerror(n) NULL
@@ -321,6 +324,12 @@ rpl_strerror (int n)
       break;
 # endif
 
+# if GNULIB_defined_EDQUOT
+    case EDQUOT:
+      msg = "Disk quota exceeded";
+      break;
+# endif
+
 # if GNULIB_defined_ECANCELED
     case ECANCELED:
       msg = "Operation canceled";
index 8b414ad84a3b93d6b552861a9be2ef2c7f8ae174..22de096e6d5244328ea7e6d6d07215676259862f 100644 (file)
@@ -23,6 +23,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_STRING_H@
 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
 #  define __attribute__(Spec) /* empty */
 # endif
+#endif
 /* The attribute __pure__ was added in gcc 2.96.  */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
-#  define __pure__ /* empty */
-# endif
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
 #endif
 
+/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>.  */
+/* But in any case avoid namespace pollution on glibc systems.  */
+#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
+    && ! defined __GLIBC__
+# include <unistd.h>
+#endif
 
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
 #   define memchr rpl_memchr
 #  endif
 _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n)
-                                  __attribute__ ((__pure__))
+                                  _GL_ATTRIBUTE_PURE
                                   _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
 # else
-#  if defined __SUNPRO_CC
-  /* This compiler defines an overloaded function
+#  if ! @HAVE_MEMCHR@
+_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
+                                  _GL_ATTRIBUTE_PURE
+                                  _GL_ARG_NONNULL ((1)));
+#  endif
+  /* On some systems, this function is defined as an overloaded function:
        extern "C" { const void * std::memchr (const void *, int, size_t); }
-       extern "C++" { inline void * std::memchr (void *, int, size_t); }
-     and diagnoses an error
-     "Error: Could not find a match for std::memchr(const void*, int, unsigned)"
-   */
+       extern "C++" { void * std::memchr (void *, int, size_t); }  */
 _GL_CXXALIAS_SYS_CAST2 (memchr,
                         void *, (void const *__s, int __c, size_t __n),
                         void const *, (void const *__s, int __c, size_t __n));
-#  else
-_GL_CXXALIAS_SYS (memchr, void *, (void const *__s, int __c, size_t __n));
-#  endif
 # endif
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
+_GL_CXXALIASWARN1 (memchr, void const *,
+                   (void const *__s, int __c, size_t __n));
+# else
 _GL_CXXALIASWARN (memchr);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef memchr
 /* Assume memchr is always declared.  */
@@ -99,7 +113,8 @@ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
 _GL_FUNCDECL_RPL (memmem, void *,
                   (void const *__haystack, size_t __haystack_len,
                    void const *__needle, size_t __needle_len)
-                  __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 3)));
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 3)));
 _GL_CXXALIAS_RPL (memmem, void *,
                   (void const *__haystack, size_t __haystack_len,
                    void const *__needle, size_t __needle_len));
@@ -108,7 +123,8 @@ _GL_CXXALIAS_RPL (memmem, void *,
 _GL_FUNCDECL_SYS (memmem, void *,
                   (void const *__haystack, size_t __haystack_len,
                    void const *__needle, size_t __needle_len)
-                  __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 3)));
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 3)));
 #  endif
 _GL_CXXALIAS_SYS (memmem, void *,
                   (void const *__haystack, size_t __haystack_len,
@@ -149,11 +165,22 @@ _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - "
 #if @GNULIB_MEMRCHR@
 # if ! @HAVE_DECL_MEMRCHR@
 _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
-                                   __attribute__ ((__pure__))
+                                   _GL_ATTRIBUTE_PURE
                                    _GL_ARG_NONNULL ((1)));
 # endif
-_GL_CXXALIAS_SYS (memrchr, void *, (void const *, int, size_t));
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const void * std::memrchr (const void *, int, size_t); }
+       extern "C++" { void * std::memrchr (void *, int, size_t); }  */
+_GL_CXXALIAS_SYS_CAST2 (memrchr,
+                        void *, (void const *, int, size_t),
+                        void const *, (void const *, int, size_t));
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t));
+_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t));
+# else
 _GL_CXXALIASWARN (memrchr);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef memrchr
 # if HAVE_RAW_DECL_MEMRCHR
@@ -168,11 +195,22 @@ _GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
 #if @GNULIB_RAWMEMCHR@
 # if ! @HAVE_RAWMEMCHR@
 _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
-                                     __attribute__ ((__pure__))
+                                     _GL_ATTRIBUTE_PURE
                                      _GL_ARG_NONNULL ((1)));
 # endif
-_GL_CXXALIAS_SYS (rawmemchr, void *, (void const *__s, int __c_in));
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const void * std::rawmemchr (const void *, int); }
+       extern "C++" { void * std::rawmemchr (void *, int); }  */
+_GL_CXXALIAS_SYS_CAST2 (rawmemchr,
+                        void *, (void const *__s, int __c_in),
+                        void const *, (void const *__s, int __c_in));
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in));
+_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in));
+# else
 _GL_CXXALIASWARN (rawmemchr);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef rawmemchr
 # if HAVE_RAW_DECL_RAWMEMCHR
@@ -202,8 +240,9 @@ _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
 /* Copy no more than N bytes of SRC to DST, returning a pointer past the
    last non-NUL byte written into DST.  */
 #if @GNULIB_STPNCPY@
-# if ! @HAVE_STPNCPY@
+# if @REPLACE_STPNCPY@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef stpncpy
 #   define stpncpy rpl_stpncpy
 #  endif
 _GL_FUNCDECL_RPL (stpncpy, char *,
@@ -214,6 +253,12 @@ _GL_CXXALIAS_RPL (stpncpy, char *,
                   (char *restrict __dst, char const *restrict __src,
                    size_t __n));
 # else
+#  if ! @HAVE_STPNCPY@
+_GL_FUNCDECL_SYS (stpncpy, char *,
+                  (char *restrict __dst, char const *restrict __src,
+                   size_t __n)
+                  _GL_ARG_NONNULL ((1, 2)));
+#  endif
 _GL_CXXALIAS_SYS (stpncpy, char *,
                   (char *restrict __dst, char const *restrict __src,
                    size_t __n));
@@ -241,11 +286,22 @@ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
 #if @GNULIB_STRCHRNUL@
 # if ! @HAVE_STRCHRNUL@
 _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in)
-                                     __attribute__ ((__pure__))
+                                     _GL_ATTRIBUTE_PURE
                                      _GL_ARG_NONNULL ((1)));
 # endif
-_GL_CXXALIAS_SYS (strchrnul, char *, (char const *__s, int __c_in));
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * std::strchrnul (const char *, int); }
+       extern "C++" { char * std::strchrnul (char *, int); }  */
+_GL_CXXALIAS_SYS_CAST2 (strchrnul,
+                        char *, (char const *__s, int __c_in),
+                        char const *, (char const *__s, int __c_in));
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in));
+_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in));
+# else
 _GL_CXXALIASWARN (strchrnul);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef strchrnul
 # if HAVE_RAW_DECL_STRCHRNUL
@@ -264,6 +320,10 @@ _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - "
 _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (strdup, char *, (char const *__s));
 # else
+#  if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup
+    /* strdup exists as a function and as a macro.  Get rid of the macro.  */
+#   undef strdup
+#  endif
 #  if !(@HAVE_DECL_STRDUP@ || defined strdup)
 _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
 #  endif
@@ -278,6 +338,28 @@ _GL_WARN_ON_USE (strdup, "strdup is unportable - "
 # endif
 #endif
 
+/* Append no more than N characters from SRC onto DEST.  */
+#if @GNULIB_STRNCAT@
+# if @REPLACE_STRNCAT@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strncat
+#   define strncat rpl_strncat
+#  endif
+_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
+                                   _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
+# else
+_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
+# endif
+_GL_CXXALIASWARN (strncat);
+#elif defined GNULIB_POSIXCHECK
+# undef strncat
+# if HAVE_RAW_DECL_STRNCAT
+_GL_WARN_ON_USE (strncat, "strncat is unportable - "
+                 "use gnulib module strncat for portability");
+# endif
+#endif
+
 /* Return a newly allocated copy of at most N bytes of STRING.  */
 #if @GNULIB_STRNDUP@
 # if @REPLACE_STRNDUP@
@@ -308,12 +390,23 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - "
    MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
    return MAXLEN.  */
 #if @GNULIB_STRNLEN@
-# if ! @HAVE_DECL_STRNLEN@
+# if @REPLACE_STRNLEN@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef strnlen
+#   define strnlen rpl_strnlen
+#  endif
+_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)
+                                   _GL_ATTRIBUTE_PURE
+                                   _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen));
+# else
+#  if ! @HAVE_DECL_STRNLEN@
 _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)
-                                   __attribute__ ((__pure__))
+                                   _GL_ATTRIBUTE_PURE
                                    _GL_ARG_NONNULL ((1)));
-# endif
+#  endif
 _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen));
+# endif
 _GL_CXXALIASWARN (strnlen);
 #elif defined GNULIB_POSIXCHECK
 # undef strnlen
@@ -339,23 +432,23 @@ _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings "
 #if @GNULIB_STRPBRK@
 # if ! @HAVE_STRPBRK@
 _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
-                                   __attribute__ ((__pure__))
+                                   _GL_ATTRIBUTE_PURE
                                    _GL_ARG_NONNULL ((1, 2)));
 # endif
-# if defined __SUNPRO_CC
-  /* This compiler defines an overloaded function
+  /* On some systems, this function is defined as an overloaded function:
        extern "C" { const char * strpbrk (const char *, const char *); }
-       extern "C++" { inline char * strpbrk (char *, const char *); }
-     and diagnoses an error
-     "Error: Could not find a match for std::strpbrk(const char*, const char*)"
-   */
+       extern "C++" { char * strpbrk (char *, const char *); }  */
 _GL_CXXALIAS_SYS_CAST2 (strpbrk,
                         char *, (char const *__s, char const *__accept),
                         const char *, (char const *__s, char const *__accept));
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
+_GL_CXXALIASWARN1 (strpbrk, char const *,
+                   (char const *__s, char const *__accept));
 # else
-_GL_CXXALIAS_SYS (strpbrk, char *, (char const *__s, char const *__accept));
-# endif
 _GL_CXXALIASWARN (strpbrk);
+# endif
 # if defined GNULIB_POSIXCHECK
 /* strpbrk() assumes the second argument is a list of single-byte characters.
    Even in this simple case, it does not work with multibyte strings if the
@@ -439,13 +532,25 @@ _GL_WARN_ON_USE (strsep, "strsep is unportable - "
 #   define strstr rpl_strstr
 #  endif
 _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle)
-                                  __attribute__ ((__pure__))
+                                  _GL_ATTRIBUTE_PURE
                                   _GL_ARG_NONNULL ((1, 2)));
 _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle));
 # else
-_GL_CXXALIAS_SYS (strstr, char *, (const char *haystack, const char *needle));
-# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * strstr (const char *, const char *); }
+       extern "C++" { char * strstr (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strstr,
+                        char *, (const char *haystack, const char *needle),
+                        const char *, (const char *haystack, const char *needle));
+# endif
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strstr, const char *,
+                   (const char *haystack, const char *needle));
+# else
 _GL_CXXALIASWARN (strstr);
+# endif
 #elif defined GNULIB_POSIXCHECK
 /* strstr() does not work with multibyte strings if the locale encoding is
    different from UTF-8:
@@ -469,19 +574,32 @@ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot "
 #  endif
 _GL_FUNCDECL_RPL (strcasestr, char *,
                   (const char *haystack, const char *needle)
-                  __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 2)));
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 2)));
 _GL_CXXALIAS_RPL (strcasestr, char *,
                   (const char *haystack, const char *needle));
 # else
 #  if ! @HAVE_STRCASESTR@
 _GL_FUNCDECL_SYS (strcasestr, char *,
                   (const char *haystack, const char *needle)
-                  __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 2)));
+                  _GL_ATTRIBUTE_PURE
+                  _GL_ARG_NONNULL ((1, 2)));
 #  endif
-_GL_CXXALIAS_SYS (strcasestr, char *,
-                  (const char *haystack, const char *needle));
-# endif
+  /* On some systems, this function is defined as an overloaded function:
+       extern "C++" { const char * strcasestr (const char *, const char *); }
+       extern "C++" { char * strcasestr (char *, const char *); }  */
+_GL_CXXALIAS_SYS_CAST2 (strcasestr,
+                        char *, (const char *haystack, const char *needle),
+                        const char *, (const char *haystack, const char *needle));
+# endif
+# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strcasestr, const char *,
+                   (const char *haystack, const char *needle));
+# else
 _GL_CXXALIASWARN (strcasestr);
+# endif
 #elif defined GNULIB_POSIXCHECK
 /* strcasestr() does not work with multibyte strings:
    It is a glibc extension, and glibc implements it only for unibyte
@@ -666,11 +784,10 @@ _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
 #if @GNULIB_MBSPCASECMP@
 /* Compare the initial segment of the character string STRING consisting of
    at most mbslen (PREFIX) characters with the character string PREFIX,
-   ignoring case, returning less than, equal to or greater than zero if this
-   initial segment is lexicographically less than, equal to or greater than
-   PREFIX.
-   Note: This function may, in multibyte locales, return 0 if STRING is of
-   smaller length than PREFIX!
+   ignoring case.  If the two match, return a pointer to the first byte
+   after this prefix in STRING.  Otherwise, return NULL.
+   Note: This function may, in multibyte locales, return non-NULL if STRING
+   is of smaller length than PREFIX!
    Unlike strncasecmp(), this function works correctly in multibyte
    locales.  */
 _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
index e1d772556d6245c22f8178f7d75f91f9fce5fab4..351107296ef4c27a655e673c702b5604a35c3db2 100644 (file)
@@ -23,6 +23,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* The include_next requires a split double-inclusion guard.  */
 #@INCLUDE_NEXT@ @NEXT_STRINGS_H@
index 7e3519d605c90e83a35bcc8bdf951b6fb7836cac..aee2ece31ccf85bdc1199de8be3f843f42144f4d 100644 (file)
    operating on `long long int's.  */
 #ifdef QUAD
 # define LONG long long
-# define STRTOL_LONG_MIN LONG_LONG_MIN
-# define STRTOL_LONG_MAX LONG_LONG_MAX
-# define STRTOL_ULONG_MAX ULONG_LONG_MAX
+# define STRTOL_LONG_MIN LLONG_MIN
+# define STRTOL_LONG_MAX LLONG_MAX
+# define STRTOL_ULONG_MAX ULLONG_MAX
 
 /* The extra casts in the following macros work around compiler bugs,
    e.g., in Cray C 5.0.3.0.  */
          ? (t) -1 \
          : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
 
-# ifndef ULONG_LONG_MAX
-#  define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long)
+# ifndef ULLONG_MAX
+#  define ULLONG_MAX TYPE_MAXIMUM (unsigned long long)
 # endif
-# ifndef LONG_LONG_MAX
-#  define LONG_LONG_MAX TYPE_MAXIMUM (long long int)
+# ifndef LLONG_MAX
+#  define LLONG_MAX TYPE_MAXIMUM (long long int)
 # endif
-# ifndef LONG_LONG_MIN
-#  define LONG_LONG_MIN TYPE_MINIMUM (long long int)
+# ifndef LLONG_MIN
+#  define LLONG_MIN TYPE_MINIMUM (long long int)
 # endif
 
 # if __GNUC__ == 2 && __GNUC_MINOR__ < 7
    /* Work around gcc bug with using this constant.  */
-   static const unsigned long long int maxquad = ULONG_LONG_MAX;
+   static const unsigned long long int maxquad = ULLONG_MAX;
 #  undef STRTOL_ULONG_MAX
 #  define STRTOL_ULONG_MAX maxquad
 # endif
diff --git a/gnu/symlink.c b/gnu/symlink.c
new file mode 100644 (file)
index 0000000..ecf646f
--- /dev/null
@@ -0,0 +1,59 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Stub for symlink().
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <unistd.h>
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+
+#if HAVE_SYMLINK
+
+# undef symlink
+
+/* Create a symlink, but reject trailing slash.  */
+int
+rpl_symlink (char const *contents, char const *name)
+{
+  size_t len = strlen (name);
+  if (len && name[len - 1] == '/')
+    {
+      struct stat st;
+      if (lstat (name, &st) == 0)
+        errno = EEXIST;
+      return -1;
+    }
+  return symlink (contents, name);
+}
+
+#else /* !HAVE_SYMLINK */
+
+/* The system does not support symlinks.  */
+int
+symlink (char const *contents _GL_UNUSED,
+         char const *name _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#endif /* !HAVE_SYMLINK */
diff --git a/gnu/symlinkat.c b/gnu/symlinkat.c
new file mode 100644 (file)
index 0000000..fd57e53
--- /dev/null
@@ -0,0 +1,78 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Create a symlink relative to an open directory.
+   Copyright (C) 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#if !HAVE_SYMLINK
+/* Mingw lacks symlink, and it is more efficient to provide a trivial
+   wrapper than to go through at-func.c to call rpl_symlink.  */
+
+# include <errno.h>
+
+int
+symlinkat (char const *path1 _GL_UNUSED, int fd _GL_UNUSED,
+           char const *path2 _GL_UNUSED)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+#else /* HAVE_SYMLINK */
+
+/* Our openat helper functions expect the directory parameter first,
+   not second.  These shims make life easier.  */
+
+/* Like symlink, but with arguments reversed.  */
+static int
+symlink_reversed (char const *file, char const *contents)
+{
+  return symlink (contents, file);
+}
+
+/* Like symlinkat, but with arguments reversed.  */
+
+static int
+symlinkat_reversed (int fd, char const *file, char const *contents);
+
+# define AT_FUNC_NAME symlinkat_reversed
+# define AT_FUNC_F1 symlink_reversed
+# define AT_FUNC_POST_FILE_PARAM_DECLS , char const *contents
+# define AT_FUNC_POST_FILE_ARGS        , contents
+# include "at-func.c"
+# undef AT_FUNC_NAME
+# undef AT_FUNC_F1
+# undef AT_FUNC_POST_FILE_PARAM_DECLS
+# undef AT_FUNC_POST_FILE_ARGS
+
+/* Create a symlink FILE, in the directory open on descriptor FD,
+   holding CONTENTS.  If possible, do it without changing the
+   working directory.  Otherwise, resort to using save_cwd/fchdir,
+   then symlink/restore_cwd.  If either the save_cwd or the restore_cwd
+   fails, then give a diagnostic and exit nonzero.  */
+
+int
+symlinkat (char const *contents, int fd, char const *file)
+{
+  return symlinkat_reversed (fd, file, contents);
+}
+
+#endif /* HAVE_SYMLINK */
index 75e38ed6a6e9f8d441751f980c19da4c6a75d876..f2ac370d45b433cec001102cb7412c22d682d3ae 100644 (file)
@@ -26,6 +26,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined __need_system_sys_stat_h
 /* Special invocation convention.  */
@@ -58,7 +59,8 @@
 /* Before doing "#define mkdir rpl_mkdir" below, we need to include all
    headers that may declare mkdir().  */
 #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-# include <io.h>
+# include <io.h>     /* mingw32, mingw64 */
+# include <direct.h> /* mingw64 */
 #endif
 
 #ifndef S_IFMT
@@ -392,7 +394,10 @@ _GL_WARN_ON_USE (futimens, "futimens is not portable - "
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define lchmod chmod
 #  endif
-_GL_CXXALIAS_RPL_1 (lchmod, chmod, int, (const char *filename, mode_t mode));
+/* Need to cast, because on mingw, the second parameter of chmod is
+                                                int mode.  */
+_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int,
+                         (const char *filename, mode_t mode));
 # else
 #  if 0 /* assume already declared */
 _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode)
@@ -400,7 +405,9 @@ _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode)
 #  endif
 _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode));
 # endif
+# if @HAVE_LCHMOD@
 _GL_CXXALIASWARN (lchmod);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef lchmod
 # if HAVE_RAW_DECL_LCHMOD
@@ -429,7 +436,9 @@ _GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf));
 # else
 _GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf));
 # endif
+# if @HAVE_LSTAT@
 _GL_CXXALIASWARN (lstat);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef lstat
 # if HAVE_RAW_DECL_LSTAT
@@ -450,7 +459,8 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
 #else
 /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
    Additionally, it declares _mkdir (and depending on compile flags, an
-   alias mkdir), only in the nonstandard <io.h>, which is included above.  */
+   alias mkdir), only in the nonstandard includes <direct.h> and <io.h>,
+   which are included above.  */
 # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
 
 static inline int
@@ -587,7 +597,8 @@ _GL_WARN_ON_USE (mknodat, "mknodat is not portable - "
 #  else /* !_LARGE_FILES */
 #   define stat(name, st) rpl_stat (name, st)
 #  endif /* !_LARGE_FILES */
-_GL_EXTERN_C int stat (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2));
+_GL_EXTERN_C int stat (const char *name, struct stat *buf)
+                      _GL_ARG_NONNULL ((1, 2));
 # endif
 #elif defined GNULIB_POSIXCHECK
 # undef stat
index ea9bb26e65e28145214e9ed5737bc2d1654d8c6c..49ea64f86401b7db199e68a4bcd1cbb370ecebb6 100644 (file)
@@ -23,6 +23,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined _GL_SYS_TIME_H
 
@@ -90,7 +91,7 @@ _GL_CXXALIASWARN (gettimeofday);
 #  undef gettimeofday
 #  if HAVE_RAW_DECL_GETTIMEOFDAY
 _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - "
-                "use gnulib module gettimeofday for portability");
+                 "use gnulib module gettimeofday for portability");
 #  endif
 # endif
 
index da13faa2f1e6034cd8ce7b3c349969d579ae2dc9..c8b1e75a6b40ab7acade06416de19850572a8015 100644 (file)
 
 #ifndef _GL_SYSEXITS_H
 
-#if @HAVE_SYSEXITS_H@
-
-# if __GNUC__ >= 3
+#if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
-# endif
+#endif
+@PRAGMA_COLUMNS@
+
+#if @HAVE_SYSEXITS_H@
 
 /* IRIX 6.5 has an <unistd.h> that defines a macro EX_OK with a nonzero
    value.  Override it.  See
index 816f732209eabd8224714bf8695441db995d58df..75f572a6a713e4d7af174630e33bfea752561284 100644 (file)
@@ -21,6 +21,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 /* Don't get in the way of glibc when it includes time.h merely to
    declare a few standard symbols, rather than to declare all the
@@ -40,7 +41,7 @@
 # @INCLUDE_NEXT@ @NEXT_TIME_H@
 
 /* NetBSD 5.0 mis-defines NULL.  */
-#include <stddef.h>
+# include <stddef.h>
 
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
 
 /* The definition of _GL_WARN_ON_USE is copied here.  */
 
-# ifdef __cplusplus
-extern "C" {
-# endif
-
 /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3).
    Or they define it with the wrong member names or define it in <sys/time.h>
-   (e.g., FreeBSD circa 1997).  */
+   (e.g., FreeBSD circa 1997).  Stock Mingw does not define it, but the
+   pthreads-win32 library defines it in <pthread.h>.  */
 # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
 #  if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
 #   include <sys/time.h>
+#  elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+#   include <pthread.h>
+/* The pthreads-win32 <pthread.h> also defines a couple of broken macros.  */
+#   undef asctime_r
+#   undef ctime_r
+#   undef gmtime_r
+#   undef localtime_r
+#   undef rand_r
+#   undef strtok_r
 #  else
+
+#   ifdef __cplusplus
+extern "C" {
+#   endif
+
 #   undef timespec
 #   define timespec rpl_timespec
 struct timespec
@@ -66,13 +78,23 @@ struct timespec
   time_t tv_sec;
   long int tv_nsec;
 };
-#  endif
-# endif
 
-# ifdef __cplusplus
+#   ifdef __cplusplus
 }
+#   endif
+
+#  endif
 # endif
 
+/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires
+   time_t to be an integer type, even though C99 permits floating
+   point.  We don't know of any implementation that uses floating
+   point, and it is much easier to write code that doesn't have to
+   worry about that corner case, so we force the issue.  */
+struct __time_t_must_be_integral {
+  unsigned int __floating_time_t_unsupported : (time_t) 1;
+};
+
 /* Sleep for at least RQTP seconds unless interrupted,  If interrupted,
    return -1 and store the remaining time into RMTP.  See
    <http://www.opengroup.org/susv3xsh/nanosleep.html>.  */
@@ -87,6 +109,11 @@ _GL_FUNCDECL_RPL (nanosleep, int,
 _GL_CXXALIAS_RPL (nanosleep, int,
                   (struct timespec const *__rqtp, struct timespec *__rmtp));
 #  else
+#   if ! @HAVE_NANOSLEEP@
+_GL_FUNCDECL_SYS (nanosleep, int,
+                  (struct timespec const *__rqtp, struct timespec *__rmtp)
+                  _GL_ARG_NONNULL ((1)));
+#   endif
 _GL_CXXALIAS_SYS (nanosleep, int,
                   (struct timespec const *__rqtp, struct timespec *__rmtp));
 #  endif
@@ -110,58 +137,62 @@ _GL_CXXALIASWARN (mktime);
 /* Convert TIMER to RESULT, assuming local time and UTC respectively.  See
    <http://www.opengroup.org/susv3xsh/localtime_r.html> and
    <http://www.opengroup.org/susv3xsh/gmtime_r.html>.  */
-# if @REPLACE_LOCALTIME_R@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef localtime_r
-#   define localtime_r rpl_localtime_r
-#  endif
+# if @GNULIB_TIME_R@
+#  if @REPLACE_LOCALTIME_R@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef localtime_r
+#    define localtime_r rpl_localtime_r
+#   endif
 _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer,
                                              struct tm *restrict __result)
                                             _GL_ARG_NONNULL ((1, 2)));
 _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer,
                                              struct tm *restrict __result));
-# else
+#  else
+#   if ! @HAVE_LOCALTIME_R@
+_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer,
+                                             struct tm *restrict __result)
+                                            _GL_ARG_NONNULL ((1, 2)));
+#   endif
 _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer,
                                              struct tm *restrict __result));
-# endif
-_GL_CXXALIASWARN (localtime_r);
-# if @REPLACE_LOCALTIME_R@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   undef gmtime_r
-#   define gmtime_r rpl_gmtime_r
 #  endif
+_GL_CXXALIASWARN (localtime_r);
+#  if @REPLACE_LOCALTIME_R@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef gmtime_r
+#    define gmtime_r rpl_gmtime_r
+#   endif
 _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer,
                                           struct tm *restrict __result)
                                          _GL_ARG_NONNULL ((1, 2)));
 _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer,
                                           struct tm *restrict __result));
-# else
+#  else
+#   if ! @HAVE_LOCALTIME_R@
+_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
+                                          struct tm *restrict __result)
+                                         _GL_ARG_NONNULL ((1, 2)));
+#   endif
 _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
                                           struct tm *restrict __result));
-# endif
+#  endif
 _GL_CXXALIASWARN (gmtime_r);
+# endif
 
 /* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store
    the resulting broken-down time into TM.  See
    <http://www.opengroup.org/susv3xsh/strptime.html>.  */
 # if @GNULIB_STRPTIME@
-#  if @REPLACE_STRPTIME@
-#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#    undef strptime
-#    define strptime rpl_strptime
-#   endif
-_GL_FUNCDECL_RPL (strptime, char *, (char const *restrict __buf,
+#  if ! @HAVE_STRPTIME@
+_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf,
                                      char const *restrict __format,
                                      struct tm *restrict __tm)
                                     _GL_ARG_NONNULL ((1, 2, 3)));
-_GL_CXXALIAS_RPL (strptime, char *, (char const *restrict __buf,
-                                     char const *restrict __format,
-                                     struct tm *restrict __tm));
-#  else
+#  endif
 _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf,
                                      char const *restrict __format,
                                      struct tm *restrict __tm));
-#  endif
 _GL_CXXALIASWARN (strptime);
 # endif
 
@@ -175,6 +206,9 @@ _GL_CXXALIASWARN (strptime);
 _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
 _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm));
 #  else
+#   if ! @HAVE_TIMEGM@
+_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
+#   endif
 _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm));
 #  endif
 _GL_CXXALIASWARN (timegm);
@@ -183,15 +217,25 @@ _GL_CXXALIASWARN (timegm);
 /* Encourage applications to avoid unsafe functions that can overrun
    buffers when given outlandish struct tm values.  Portable
    applications should use strftime (or even sprintf) instead.  */
-# if GNULIB_PORTCHECK
+# if defined GNULIB_POSIXCHECK
 #  undef asctime
-#  define asctime eschew_asctime
+_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
 #  undef asctime_r
-#  define asctime_r eschew_asctime_r
+_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
 #  undef ctime
-#  define ctime eschew_ctime
+_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
 #  undef ctime_r
-#  define ctime_r eschew_ctime_r
+_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - "
+                 "better use strftime (or even sprintf) instead");
 # endif
 
 #endif
index 0c3477a1c1573eb1f883da7a1041e51f42f0302a..ff0a5277c2346e26f49cc6b6c32625d004bd9d0a 100644 (file)
@@ -2,7 +2,7 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Reentrant time functions like localtime_r.
 
-   Copyright (C) 2003, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2006-2007, 2010 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -24,8 +24,6 @@
 
 #include <time.h>
 
-#include <string.h>
-
 static struct tm *
 copy_tm_result (struct tm *dest, struct tm const *src)
 {
index ce94b7105c371a3d7ca1f9d29fb2f8ec8b11d8d9..4605a09b1507f9ca3d5523e385756d7567d720ea 100644 (file)
 # include <time.h>
 
 /* Return negative, zero, positive if A < B, A == B, A > B, respectively.
-   Assume the nanosecond components are in range, or close to it.  */
+
+   For each time stamp T, this code assumes that either:
+
+     * T.tv_nsec is in the range 0..999999999; or
+     * T.tv_sec corresponds to a valid leap second on a host that supports
+       leap seconds, and T.tv_nsec is in the range 1000000000..1999999999; or
+     * T.tv_sec is the minimum time_t value and T.tv_nsec is -1; or
+       T.tv_sec is the maximum time_t value and T.tv_nsec is 2000000000.
+       This allows for special struct timespec values that are less or
+       greater than all possible valid time stamps.
+
+   In all these cases, it is safe to subtract two tv_nsec values and
+   convert the result to integer without worrying about overflow on
+   any platform of interest to the GNU project, since all such
+   platforms have 32-bit int or wider.
+
+   Replacing "(int) (a.tv_nsec - b.tv_nsec)" with something like
+   "a.tv_nsec < b.tv_nsec ? -1 : a.tv_nsec > b.tv_nsec" would cause
+   this function to work in some cases where the above assumption is
+   violated, but not in all cases (e.g., a.tv_sec==1, a.tv_nsec==-2,
+   b.tv_sec==0, b.tv_nsec==999999999) and is arguably not worth the
+   extra instructions.  Using a subtraction has the advantage of
+   detecting some invalid cases on platforms that detect integer
+   overflow.
+
+   The (int) cast avoids a gcc -Wconversion warning.  */
+
 static inline int
 timespec_cmp (struct timespec a, struct timespec b)
 {
   return (a.tv_sec < b.tv_sec ? -1
           : a.tv_sec > b.tv_sec ? 1
-          : a.tv_nsec < b.tv_nsec ? -1
-          : a.tv_nsec > b.tv_nsec ? 1
-          : 0);
+          : (int) (a.tv_nsec - b.tv_nsec));
 }
 
 void gettime (struct timespec *);
index 7ccafebbb500d66052d1455313f10601bd8ea33b..052e6b912b1aa78e1f90f08e879ec83504f11fa4 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-#define inttostr uinttostr
+#define anytostr uinttostr
 #define inttype unsigned int
 #define inttype_is_signed 0
-#include "inttostr.c"
+#include "anytostr.c"
index 94a9cc59967b78325173312a7ac543b8e2af445f..ffcc71ac25c7aa6b74f44c817901f8428993f152 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-#define inttostr umaxtostr
+#define anytostr umaxtostr
 #define inttype uintmax_t
 #define inttype_is_signed 0
-#include "inttostr.c"
+#include "anytostr.c"
index 316c51e8f522e0e41599a07933131380b5198508..493d67728c1b1e414a49e9a9c384b69770a5dce2 100644 (file)
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#ifndef _GL_UNISTD_H
-
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
+
+/* Special invocation convention:
+   - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
+     but we need to ensure that both the system <unistd.h> and <winsock2.h>
+     are completely included before we replace gethostname.  */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+  && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
+/* <unistd.h> is being indirectly included for the first time from
+   <winsock2.h>; avoid declaring any overrides.  */
+# if @HAVE_UNISTD_H@
+#  @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+# else
+#  error unexpected; report this to bug-gnulib@gnu.org
+# endif
+# define _GL_WINSOCK2_H_WITNESS
+
+/* Normal invocation.  */
+#elif !defined _GL_UNISTD_H
 
 /* The include_next requires a split double-inclusion guard.  */
 #if @HAVE_UNISTD_H@
 # @INCLUDE_NEXT@ @NEXT_UNISTD_H@
 #endif
 
-#ifndef _GL_UNISTD_H
+/* Get all possible declarations of gethostname().  */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+  && !defined _GL_INCLUDING_WINSOCK2_H
+# define _GL_INCLUDING_WINSOCK2_H
+# include <winsock2.h>
+# undef _GL_INCLUDING_WINSOCK2_H
+#endif
+
+#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
 #define _GL_UNISTD_H
 
 /* NetBSD 5.0 mis-defines NULL.  Also get size_t.  */
@@ -64,7 +89,7 @@
 #endif
 
 #if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
-     || @GNULIB_PREAD@ || defined GNULIB_POSIXCHECK)
+     || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
 /* Get ssize_t.  */
 # include <sys/types.h>
 #endif
 # include <getopt.h>
 #endif
 
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
+
+/* The definition of _GL_ARG_NONNULL is copied here.  */
+
+/* The definition of _GL_WARN_ON_USE is copied here.  */
+
+
 #if @GNULIB_GETHOSTNAME@
 /* Get all possible declarations of gethostname().  */
 # if @UNISTD_H_HAVE_WINSOCK2_H@
-#  include <winsock2.h>
 #  if !defined _GL_SYS_SOCKET_H
-#   undef socket
-#   define socket               socket_used_without_including_sys_socket_h
-#   undef connect
-#   define connect              connect_used_without_including_sys_socket_h
-#   undef accept
-#   define accept               accept_used_without_including_sys_socket_h
-#   undef bind
-#   define bind                 bind_used_without_including_sys_socket_h
-#   undef getpeername
-#   define getpeername          getpeername_used_without_including_sys_socket_h
-#   undef getsockname
-#   define getsockname          getsockname_used_without_including_sys_socket_h
-#   undef getsockopt
-#   define getsockopt           getsockopt_used_without_including_sys_socket_h
-#   undef listen
-#   define listen               listen_used_without_including_sys_socket_h
-#   undef recv
-#   define recv                 recv_used_without_including_sys_socket_h
-#   undef send
-#   define send                 send_used_without_including_sys_socket_h
-#   undef recvfrom
-#   define recvfrom             recvfrom_used_without_including_sys_socket_h
-#   undef sendto
-#   define sendto               sendto_used_without_including_sys_socket_h
-#   undef setsockopt
-#   define setsockopt           setsockopt_used_without_including_sys_socket_h
-#   undef shutdown
-#   define shutdown             shutdown_used_without_including_sys_socket_h
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef socket
+#    define socket              socket_used_without_including_sys_socket_h
+#    undef connect
+#    define connect             connect_used_without_including_sys_socket_h
+#    undef accept
+#    define accept              accept_used_without_including_sys_socket_h
+#    undef bind
+#    define bind                bind_used_without_including_sys_socket_h
+#    undef getpeername
+#    define getpeername         getpeername_used_without_including_sys_socket_h
+#    undef getsockname
+#    define getsockname         getsockname_used_without_including_sys_socket_h
+#    undef getsockopt
+#    define getsockopt          getsockopt_used_without_including_sys_socket_h
+#    undef listen
+#    define listen              listen_used_without_including_sys_socket_h
+#    undef recv
+#    define recv                recv_used_without_including_sys_socket_h
+#    undef send
+#    define send                send_used_without_including_sys_socket_h
+#    undef recvfrom
+#    define recvfrom            recvfrom_used_without_including_sys_socket_h
+#    undef sendto
+#    define sendto              sendto_used_without_including_sys_socket_h
+#    undef setsockopt
+#    define setsockopt          setsockopt_used_without_including_sys_socket_h
+#    undef shutdown
+#    define shutdown            shutdown_used_without_including_sys_socket_h
+#   else
+     _GL_WARN_ON_USE (socket,
+                      "socket() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (connect,
+                      "connect() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (accept,
+                      "accept() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (bind,
+                      "bind() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (getpeername,
+                      "getpeername() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (getsockname,
+                      "getsockname() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (getsockopt,
+                      "getsockopt() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (listen,
+                      "listen() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (recv,
+                      "recv() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (send,
+                      "send() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (recvfrom,
+                      "recvfrom() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (sendto,
+                      "sendto() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (setsockopt,
+                      "setsockopt() used without including <sys/socket.h>");
+     _GL_WARN_ON_USE (shutdown,
+                      "shutdown() used without including <sys/socket.h>");
+#   endif
 #  endif
 #  if !defined _GL_SYS_SELECT_H
-#   undef select
-#   define select               select_used_without_including_sys_select_h
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef select
+#    define select              select_used_without_including_sys_select_h
+#   else
+     _GL_WARN_ON_USE (select,
+                      "select() used without including <sys/select.h>");
+#   endif
 #  endif
 # endif
 #endif
 
-/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
 
 /* OS/2 EMX lacks these macros.  */
 #ifndef STDIN_FILENO
@@ -357,9 +418,8 @@ _GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
    Return 0 if successful, otherwise -1 and errno set.
    See the POSIX:2001 specification
    <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
-# if @REPLACE_FCHDIR@
-_GL_FUNCDECL_RPL (fchdir, int, (int /*fd*/));
-_GL_CXXALIAS_RPL (fchdir, int, (int /*fd*/));
+# if ! @HAVE_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
 
 /* Gnulib internal hooks needed to maintain the fchdir metadata.  */
 _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
@@ -368,9 +428,8 @@ _GL_EXTERN_C void _gl_unregister_fd (int fd);
 _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
 _GL_EXTERN_C const char *_gl_directory_name (int fd);
 
-# else
-_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
 # endif
+_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
 _GL_CXXALIASWARN (fchdir);
 #elif defined GNULIB_POSIXCHECK
 # undef fchdir
@@ -467,7 +526,9 @@ _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
 _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
 _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
 # else
-_GL_CXXALIAS_SYS (getcwd, char *, (char *buf, size_t size));
+/* Need to cast, because on mingw, the second parameter is
+                                                   int size.  */
+_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
 # endif
 _GL_CXXALIASWARN (getcwd);
 #elif defined GNULIB_POSIXCHECK
@@ -715,7 +776,9 @@ getpagesize ()
 /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t.  */
 _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
 # endif
+# if @HAVE_DECL_GETPAGESIZE@
 _GL_CXXALIASWARN (getpagesize);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef getpagesize
 # if HAVE_RAW_DECL_GETPAGESIZE
@@ -728,7 +791,7 @@ _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
 #if @GNULIB_GETUSERSHELL@
 /* Return the next valid login shell on the system, or NULL when the end of
    the list has been reached.  */
-# if !@HAVE_GETUSERSHELL@
+# if !@HAVE_DECL_GETUSERSHELL@
 _GL_FUNCDECL_SYS (getusershell, char *, (void));
 # endif
 _GL_CXXALIAS_SYS (getusershell, char *, (void));
@@ -743,7 +806,7 @@ _GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
 
 #if @GNULIB_GETUSERSHELL@
 /* Rewind to pointer that is advanced at each getusershell() call.  */
-# if !@HAVE_GETUSERSHELL@
+# if !@HAVE_DECL_GETUSERSHELL@
 _GL_FUNCDECL_SYS (setusershell, void, (void));
 # endif
 _GL_CXXALIAS_SYS (setusershell, void, (void));
@@ -759,7 +822,7 @@ _GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
 #if @GNULIB_GETUSERSHELL@
 /* Free the pointer that is advanced at each getusershell() call and
    associated resources.  */
-# if !@HAVE_GETUSERSHELL@
+# if !@HAVE_DECL_GETUSERSHELL@
 _GL_FUNCDECL_SYS (endusershell, void, (void));
 # endif
 _GL_CXXALIAS_SYS (endusershell, void, (void));
@@ -956,6 +1019,40 @@ _GL_WARN_ON_USE (pread, "pread is unportable - "
 #endif
 
 
+#if @GNULIB_PWRITE@
+/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
+   Return the number of bytes written if successful, otherwise
+   set errno and return -1.  0 indicates nothing written.  See the
+   POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/pwrite.html>.  */
+# if @REPLACE_PWRITE@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define pwrite rpl_pwrite
+#  endif
+_GL_FUNCDECL_RPL (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset)
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset));
+# else
+#  if !@HAVE_PWRITE@
+_GL_FUNCDECL_SYS (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset)
+                  _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (pwrite, ssize_t,
+                  (int fd, const void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pwrite);
+#elif defined GNULIB_POSIXCHECK
+# undef pwrite
+# if HAVE_RAW_DECL_PWRITE
+_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
+                 "use gnulib module pwrite for portability");
+# endif
+#endif
+
+
 #if @GNULIB_READLINK@
 /* Read the contents of the symbolic link FILE and place the first BUFSIZE
    bytes of it into BUF.  Return the number of bytes placed into BUF if
@@ -1003,7 +1100,7 @@ _GL_CXXALIASWARN (readlinkat);
 # undef readlinkat
 # if HAVE_RAW_DECL_READLINKAT
 _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
-                 "use gnulib module symlinkat for portability");
+                 "use gnulib module readlinkat for portability");
 # endif
 #endif
 
@@ -1101,6 +1198,36 @@ _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
 #endif
 
 
+#if @GNULIB_TTYNAME_R@
+/* Store at most BUFLEN characters of the pathname of the terminal FD is
+   open on in BUF.  Return 0 on success, otherwise an error number.  */
+# if @REPLACE_TTYNAME_R@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ttyname_r
+#   define ttyname_r rpl_ttyname_r
+#  endif
+_GL_FUNCDECL_RPL (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen));
+# else
+#  if !@HAVE_TTYNAME_R@
+_GL_FUNCDECL_SYS (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+#  endif
+_GL_CXXALIAS_SYS (ttyname_r, int,
+                  (int fd, char *buf, size_t buflen));
+# endif
+_GL_CXXALIASWARN (ttyname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ttyname_r
+# if HAVE_RAW_DECL_TTYNAME_R
+_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
+                 "use gnulib module ttyname_r for portability");
+# endif
+#endif
+
+
 #if @GNULIB_UNLINK@
 # if @REPLACE_UNLINK@
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -1189,7 +1316,10 @@ _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
                                   _GL_ARG_NONNULL ((2)));
 _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
 # else
-_GL_CXXALIAS_SYS (write, ssize_t, (int fd, const void *buf, size_t count));
+/* Need to cast, because on mingw, the third parameter is
+                                                             unsigned int count
+   and the return type is 'int'.  */
+_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
 # endif
 _GL_CXXALIASWARN (write);
 #endif
diff --git a/gnu/unitypes.h b/gnu/unitypes.h
deleted file mode 100644 (file)
index 61571c3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Elementary types for the GNU UniString library.
-   Copyright (C) 2002, 2005-2006, 2009-2010 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published
-   by the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef _UNITYPES_H
-#define _UNITYPES_H
-
-/* Get uint8_t, uint16_t, uint32_t.  */
-#include <stdint.h>
-
-/* Type representing a Unicode character.  */
-typedef uint32_t ucs4_t;
-
-#endif /* _UNITYPES_H */
diff --git a/gnu/unitypes.in.h b/gnu/unitypes.in.h
new file mode 100644 (file)
index 0000000..61571c3
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Elementary types for the GNU UniString library.
+   Copyright (C) 2002, 2005-2006, 2009-2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _UNITYPES_H
+#define _UNITYPES_H
+
+/* Get uint8_t, uint16_t, uint32_t.  */
+#include <stdint.h>
+
+/* Type representing a Unicode character.  */
+typedef uint32_t ucs4_t;
+
+#endif /* _UNITYPES_H */
diff --git a/gnu/uniwidth.h b/gnu/uniwidth.h
deleted file mode 100644 (file)
index 30e1923..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- buffer-read-only: t -*- vi: set ro: */
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Display width functions.
-   Copyright (C) 2001-2002, 2005, 2007, 2009-2010 Free Software Foundation,
-   Inc.
-
-   This program is free software: you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published
-   by the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef _UNIWIDTH_H
-#define _UNIWIDTH_H
-
-#include "unitypes.h"
-
-/* Get size_t.  */
-#include <stddef.h>
-
-/* Get locale_charset() declaration.  */
-#include "localcharset.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Display width.  */
-
-/* These functions are locale dependent.  The encoding argument identifies
-   the encoding (e.g. "ISO-8859-2" for Polish).  */
-
-/* Determine number of column positions required for UC.  */
-extern int
-       uc_width (ucs4_t uc, const char *encoding);
-
-/* Determine number of column positions required for first N units
-   (or fewer if S ends before this) in S.  */
-extern int
-       u8_width (const uint8_t *s, size_t n, const char *encoding);
-extern int
-       u16_width (const uint16_t *s, size_t n, const char *encoding);
-extern int
-       u32_width (const uint32_t *s, size_t n, const char *encoding);
-
-/* Determine number of column positions required for S.  */
-extern int
-       u8_strwidth (const uint8_t *s, const char *encoding);
-extern int
-       u16_strwidth (const uint16_t *s, const char *encoding);
-extern int
-       u32_strwidth (const uint32_t *s, const char *encoding);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UNIWIDTH_H */
diff --git a/gnu/uniwidth.in.h b/gnu/uniwidth.in.h
new file mode 100644 (file)
index 0000000..30e1923
--- /dev/null
@@ -0,0 +1,67 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Display width functions.
+   Copyright (C) 2001-2002, 2005, 2007, 2009-2010 Free Software Foundation,
+   Inc.
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _UNIWIDTH_H
+#define _UNIWIDTH_H
+
+#include "unitypes.h"
+
+/* Get size_t.  */
+#include <stddef.h>
+
+/* Get locale_charset() declaration.  */
+#include "localcharset.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Display width.  */
+
+/* These functions are locale dependent.  The encoding argument identifies
+   the encoding (e.g. "ISO-8859-2" for Polish).  */
+
+/* Determine number of column positions required for UC.  */
+extern int
+       uc_width (ucs4_t uc, const char *encoding);
+
+/* Determine number of column positions required for first N units
+   (or fewer if S ends before this) in S.  */
+extern int
+       u8_width (const uint8_t *s, size_t n, const char *encoding);
+extern int
+       u16_width (const uint16_t *s, size_t n, const char *encoding);
+extern int
+       u32_width (const uint32_t *s, size_t n, const char *encoding);
+
+/* Determine number of column positions required for S.  */
+extern int
+       u8_strwidth (const uint8_t *s, const char *encoding);
+extern int
+       u16_strwidth (const uint16_t *s, const char *encoding);
+extern int
+       u32_strwidth (const uint32_t *s, const char *encoding);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNIWIDTH_H */
index 2dba811d626dd912409b8932347b7f6f011724d8..a2fa2f75ca02d71823e654996db22611f1a72fb9 100644 (file)
@@ -334,8 +334,8 @@ uc_width (ucs4_t uc, const char *encoding)
         }
     }
   /* Test for double-width character.
-   * Generated from "grep '^....;[WF]' EastAsianWidth.txt"
-   * and            "grep '^....;[^WF]' EastAsianWidth.txt"
+   * Generated from "grep '^[^;]\{4,5\};[WF]' EastAsianWidth.txt"
+   * and            "grep '^[^;]\{4,5\};[^WF]' EastAsianWidth.txt"
    */
   if (uc >= 0x1100
       && ((uc < 0x1160) /* Hangul Jamo */
index 568d2cdce4a58caa2516a5943cfc18dc7f08fa5a..827ea875b7812e345111e0f8a5a02273ce053691 100644 (file)
@@ -82,6 +82,16 @@ rpl_unlink (char const *name)
         }
     }
   if (!result)
-    result = unlink (name);
+    {
+#if UNLINK_PARENT_BUG
+      if (len >= 2 && name[len - 1] == '.' && name[len - 2] == '.'
+          && (len == 2 || ISSLASH (name[len - 3])))
+        {
+          errno = EISDIR; /* could also use EPERM */
+          return -1;
+        }
+#endif
+      result = unlink (name);
+    }
   return result;
 }
index 8ce10d104874144165ba7a1b8d446431352a177a..0cf26714b165dd6d2f41203ee94c69b520c9087a 100644 (file)
@@ -166,7 +166,7 @@ update_timespec (struct stat const *statbuf, struct timespec *ts[2])
    Return 0 on success, -1 (setting errno) on failure.  */
 
 int
-fdutimens (char const *file, int fd, struct timespec const timespec[2])
+fdutimens (int fd, char const *file, struct timespec const timespec[2])
 {
   struct timespec adjusted_timespec[2];
   struct timespec *ts = timespec ? adjusted_timespec : NULL;
@@ -302,7 +302,7 @@ fdutimens (char const *file, int fd, struct timespec const timespec[2])
   {
 #if HAVE_FUTIMESAT || HAVE_WORKING_UTIMES
     struct timeval timeval[2];
-    struct timeval const *t;
+    struct timeval *t;
     if (ts)
       {
         timeval[0].tv_sec = ts[0].tv_sec;
@@ -372,28 +372,12 @@ fdutimens (char const *file, int fd, struct timespec const timespec[2])
   }
 }
 
-/* Set the access and modification time stamps of FD (a.k.a. FILE) to be
-   TIMESPEC[0] and TIMESPEC[1], respectively.
-   FD must be either negative -- in which case it is ignored --
-   or a file descriptor that is open on FILE.
-   If FD is nonnegative, then FILE can be NULL, which means
-   use just futimes (or equivalent) instead of utimes (or equivalent),
-   and fail if on an old system without futimes (or equivalent).
-   If TIMESPEC is null, set the time stamps to the current time.
-   Return 0 on success, -1 (setting errno) on failure.  */
-
-int
-gl_futimens (int fd, char const *file, struct timespec const timespec[2])
-{
-  return fdutimens (file, fd, timespec);
-}
-
 /* Set the access and modification time stamps of FILE to be
    TIMESPEC[0] and TIMESPEC[1], respectively.  */
 int
 utimens (char const *file, struct timespec const timespec[2])
 {
-  return fdutimens (file, -1, timespec);
+  return fdutimens (-1, file, timespec);
 }
 
 /* Set the access and modification time stamps of FILE to be
@@ -419,7 +403,7 @@ lutimens (char const *file, struct timespec const timespec[2])
 
   /* The Linux kernel did not support symlink timestamps until
      utimensat, in version 2.6.22, so we don't need to mimic
-     gl_futimens' worry about buggy NFS clients.  But we do have to
+     fdutimens' worry about buggy NFS clients.  But we do have to
      worry about bogus return values.  */
 
 #if HAVE_UTIMENSAT
@@ -486,7 +470,7 @@ lutimens (char const *file, struct timespec const timespec[2])
 #if HAVE_LUTIMES && !HAVE_UTIMENSAT
   {
     struct timeval timeval[2];
-    struct timeval const *t;
+    struct timeval *t;
     int result;
     if (ts)
       {
@@ -509,7 +493,7 @@ lutimens (char const *file, struct timespec const timespec[2])
   if (!(adjustment_needed || REPLACE_FUNC_STAT_FILE) && lstat (file, &st))
     return -1;
   if (!S_ISLNK (st.st_mode))
-    return fdutimens (file, -1, ts);
+    return fdutimens (-1, file, ts);
   errno = ENOSYS;
   return -1;
 }
index 37f92b734db3c438b31a9f48ba6df578667e83eb..7690e74df578b7de30c84e2d179c1209e11dd52b 100644 (file)
@@ -1,8 +1,7 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 #include <time.h>
-int fdutimens (char const *, int, struct timespec const [2]);
-int gl_futimens (int, char const *, struct timespec const [2]);
+int fdutimens (int, char const *, struct timespec const [2]);
 int utimens (char const *, struct timespec const [2]);
 int lutimens (char const *, struct timespec const [2]);
 
@@ -10,12 +9,13 @@ int lutimens (char const *, struct timespec const [2]);
 # include <fcntl.h>
 # include <sys/stat.h>
 
-int fdutimensat (int dir, char const *name, int fd, struct timespec const [2]);
+int fdutimensat (int fd, int dir, char const *name, struct timespec const [2],
+                 int atflag);
 
 /* Using this function makes application code slightly more readable.  */
 static inline int
-lutimensat (int fd, char const *file, struct timespec const times[2])
+lutimensat (int dir, char const *file, struct timespec const times[2])
 {
-  return utimensat (fd, file, times, AT_SYMLINK_NOFOLLOW);
+  return utimensat (dir, file, times, AT_SYMLINK_NOFOLLOW);
 }
 #endif
diff --git a/gnu/utimensat.c b/gnu/utimensat.c
new file mode 100644 (file)
index 0000000..005214c
--- /dev/null
@@ -0,0 +1,138 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Set the access and modification time of a file relative to directory fd.
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <fcntl.h>
+
+#include "stat-time.h"
+#include "timespec.h"
+#include "utimens.h"
+
+#if HAVE_UTIMENSAT
+
+# undef utimensat
+
+/* If we have a native utimensat, but are compiling this file, then
+   utimensat was defined to rpl_utimensat by our replacement
+   sys/stat.h.  We assume the native version might fail with ENOSYS,
+   or succeed without properly affecting ctime (as is the case when
+   using newer glibc but older Linux kernel).  In this scenario,
+   rpl_utimensat checks whether the native version is usable, and
+   local_utimensat provides the fallback manipulation.  */
+
+static int local_utimensat (int, char const *, struct timespec const[2], int);
+# define AT_FUNC_NAME local_utimensat
+
+/* Like utimensat, but work around native bugs.  */
+
+int
+rpl_utimensat (int fd, char const *file, struct timespec const times[2],
+               int flag)
+{
+  /* See comments in utimens.c for details.  */
+  static int utimensat_works_really; /* 0 = unknown, 1 = yes, -1 = no.  */
+  if (0 <= utimensat_works_really)
+    {
+      int result;
+# ifdef __linux__
+      struct stat st;
+      struct timespec ts[2];
+      /* As recently as Linux kernel 2.6.32 (Dec 2009), several file
+         systems (xfs, ntfs-3g) have bugs with a single UTIME_OMIT,
+         but work if both times are either explicitly specified or
+         UTIME_NOW.  Work around it with a preparatory [l]stat prior
+         to calling utimensat; fortunately, there is not much timing
+         impact due to the extra syscall even on file systems where
+         UTIME_OMIT would have worked.  FIXME: Simplify this in 2012,
+         when file system bugs are no longer common.  */
+      if (times && (times[0].tv_nsec == UTIME_OMIT
+                    || times[1].tv_nsec == UTIME_OMIT))
+        {
+          if (fstatat (fd, file, &st, flag))
+            return -1;
+          if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT)
+            return 0;
+          if (times[0].tv_nsec == UTIME_OMIT)
+            ts[0] = get_stat_atime (&st);
+          else
+            ts[0] = times[0];
+          if (times[1].tv_nsec == UTIME_OMIT)
+            ts[1] = get_stat_mtime (&st);
+          else
+            ts[1] = times[1];
+          times = ts;
+        }
+# endif /* __linux__ */
+      result = utimensat (fd, file, times, flag);
+      /* Linux kernel 2.6.25 has a bug where it returns EINVAL for
+         UTIME_NOW or UTIME_OMIT with non-zero tv_sec, which
+         local_utimensat works around.  Meanwhile, EINVAL for a bad
+         flag is indeterminate whether the native utimensat works, but
+         local_utimensat will also reject it.  */
+      if (result == -1 && errno == EINVAL && (flag & ~AT_SYMLINK_NOFOLLOW))
+        return result;
+      if (result == 0 || (errno != ENOSYS && errno != EINVAL))
+        {
+          utimensat_works_really = 1;
+          return result;
+        }
+    }
+  /* No point in trying openat/futimens, since on Linux, futimens is
+     implemented with the same syscall as utimensat.  Only avoid the
+     native utimensat due to an ENOSYS failure; an EINVAL error was
+     data-dependent, and the next caller may pass valid data.  */
+  if (0 <= utimensat_works_really && errno == ENOSYS)
+    utimensat_works_really = -1;
+  return local_utimensat (fd, file, times, flag);
+}
+
+#else /* !HAVE_UTIMENSAT */
+
+# define AT_FUNC_NAME utimensat
+
+#endif /* !HAVE_UTIMENSAT */
+
+/* Set the access and modification time stamps of FILE to be
+   TIMESPEC[0] and TIMESPEC[1], respectively; relative to directory
+   FD.  If flag is AT_SYMLINK_NOFOLLOW, change the times of a symlink,
+   or fail with ENOSYS if not possible.  If TIMESPEC is null, set the
+   time stamps to the current time.  If possible, do it without
+   changing the working directory.  Otherwise, resort to using
+   save_cwd/fchdir, then utimens/restore_cwd.  If either the save_cwd
+   or the restore_cwd fails, then give a diagnostic and exit nonzero.
+   Return 0 on success, -1 (setting errno) on failure.  */
+
+/* AT_FUNC_NAME is now utimensat or local_utimensat.  */
+#define AT_FUNC_F1 lutimens
+#define AT_FUNC_F2 utimens
+#define AT_FUNC_USE_F1_COND AT_SYMLINK_NOFOLLOW
+#define AT_FUNC_POST_FILE_PARAM_DECLS , struct timespec const ts[2], int flag
+#define AT_FUNC_POST_FILE_ARGS        , ts
+#include "at-func.c"
+#undef AT_FUNC_NAME
+#undef AT_FUNC_F1
+#undef AT_FUNC_F2
+#undef AT_FUNC_USE_F1_COND
+#undef AT_FUNC_POST_FILE_PARAM_DECLS
+#undef AT_FUNC_POST_FILE_ARGS
index 3fbba53e2359f6f51cb703854c0273b92b2939bf..e9bbd43ca94ba1e428d95f0c7e824c504873b3fa 100644 (file)
@@ -90,6 +90,8 @@
 /* Checked size_t computations.  */
 #include "xsize.h"
 
+#include "verify.h"
+
 #if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
 # include <math.h>
 # include "float+.h"
 # define USE_SNPRINTF 1
 # if HAVE_DECL__SNWPRINTF
    /* On Windows, the function swprintf() has a different signature than
-      on Unix; we use the _snwprintf() function instead.  */
-#  define SNPRINTF _snwprintf
+      on Unix; we use the function _snwprintf() or - on mingw - snwprintf()
+      instead.  The mingw function snwprintf() has fewer bugs than the
+      MSVCRT function _snwprintf(), so prefer that.  */
+#  if defined __MINGW32__
+#   define SNPRINTF snwprintf
+#  else
+#   define SNPRINTF _snwprintf
+#  endif
 # else
    /* Unix.  */
 #  define SNPRINTF swprintf
 #  define USE_SNPRINTF 0
 # endif
 # if HAVE_DECL__SNPRINTF
-   /* Windows.  */
-#  define SNPRINTF _snprintf
+   /* Windows.  The mingw function snprintf() has fewer bugs than the MSVCRT
+      function _snprintf(), so prefer that.  */
+#  if defined __MINGW32__
+#   define SNPRINTF snprintf
+    /* Here we need to call the native snprintf, not rpl_snprintf.  */
+#   undef snprintf
+#  else
+#   define SNPRINTF _snprintf
+#  endif
 # else
    /* Unix.  */
 #  define SNPRINTF snprintf
 #undef remainder
 #define remainder rem
 
-#if !USE_SNPRINTF && !WIDE_CHAR_VERSION
+#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && !WIDE_CHAR_VERSION
 # if (HAVE_STRNLEN && !defined _AIX)
 #  define local_strnlen strnlen
 # else
@@ -212,7 +227,7 @@ local_strnlen (const char *string, size_t maxlen)
 # endif
 #endif
 
-#if (!USE_SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T && (WIDE_CHAR_VERSION || DCHAR_IS_TCHAR)
+#if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T
 # if HAVE_WCSLEN
 #  define local_wcslen wcslen
 # else
@@ -235,7 +250,7 @@ local_wcslen (const wchar_t *s)
 # endif
 #endif
 
-#if !USE_SNPRINTF && HAVE_WCHAR_T && WIDE_CHAR_VERSION
+#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && HAVE_WCHAR_T && WIDE_CHAR_VERSION
 # if HAVE_WCSNLEN
 #  define local_wcsnlen wcsnlen
 # else
@@ -311,11 +326,11 @@ is_infinite_or_zerol (long double x)
 
 typedef unsigned int mp_limb_t;
 # define GMP_LIMB_BITS 32
-typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1];
+verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
 
 typedef unsigned long long mp_twolimb_t;
 # define GMP_TWOLIMB_BITS 64
-typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1];
+verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
 
 /* Representation of a bignum >= 0.  */
 typedef struct
@@ -1476,6 +1491,258 @@ is_borderline (const char *digits, size_t precision)
 
 #endif
 
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99
+
+/* Use a different function name, to make it possible that the 'wchar_t'
+   parametrization and the 'char' parametrization get compiled in the same
+   translation unit.  */
+# if WIDE_CHAR_VERSION
+#  define MAX_ROOM_NEEDED wmax_room_needed
+# else
+#  define MAX_ROOM_NEEDED max_room_needed
+# endif
+
+/* Returns the number of TCHAR_T units needed as temporary space for the result
+   of sprintf or SNPRINTF of a single conversion directive.  */
+static inline size_t
+MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion,
+                 arg_type type, int flags, size_t width, int has_precision,
+                 size_t precision, int pad_ourselves)
+{
+  size_t tmp_length;
+
+  switch (conversion)
+    {
+    case 'd': case 'i': case 'u':
+# if HAVE_LONG_LONG_INT
+      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+                          * 0.30103 /* binary -> decimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+# endif
+      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+                          * 0.30103 /* binary -> decimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+                          * 0.30103 /* binary -> decimal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
+      tmp_length = xsum (tmp_length, tmp_length);
+      /* Add 1, to account for a leading sign.  */
+      tmp_length = xsum (tmp_length, 1);
+      break;
+
+    case 'o':
+# if HAVE_LONG_LONG_INT
+      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+                          * 0.333334 /* binary -> octal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+# endif
+      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+                          * 0.333334 /* binary -> octal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+                          * 0.333334 /* binary -> octal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Add 1, to account for a leading sign.  */
+      tmp_length = xsum (tmp_length, 1);
+      break;
+
+    case 'x': case 'X':
+# if HAVE_LONG_LONG_INT
+      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+                          * 0.25 /* binary -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+# endif
+      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+        tmp_length =
+          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+                          * 0.25 /* binary -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+                          * 0.25 /* binary -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Add 2, to account for a leading sign or alternate form.  */
+      tmp_length = xsum (tmp_length, 2);
+      break;
+
+    case 'f': case 'F':
+      if (type == TYPE_LONGDOUBLE)
+        tmp_length =
+          (unsigned int) (LDBL_MAX_EXP
+                          * 0.30103 /* binary -> decimal */
+                          * 2 /* estimate for FLAG_GROUP */
+                         )
+          + 1 /* turn floor into ceil */
+          + 10; /* sign, decimal point etc. */
+      else
+        tmp_length =
+          (unsigned int) (DBL_MAX_EXP
+                          * 0.30103 /* binary -> decimal */
+                          * 2 /* estimate for FLAG_GROUP */
+                         )
+          + 1 /* turn floor into ceil */
+          + 10; /* sign, decimal point etc. */
+      tmp_length = xsum (tmp_length, precision);
+      break;
+
+    case 'e': case 'E': case 'g': case 'G':
+      tmp_length =
+        12; /* sign, decimal point, exponent etc. */
+      tmp_length = xsum (tmp_length, precision);
+      break;
+
+    case 'a': case 'A':
+      if (type == TYPE_LONGDOUBLE)
+        tmp_length =
+          (unsigned int) (LDBL_DIG
+                          * 0.831 /* decimal -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      else
+        tmp_length =
+          (unsigned int) (DBL_DIG
+                          * 0.831 /* decimal -> hexadecimal */
+                         )
+          + 1; /* turn floor into ceil */
+      if (tmp_length < precision)
+        tmp_length = precision;
+      /* Account for sign, decimal point etc. */
+      tmp_length = xsum (tmp_length, 12);
+      break;
+
+    case 'c':
+# if HAVE_WINT_T && !WIDE_CHAR_VERSION
+      if (type == TYPE_WIDE_CHAR)
+        tmp_length = MB_CUR_MAX;
+      else
+# endif
+        tmp_length = 1;
+      break;
+
+    case 's':
+# if HAVE_WCHAR_T
+      if (type == TYPE_WIDE_STRING)
+        {
+#  if WIDE_CHAR_VERSION
+          /* ISO C says about %ls in fwprintf:
+               "If the precision is not specified or is greater than the size
+                of the array, the array shall contain a null wide character."
+             So if there is a precision, we must not use wcslen.  */
+          const wchar_t *arg = ap->arg[arg_index].a.a_wide_string;
+
+          if (has_precision)
+            tmp_length = local_wcsnlen (arg, precision);
+          else
+            tmp_length = local_wcslen (arg);
+#  else
+          /* ISO C says about %ls in fprintf:
+               "If a precision is specified, no more than that many bytes are
+                written (including shift sequences, if any), and the array
+                shall contain a null wide character if, to equal the multibyte
+                character sequence length given by the precision, the function
+                would need to access a wide character one past the end of the
+                array."
+             So if there is a precision, we must not use wcslen.  */
+          /* This case has already been handled separately in VASNPRINTF.  */
+          abort ();
+#  endif
+        }
+      else
+# endif
+        {
+# if WIDE_CHAR_VERSION
+          /* ISO C says about %s in fwprintf:
+               "If the precision is not specified or is greater than the size
+                of the converted array, the converted array shall contain a
+                null wide character."
+             So if there is a precision, we must not use strlen.  */
+          /* This case has already been handled separately in VASNPRINTF.  */
+          abort ();
+# else
+          /* ISO C says about %s in fprintf:
+               "If the precision is not specified or greater than the size of
+                the array, the array shall contain a null character."
+             So if there is a precision, we must not use strlen.  */
+          const char *arg = ap->arg[arg_index].a.a_string;
+
+          if (has_precision)
+            tmp_length = local_strnlen (arg, precision);
+          else
+            tmp_length = strlen (arg);
+# endif
+        }
+      break;
+
+    case 'p':
+      tmp_length =
+        (unsigned int) (sizeof (void *) * CHAR_BIT
+                        * 0.25 /* binary -> hexadecimal */
+                       )
+          + 1 /* turn floor into ceil */
+          + 2; /* account for leading 0x */
+      break;
+
+    default:
+      abort ();
+    }
+
+  if (!pad_ourselves)
+    {
+# if ENABLE_UNISTDIO
+      /* Padding considers the number of characters, therefore the number of
+         elements after padding may be
+           > max (tmp_length, width)
+         but is certainly
+           <= tmp_length + width.  */
+      tmp_length = xsum (tmp_length, width);
+# else
+      /* Padding considers the number of elements, says POSIX.  */
+      if (tmp_length < width)
+        tmp_length = width;
+# endif
+    }
+
+  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
+
+  return tmp_length;
+}
+
+#endif
+
 DCHAR_T *
 VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
             const FCHAR_T *format, va_list args)
@@ -2105,7 +2372,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                   }
               }
 #endif
-#if (!USE_SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T
+#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T
             else if (dp->conversion == 's'
 # if WIDE_CHAR_VERSION
                      && a.arg[dp->arg_index].type != TYPE_WIDE_STRING
@@ -2358,7 +2625,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                   size_t characters;
 #  if !DCHAR_IS_TCHAR
                   /* This code assumes that TCHAR_T is 'char'.  */
-                  typedef int TCHAR_T_verify[2 * (sizeof (TCHAR_T) == 1) - 1];
+                  verify (sizeof (TCHAR_T) == 1);
                   TCHAR_T *tmpsrc;
                   DCHAR_T *tmpdst;
                   size_t tmpdst_len;
@@ -2594,8 +2861,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                           count = wctomb (cbuf, *arg);
 #   endif
                           if (count <= 0)
-                            /* Inconsistency.  */
-                            abort ();
+                            {
+                              /* Cannot convert.  */
+                              if (!(result == resultbuf || result == NULL))
+                                free (result);
+                              if (buf_malloced != NULL)
+                                free (buf_malloced);
+                              CLEANUP ();
+                              errno = EILSEQ;
+                              return NULL;
+                            }
                           ENSURE_ALLOCATION (xsum (length, count));
                           memcpy (result + length, cbuf, count);
                           length += count;
@@ -2618,8 +2893,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                       length += n;
                     }
                 }
-              }
 # endif
+              }
 #endif
 #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL
             else if ((dp->conversion == 'a' || dp->conversion == 'A')
@@ -4303,11 +4578,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
               {
                 arg_type type = a.arg[dp->arg_index].type;
                 int flags = dp->flags;
-#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
                 int has_width;
                 size_t width;
 #endif
-#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION
                 int has_precision;
                 size_t precision;
 #endif
@@ -4326,13 +4601,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                 TCHAR_T *fbp;
                 unsigned int prefix_count;
                 int prefixes[2] IF_LINT (= { 0 });
+                int orig_errno;
 #if !USE_SNPRINTF
                 size_t tmp_length;
                 TCHAR_T tmpbuf[700];
                 TCHAR_T *tmp;
 #endif
 
-#if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
                 has_width = 0;
                 width = 0;
                 if (dp->width_start != dp->width_end)
@@ -4366,7 +4642,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                   }
 #endif
 
-#if !USE_SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION
                 has_precision = 0;
                 precision = 6;
                 if (dp->precision_start != dp->precision_end)
@@ -4439,246 +4715,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
 #if !USE_SNPRINTF
                 /* Allocate a temporary buffer of sufficient size for calling
                    sprintf.  */
-                {
-                  switch (dp->conversion)
-                    {
-
-                    case 'd': case 'i': case 'u':
-# if HAVE_LONG_LONG_INT
-                      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-                                          * 0.30103 /* binary -> decimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-# endif
-                      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-                                          * 0.30103 /* binary -> decimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                                          * 0.30103 /* binary -> decimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      if (tmp_length < precision)
-                        tmp_length = precision;
-                      /* Multiply by 2, as an estimate for FLAG_GROUP.  */
-                      tmp_length = xsum (tmp_length, tmp_length);
-                      /* Add 1, to account for a leading sign.  */
-                      tmp_length = xsum (tmp_length, 1);
-                      break;
-
-                    case 'o':
-# if HAVE_LONG_LONG_INT
-                      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-                                          * 0.333334 /* binary -> octal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-# endif
-                      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-                                          * 0.333334 /* binary -> octal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                                          * 0.333334 /* binary -> octal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      if (tmp_length < precision)
-                        tmp_length = precision;
-                      /* Add 1, to account for a leading sign.  */
-                      tmp_length = xsum (tmp_length, 1);
-                      break;
-
-                    case 'x': case 'X':
-# if HAVE_LONG_LONG_INT
-                      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
-                                          * 0.25 /* binary -> hexadecimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-# endif
-                      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
-                                          * 0.25 /* binary -> hexadecimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-                        tmp_length =
-                          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
-                                          * 0.25 /* binary -> hexadecimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      if (tmp_length < precision)
-                        tmp_length = precision;
-                      /* Add 2, to account for a leading sign or alternate form.  */
-                      tmp_length = xsum (tmp_length, 2);
-                      break;
-
-                    case 'f': case 'F':
-                      if (type == TYPE_LONGDOUBLE)
-                        tmp_length =
-                          (unsigned int) (LDBL_MAX_EXP
-                                          * 0.30103 /* binary -> decimal */
-                                          * 2 /* estimate for FLAG_GROUP */
-                                         )
-                          + 1 /* turn floor into ceil */
-                          + 10; /* sign, decimal point etc. */
-                      else
-                        tmp_length =
-                          (unsigned int) (DBL_MAX_EXP
-                                          * 0.30103 /* binary -> decimal */
-                                          * 2 /* estimate for FLAG_GROUP */
-                                         )
-                          + 1 /* turn floor into ceil */
-                          + 10; /* sign, decimal point etc. */
-                      tmp_length = xsum (tmp_length, precision);
-                      break;
-
-                    case 'e': case 'E': case 'g': case 'G':
-                      tmp_length =
-                        12; /* sign, decimal point, exponent etc. */
-                      tmp_length = xsum (tmp_length, precision);
-                      break;
-
-                    case 'a': case 'A':
-                      if (type == TYPE_LONGDOUBLE)
-                        tmp_length =
-                          (unsigned int) (LDBL_DIG
-                                          * 0.831 /* decimal -> hexadecimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      else
-                        tmp_length =
-                          (unsigned int) (DBL_DIG
-                                          * 0.831 /* decimal -> hexadecimal */
-                                         )
-                          + 1; /* turn floor into ceil */
-                      if (tmp_length < precision)
-                        tmp_length = precision;
-                      /* Account for sign, decimal point etc. */
-                      tmp_length = xsum (tmp_length, 12);
-                      break;
-
-                    case 'c':
-# if HAVE_WINT_T && !WIDE_CHAR_VERSION
-                      if (type == TYPE_WIDE_CHAR)
-                        tmp_length = MB_CUR_MAX;
-                      else
-# endif
-                        tmp_length = 1;
-                      break;
-
-                    case 's':
-# if HAVE_WCHAR_T
-                      if (type == TYPE_WIDE_STRING)
-                        {
-#  if WIDE_CHAR_VERSION
-                          /* ISO C says about %ls in fwprintf:
-                               "If the precision is not specified or is greater
-                                than the size of the array, the array shall
-                                contain a null wide character."
-                             So if there is a precision, we must not use
-                             wcslen.  */
-                          const wchar_t *arg =
-                            a.arg[dp->arg_index].a.a_wide_string;
-
-                          if (has_precision)
-                            tmp_length = local_wcsnlen (arg, precision);
-                          else
-                            tmp_length = local_wcslen (arg);
-#  else
-                          /* ISO C says about %ls in fprintf:
-                               "If a precision is specified, no more than that
-                                many bytes are written (including shift
-                                sequences, if any), and the array shall contain
-                                a null wide character if, to equal the
-                                multibyte character sequence length given by
-                                the precision, the function would need to
-                                access a wide character one past the end of the
-                                array."
-                             So if there is a precision, we must not use
-                             wcslen.  */
-                          /* This case has already been handled above.  */
-                          abort ();
-#  endif
-                        }
-                      else
-# endif
-                        {
-# if WIDE_CHAR_VERSION
-                          /* ISO C says about %s in fwprintf:
-                               "If the precision is not specified or is greater
-                                than the size of the converted array, the
-                                converted array shall contain a null wide
-                                character."
-                             So if there is a precision, we must not use
-                             strlen.  */
-                          /* This case has already been handled above.  */
-                          abort ();
-# else
-                          /* ISO C says about %s in fprintf:
-                               "If the precision is not specified or greater
-                                than the size of the array, the array shall
-                                contain a null character."
-                             So if there is a precision, we must not use
-                             strlen.  */
-                          const char *arg = a.arg[dp->arg_index].a.a_string;
-
-                          if (has_precision)
-                            tmp_length = local_strnlen (arg, precision);
-                          else
-                            tmp_length = strlen (arg);
-# endif
-                        }
-                      break;
-
-                    case 'p':
-                      tmp_length =
-                        (unsigned int) (sizeof (void *) * CHAR_BIT
-                                        * 0.25 /* binary -> hexadecimal */
-                                       )
-                          + 1 /* turn floor into ceil */
-                          + 2; /* account for leading 0x */
-                      break;
-
-                    default:
-                      abort ();
-                    }
-
-                  if (!pad_ourselves)
-                    {
-# if ENABLE_UNISTDIO
-                      /* Padding considers the number of characters, therefore
-                         the number of elements after padding may be
-                           > max (tmp_length, width)
-                         but is certainly
-                           <= tmp_length + width.  */
-                      tmp_length = xsum (tmp_length, width);
-# else
-                      /* Padding considers the number of elements,
-                         says POSIX.  */
-                      if (tmp_length < width)
-                        tmp_length = width;
-# endif
-                    }
-
-                  tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
-                }
+                tmp_length =
+                  MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type,
+                                   flags, width, has_precision, precision,
+                                   pad_ourselves);
 
                 if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T))
                   tmp = tmpbuf;
@@ -4865,6 +4905,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                 *(TCHAR_T *) (result + length) = '\0';
 #endif
 
+                orig_errno = errno;
+
                 for (;;)
                   {
                     int count = -1;
@@ -4918,6 +4960,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                       }
 #endif
 
+                    errno = 0;
                     switch (type)
                       {
                       case TYPE_SCHAR:
@@ -5064,15 +5107,44 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                             /* Look at the snprintf() return value.  */
                             if (retcount < 0)
                               {
+# if !HAVE_SNPRINTF_RETVAL_C99
                                 /* HP-UX 10.20 snprintf() is doubly deficient:
                                    It doesn't understand the '%n' directive,
                                    *and* it returns -1 (rather than the length
                                    that would have been required) when the
-                                   buffer is too small.  */
-                                size_t bigger_need =
-                                  xsum (xtimes (allocated, 2), 12);
-                                ENSURE_ALLOCATION (bigger_need);
-                                continue;
+                                   buffer is too small.
+                                   But a failure at this point can also come
+                                   from other reasons than a too small buffer,
+                                   such as an invalid wide string argument to
+                                   the %ls directive, or possibly an invalid
+                                   floating-point argument.  */
+                                size_t tmp_length =
+                                  MAX_ROOM_NEEDED (&a, dp->arg_index,
+                                                   dp->conversion, type, flags,
+                                                   width, has_precision,
+                                                   precision, pad_ourselves);
+
+                                if (maxlen < tmp_length)
+                                  {
+                                    /* Make more room.  But try to do through
+                                       this reallocation only once.  */
+                                    size_t bigger_need =
+                                      xsum (length,
+                                            xsum (tmp_length,
+                                                  TCHARS_PER_DCHAR - 1)
+                                            / TCHARS_PER_DCHAR);
+                                    /* And always grow proportionally.
+                                       (There may be several arguments, each
+                                       needing a little more room than the
+                                       previous one.)  */
+                                    size_t bigger_need2 =
+                                      xsum (xtimes (allocated, 2), 12);
+                                    if (bigger_need < bigger_need2)
+                                      bigger_need = bigger_need2;
+                                    ENSURE_ALLOCATION (bigger_need);
+                                    continue;
+                                  }
+# endif
                               }
                             else
                               count = retcount;
@@ -5083,12 +5155,21 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                     /* Attempt to handle failure.  */
                     if (count < 0)
                       {
+                        /* SNPRINTF or sprintf failed.  Save and use the errno
+                           that it has set, if any.  */
+                        int saved_errno = errno;
+
                         if (!(result == resultbuf || result == NULL))
                           free (result);
                         if (buf_malloced != NULL)
                           free (buf_malloced);
                         CLEANUP ();
-                        errno = EINVAL;
+                        errno =
+                          (saved_errno != 0
+                           ? saved_errno
+                           : (dp->conversion == 'c' || dp->conversion == 's'
+                              ? EILSEQ
+                              : EINVAL));
                         return NULL;
                       }
 
@@ -5210,8 +5291,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                         DCHAR_T *tmpdst;
                         size_t tmpdst_len;
                         /* This code assumes that TCHAR_T is 'char'.  */
-                        typedef int TCHAR_T_verify
-                                    [2 * (sizeof (TCHAR_T) == 1) - 1];
+                        verify (sizeof (TCHAR_T) == 1);
 # if USE_SNPRINTF
                         tmpsrc = (TCHAR_T *) (result + length);
 # else
@@ -5424,6 +5504,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                     length += count;
                     break;
                   }
+                errno = orig_errno;
+#undef pad_ourselves
+#undef prec_ourselves
               }
           }
       }
@@ -5475,6 +5558,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
   }
 }
 
+#undef MAX_ROOM_NEEDED
 #undef TCHARS_PER_DCHAR
 #undef SNPRINTF
 #undef USE_SNPRINTF
index adda5d98b17d8d0da4ea5ce9ef52a482c2d9bddb..1acad2023789ad303acb8de9b1abdb9d3cafa57b 100644 (file)
      if the entity names are not disambiguated.  A workaround is to
      attach the current line number to the entity name:
 
-       #define GL_CONCAT0(x, y) x##y
-       #define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
-       extern struct {...} * GL_CONCAT(dummy,__LINE__);
+       #define _GL_CONCAT0(x, y) x##y
+       #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+       extern struct {...} * _GL_CONCAT (dummy, __LINE__);
 
      But this has the problem that two invocations of verify from
      within the same macro would collide, since the __LINE__ value
-     would be the same for both invocations.
+     would be the same for both invocations.  (The GCC __COUNTER__
+     macro solves this problem, but is not portable.)
 
      A solution is to use the sizeof operator.  It yields a number,
      getting rid of the identity of the type.  Declarations like
 
        extern int (*dummy (void)) [sizeof (struct {...})];
 
+   * GCC warns about duplicate declarations of the dummy function if
+     -Wredundant_decls is used.  GCC 4.3 and later have a builtin
+     __COUNTER__ macro that can let us generate unique identifiers for
+     each dummy function, to suppress this warning.
+
    * This implementation exploits the fact that GCC does not warn about
      the last declaration mentioned above.  If a future version of GCC
      introduces a warning for this, the problem could be worked around
-     by using code specialized to GCC, e.g.,:
+     by using code specialized to GCC, just as __COUNTER__ is already
+     being used if available.
 
        #if 4 <= __GNUC__
-       # define verify(R) \
-           extern int (* verify_function__ (void)) \
-                      [__builtin_constant_p (R) && (R) ? 1 : -1]
+       # define verify(R) [another version to keep GCC happy]
        #endif
 
    * In C++, any struct definition inside sizeof is invalid.
      Use a template type to work around the problem.  */
 
+/* Concatenate two preprocessor tokens.  */
+# define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+# define _GL_CONCAT0(x, y) x##y
+
+/* _GL_COUNTER is an integer, preferably one that changes each time we
+   use it.  Use __COUNTER__ if it works, falling back on __LINE__
+   otherwise.  __LINE__ isn't perfect, but it's better than a
+   constant.  */
+# if defined __COUNTER__ && __COUNTER__ != __COUNTER__
+#  define _GL_COUNTER __COUNTER__
+# else
+#  define _GL_COUNTER __LINE__
+# endif
+
+/* Generate a symbol with the given prefix, making it unique if
+   possible.  */
+# define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
 
 /* Verify requirement R at compile-time, as an integer constant expression.
    Return 1.  */
@@ -137,6 +159,7 @@ template <int w>
 /* Verify requirement R at compile-time, as a declaration without a
    trailing ';'.  */
 
-# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
+# define verify(R) \
+    extern int (* _GL_GENSYM (verify_function) (void)) [verify_true (R)]
 
 #endif
index cc464ae3b76a88da4dc7f826c620eb74f708fead..0600e3ba71bb8a27d9de8847de9eb3ce8ab5a17c 100644 (file)
@@ -31,6 +31,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
 /* Special invocation convention:
 /* The definition of _GL_WARN_ON_USE is copied here.  */
 
 
-/* Define wint_t.  (Also done in wctype.in.h.)  */
+/* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
 #if !@HAVE_WINT_T@ && !defined wint_t
 # define wint_t int
 # ifndef WEOF
 #  define WEOF -1
 # endif
+#else
+# ifndef WEOF
+#  define WEOF ((wint_t) -1)
+# endif
 #endif
 
 
@@ -405,7 +410,7 @@ _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
 _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t));
 _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
 # else
-#  if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
+#  if !@HAVE_DECL_WCWIDTH@
 /* wcwidth exists but is not declared.  */
 _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t));
 #  endif
index 099351b648f09ec5b7c828e6e6bc9cd7f815bc58..6ed34a6da0411241667ca89f261c3f48284c148c 100644 (file)
@@ -33,6 +33,7 @@
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
+@PRAGMA_COLUMNS@
 
 #if @HAVE_WINT_T@
 /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
 
 /* The definition of _GL_WARN_ON_USE is copied here.  */
 
-/* Define wint_t.  (Also done in wchar.in.h.)  */
+/* Define wint_t and WEOF.  (Also done in wchar.in.h.)  */
 #if !@HAVE_WINT_T@ && !defined wint_t
 # define wint_t int
 # ifndef WEOF
 #  define WEOF -1
 # endif
+#else
+# ifndef WEOF
+#  define WEOF ((wint_t) -1)
+# endif
 #endif
 
 
 /* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
    Linux libc5 has <wctype.h> and the functions but they are broken.
-   Assume all 12 functions are implemented the same way, or not at all.  */
+   Assume all 11 functions (all isw* except iswblank) are implemented the
+   same way, or not at all.  */
 #if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
 
 /* IRIX 5.3 has macros but no functions, its isw* macros refer to an
@@ -273,7 +279,27 @@ towupper
   return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
 }
 
-#endif /* ! HAVE_ISWCNTRL || REPLACE_ISWCNTRL */
+#elif ! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@
+/* Only the iswblank function is missing.  */
+
+# if @REPLACE_ISWBLANK@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   define iswblank rpl_iswblank
+#  endif
+# endif
+
+static inline int
+# if @REPLACE_ISWBLANK@
+rpl_iswblank
+# else
+iswblank
+# endif
+         (wint_t wc)
+{
+  return wc == ' ' || wc == '\t';
+}
+
+#endif
 
 #if defined __MINGW32__
 
@@ -326,7 +352,11 @@ _GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
 #else
 _GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
 _GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
+# if @REPLACE_ISWBLANK@
+_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
+# else
 _GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
+# endif
 _GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
 _GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
 _GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
index a10274436ac6a03dfdd0fcf6fd70c1af15139981..1cfe8f25abfc4587c0ef14586efdac37d78d5664 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- buffer-read-only: t -*- vi: set ro: */
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Determine the number of screen columns needed for a character.
-   Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007, 2010 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #include "streq.h"
 #include "uniwidth.h"
 
-#undef wcwidth
-
 int
-rpl_wcwidth (wchar_t wc)
+wcwidth (wchar_t wc)
+#undef wcwidth
 {
   /* In UTF-8 locales, use a Unicode aware width function.  */
   const char *encoding = locale_charset ();
index 37500ed81d7df0b05afa8b391874f8efa67e08e6..400019c63d2ef03b0aca152c23ceeecb9465b9e1 100644 (file)
@@ -48,6 +48,14 @@ extern "C" {
 #  endif
 # endif
 
+# ifndef ATTRIBUTE_ALLOC_SIZE
+#  if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+#   define ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+#  else
+#   define ATTRIBUTE_ALLOC_SIZE(args)
+#  endif
+# endif
+
 /* This function is always triggered when memory is exhausted.
    It must be defined by the application, either explicitly
    or by using gnulib's xalloc-die module.  This is the
@@ -55,13 +63,19 @@ extern "C" {
    memory allocation failure.  */
 extern void xalloc_die (void) ATTRIBUTE_NORETURN;
 
-void *xmalloc (size_t s) ATTRIBUTE_MALLOC;
-void *xzalloc (size_t s) ATTRIBUTE_MALLOC;
-void *xcalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
-void *xrealloc (void *p, size_t s);
+void *xmalloc (size_t s)
+      ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1));
+void *xzalloc (size_t s)
+      ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1));
+void *xcalloc (size_t n, size_t s)
+      ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1, 2));
+void *xrealloc (void *p, size_t s)
+      ATTRIBUTE_ALLOC_SIZE ((2));
 void *x2realloc (void *p, size_t *pn);
-void *xmemdup (void const *p, size_t s) ATTRIBUTE_MALLOC;
-char *xstrdup (char const *str) ATTRIBUTE_MALLOC;
+void *xmemdup (void const *p, size_t s)
+      ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((2));
+char *xstrdup (char const *str)
+      ATTRIBUTE_MALLOC;
 
 /* Return 1 if an array of N objects, each of size S, cannot exist due
    to size arithmetic overflow.  S must be positive and N must be
@@ -108,10 +122,13 @@ char *xstrdup (char const *str) ATTRIBUTE_MALLOC;
 # if HAVE_INLINE
 #  define static_inline static inline
 # else
-void *xnmalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
-void *xnrealloc (void *p, size_t n, size_t s);
+void *xnmalloc (size_t n, size_t s)
+      ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1, 2));
+void *xnrealloc (void *p, size_t n, size_t s)
+      ATTRIBUTE_ALLOC_SIZE ((2, 3));
 void *x2nrealloc (void *p, size_t *pn, size_t s);
-char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
+char *xcharalloc (size_t n)
+      ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1));
 # endif
 
 # ifdef static_inline
@@ -119,7 +136,8 @@ char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
 /* Allocate an array of N objects, each with S bytes of memory,
    dynamically, with error checking.  S must be nonzero.  */
 
-static_inline void *xnmalloc (size_t n, size_t s) ATTRIBUTE_MALLOC;
+static_inline void *xnmalloc (size_t n, size_t s)
+                    ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1, 2));
 static_inline void *
 xnmalloc (size_t n, size_t s)
 {
@@ -131,6 +149,8 @@ xnmalloc (size_t n, size_t s)
 /* Change the size of an allocated block of memory P to an array of N
    objects each of S bytes, with error checking.  S must be nonzero.  */
 
+static_inline void *xnrealloc (void *p, size_t n, size_t s)
+                    ATTRIBUTE_ALLOC_SIZE ((2, 3));
 static_inline void *
 xnrealloc (void *p, size_t n, size_t s)
 {
@@ -231,7 +251,8 @@ x2nrealloc (void *p, size_t *pn, size_t s)
 /* Return a pointer to a new buffer of N bytes.  This is like xmalloc,
    except it returns char *.  */
 
-static_inline char *xcharalloc (size_t n) ATTRIBUTE_MALLOC;
+static_inline char *xcharalloc (size_t n)
+                    ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE ((1));
 static_inline char *
 xcharalloc (size_t n)
 {
index 99d5bf4653cc3c8908094f24cb16fda30ea43705..1ec5f88eee77c0e540c7fbafa1f7c1c4b4e2ef49 100644 (file)
@@ -32,8 +32,8 @@
 
 /* 1 if calloc is known to be compatible with GNU calloc.  This
    matters if we are not also using the calloc module, which defines
-   HAVE_CALLOC and supports the GNU API even on non-GNU platforms.  */
-#if defined HAVE_CALLOC || defined __GLIBC__
+   HAVE_CALLOC_GNU and supports the GNU API even on non-GNU platforms.  */
+#if defined HAVE_CALLOC_GNU || defined __GLIBC__
 enum { HAVE_GNU_CALLOC = 1 };
 #else
 enum { HAVE_GNU_CALLOC = 0 };
index 4bfee8bb06db082d3e83a3582a2952901f813f67..5380128c0ec2dc240f1d3f45674af34579303862 100644 (file)
@@ -26,7 +26,7 @@ rmt-command.h : Makefile
        $(AM_V_at)mv $@-t $@
 BUILT_SOURCES = rmt-command.h
 CLEANFILES = rmt-command.h rmt-command.h-t
-INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu 
+INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu
 
 noinst_HEADERS = system.h system-ioctl.h rmt.h paxlib.h stdopen.h
 libtar_a_SOURCES = \
@@ -36,4 +36,3 @@ libtar_a_SOURCES = \
   rmt.h \
   stdopen.c stdopen.h \
   system.h system-ioctl.h
-
index 4ac8db7f565a7a308e5cab40fbd81acafe854c86..5304c0cb95961a08a5e2dab858da123ec483b6b6 100644 (file)
@@ -60,11 +60,11 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -77,17 +77,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -97,54 +97,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -205,6 +212,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -302,6 +310,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -357,10 +366,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -385,6 +396,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -401,11 +413,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -423,20 +440,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -444,7 +464,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -460,12 +479,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -477,25 +499,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -505,18 +531,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -533,6 +562,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -549,8 +579,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -565,6 +598,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -583,6 +617,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -649,21 +685,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -686,6 +725,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -693,6 +733,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -718,7 +759,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -730,17 +773,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -810,6 +857,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -841,7 +889,7 @@ top_srcdir = @top_srcdir@
 noinst_LIBRARIES = libtar.a
 BUILT_SOURCES = rmt-command.h
 CLEANFILES = rmt-command.h rmt-command.h-t
-INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu 
+INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu
 noinst_HEADERS = system.h system-ioctl.h rmt.h paxlib.h stdopen.h
 libtar_a_SOURCES = \
   paxerror.c paxexit.c paxlib.h paxnames.c \
index b4edb68b90cf3ee2cbcf4fbf98d29483cd4c1536..56903a3efd4f7e897e2c8da733d4f935ba1c438e 100644 (file)
@@ -352,12 +352,6 @@ write_error_details (char const *name, size_t status, size_t size)
            name, (unsigned long int) status, (unsigned long int) size));
 }
 
-void
-write_fatal (char const *name)
-{
-  call_arg_fatal ("write", name);
-}
-
 void
 chdir_fatal (char const *name)
 {
index 2fa396a2272269b586939e7385564ad8116d3de0..eeb445e83e8786df71ffbf36f3fd08d7bdbccce4 100644 (file)
@@ -88,7 +88,7 @@ void seek_error (char const *);
 void seek_error_details (char const *, off_t);
 void seek_warn (char const *);
 void seek_warn_details (char const *, off_t);
-void stat_fatal (char const *);
+void stat_fatal (char const *) __attribute__ ((noreturn));
 void stat_error (char const *);
 void stat_warn (char const *);
 void symlink_error (char const *, char const *);
@@ -98,8 +98,9 @@ void unlink_error (char const *);
 void utime_error (char const *);
 void waitpid_error (char const *);
 void write_error (char const *);
+void write_error_details (char const *, size_t, size_t);
 
-void pax_exit (void);
+void pax_exit (void) __attribute__ ((noreturn));
 void fatal_exit (void) __attribute__ ((noreturn));
 
 #define STRINGIFY_BIGINT(i, b) umaxtostr (i, b)
index cb645db5d9a4156200d5350367c0fa95322b7c81..3aee42865398af40ddb4ef6f7fd47d668f517e88 100644 (file)
@@ -121,7 +121,7 @@ do_command (int handle, const char *buffer)
   /* Save the current pipe handler and try to make the request.  */
 
   size_t length = strlen (buffer);
-  RETSIGTYPE (*pipe_handler) () = signal (SIGPIPE, SIG_IGN);
+  RETSIGTYPE (*pipe_handler) (int) = signal (SIGPIPE, SIG_IGN);
   ssize_t written = full_write (WRITE_SIDE (handle), buffer, length);
   signal (SIGPIPE, pipe_handler);
 
@@ -428,7 +428,7 @@ rmt_open__ (const char *file_name, int open_mode, int bias,
   if (gethostbyname (remote_host) == NULL)
     error (EXIT_ON_EXEC_ERROR, 0, _("Cannot connect to %s: resolve failed"),
           remote_host);
-         
+
   if (remote_user && *remote_user == '\0')
     remote_user = 0;
 
@@ -596,7 +596,7 @@ size_t
 rmt_write__ (int handle, char *buffer, size_t length)
 {
   char command_buffer[COMMAND_BUFFER_SIZE];
-  RETSIGTYPE (*pipe_handler) ();
+  RETSIGTYPE (*pipe_handler) (int);
   size_t written;
 
   sprintf (command_buffer, "W%lu\n", (unsigned long) length);
@@ -715,7 +715,7 @@ rmt_ioctl__ (int handle, int operation, char *argument)
            errno = EOVERFLOW;
            return -1;
          }
-       
+
        for (; status > 0; status -= counter, argument += counter)
          {
            counter = safe_read (READ_SIDE (handle), argument, status);
index 819425bbb73bac8bd659edfb272be20ab1ab865f..d3ca5bacc53c41470f72b4c0406232fd6d46127d 100644 (file)
@@ -1,5 +1,5 @@
-# argp.m4 serial 10
-dnl Copyright (C) 2003-2007, 2009-2010 Free Software Foundation, Inc.
+# argp.m4 serial 11
+dnl Copyright (C) 2003-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -32,20 +32,20 @@ AC_DEFUN([gl_ARGP],
   # be defined and other not, I prefer to stay on the safe side and to
   # test each one separately.
   AC_MSG_CHECKING([whether program_invocation_name is defined])
-  AC_TRY_LINK([#include <argp.h>],
-              [ program_invocation_name = "test"; ],
-              AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1],
-                 [Define if program_invocation_name is defined])
-                 AC_MSG_RESULT([yes])],
-              [ AC_MSG_RESULT([no])] )
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <argp.h>]],
+                                  [[program_invocation_name = "test";]])],
+                 [AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1],
+                            [Define if program_invocation_name is defined])
+                  AC_MSG_RESULT([yes])],
+                 [AC_MSG_RESULT([no])])
 
   AC_MSG_CHECKING([whether program_invocation_short_name is defined])
-  AC_TRY_LINK([#include <argp.h>],
-              [ program_invocation_short_name = "test"; ],
-              AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
-                 [Define if program_invocation_short_name is defined])
-                 AC_MSG_RESULT([yes])],
-              [ AC_MSG_RESULT([no])] )
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <argp.h>]],
+                                  [[program_invocation_short_name = "test";]])],
+                 [AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
+                            [Define if program_invocation_short_name is defined])
+                  AC_MSG_RESULT([yes])],
+                 [AC_MSG_RESULT([no])])
 
   AC_CHECK_DECLS_ONCE([clearerr_unlocked])
   AC_CHECK_DECLS_ONCE([feof_unlocked])
diff --git a/m4/asm-underscore.m4 b/m4/asm-underscore.m4
new file mode 100644 (file)
index 0000000..1736cc4
--- /dev/null
@@ -0,0 +1,48 @@
+# asm-underscore.m4 serial 1
+dnl Copyright (C) 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
+
+# gl_ASM_SYMBOL_PREFIX
+# Tests for the prefix of C symbols at the assembly language level and the
+# linker level. This prefix is either an underscore or empty. Defines the
+# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
+# a stringified variant of this prefix.
+
+AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
+[
+  dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
+  dnl 1. It works only for GCC.
+  dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
+  AC_CACHE_CHECK(
+    [whether C symbols are prefixed with underscore at the linker level],
+    [gl_cv_prog_as_underscore],
+    [cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" int foo (void);
+#endif
+int foo(void) { return 0; }
+EOF
+     # Look for the assembly language name in the .s file.
+     AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c) >/dev/null 2>&1
+     if grep _foo conftest.s >/dev/null ; then
+       gl_cv_prog_as_underscore=yes
+     else
+       gl_cv_prog_as_underscore=no
+     fi
+     rm -f conftest*
+    ])
+  if test $gl_cv_prog_as_underscore = yes; then
+    USER_LABEL_PREFIX=_
+  else
+    USER_LABEL_PREFIX=
+  fi
+  AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
+    [Define to the prefix of C symbols at the assembler and linker level,
+     either an underscore or empty.])
+  ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
+  AC_SUBST([ASM_SYMBOL_PREFIX])
+])
index 260cba6a60b42b3b55f5112afb10baac6e72a9d1..f4a97c3c571f133dcef714fad8baa1667b4564d6 100644 (file)
@@ -1,4 +1,4 @@
-# serial 5
+# serial 6
 
 # Copyright (C) 2002, 2005, 2009, 2010 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
@@ -7,13 +7,13 @@
 
 AC_DEFUN([gl_BISON],
 [
-  # getdate.y works with bison only.
+  # parse-datetime.y works with bison only.
   : ${YACC='bison -y'}
 dnl
 dnl Declaring YACC & YFLAGS precious will not be necessary after GNULIB
 dnl requires an Autoconf greater than 2.59c, but it will probably still be
 dnl useful to override the description of YACC in the --help output, re
-dnl getdate.y assuming `bison -y'.
+dnl parse-datetime.y assuming `bison -y'.
   AC_ARG_VAR([YACC],
 [The `Yet Another C Compiler' implementation to use.  Defaults to `bison -y'.
 Values other than `bison -y' will most likely break on most systems.])dnl
index 2c75c8fb02a6e8794a140f44f4ce49d86028e4df..b16b1f020a94bef677777b9de347853952144cb8 100644 (file)
@@ -1,4 +1,4 @@
-# btowc.m4 serial 5
+# btowc.m4 serial 7
 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -18,10 +18,40 @@ AC_DEFUN([gl_FUNC_BTOWC],
     HAVE_BTOWC=0
   else
 
-    dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF.
     AC_REQUIRE([AC_PROG_CC])
     AC_REQUIRE([gt_LOCALE_FR])
     AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+    dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0.
+    AC_CACHE_CHECK([whether btowc(0) is correct],
+      [gl_cv_func_btowc_nul],
+      [
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+int main ()
+{
+  if (btowc ('\0') != 0)
+    return 1;
+  return 0;
+}]])],
+          [gl_cv_func_btowc_nul=yes],
+          [gl_cv_func_btowc_nul=no],
+          [
+changequote(,)dnl
+           case "$host_os" in
+                      # Guess no on Cygwin.
+             cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
+                      # Guess yes otherwise.
+             *)       gl_cv_func_btowc_nul="guessing yes" ;;
+           esac
+changequote([,])dnl
+          ])
+      ])
+
+    dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF.
     AC_CACHE_CHECK([whether btowc(EOF) is correct],
       [gl_cv_func_btowc_eof],
       [
@@ -36,7 +66,8 @@ changequote(,)dnl
         esac
 changequote([,])dnl
         if test $LOCALE_FR != none; then
-          AC_TRY_RUN([
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <stdio.h>
 #include <string.h>
@@ -49,12 +80,17 @@ int main ()
         return 1;
     }
   return 0;
-}],
+}]])],
             [gl_cv_func_btowc_eof=yes],
             [gl_cv_func_btowc_eof=no],
             [:])
         fi
       ])
+
+    case "$gl_cv_func_btowc_nul" in
+      *yes) ;;
+      *) REPLACE_BTOWC=1 ;;
+    esac
     case "$gl_cv_func_btowc_eof" in
       *yes) ;;
       *) REPLACE_BTOWC=1 ;;
index 0c32fa39ff623c068bd5ecb3d5d1927c0acbf12d..ea3fe4c4c891dffc953553b735d01279d08fc606 100644 (file)
@@ -1,4 +1,4 @@
-# serial 22
+# serial 23
 # Determine whether we need the chown wrapper.
 
 dnl Copyright (C) 1997-2001, 2003-2005, 2007, 2009-2010 Free Software
@@ -43,6 +43,7 @@ AC_DEFUN_ONCE([gl_FUNC_CHOWN],
 
     dnl Solaris 9 ignores trailing slash.
     dnl FreeBSD 7.2 mishandles trailing slash on symlinks.
+    dnl Likewise for AIX 7.1.
     AC_CACHE_CHECK([whether chown honors trailing slash],
       [gl_cv_func_chown_slash_works],
       [touch conftest.file && rm -f conftest.link
diff --git a/m4/cloexec.m4 b/m4/cloexec.m4
new file mode 100644 (file)
index 0000000..c75595c
--- /dev/null
@@ -0,0 +1,10 @@
+#serial 6
+dnl Copyright (C) 2004-2006, 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CLOEXEC],
+[
+  AC_LIBOBJ([cloexec])
+])
index a53c04260c0f5c1c347210fb7eb7e4ff63b41cb1..f722b2e86aad75915eccd7d30f7a4cfbe7975167 100644 (file)
@@ -1,4 +1,4 @@
-# codeset.m4 serial 4 (gettext-0.18)
+# codeset.m4 serial 5 (gettext-0.18.2)
 dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -9,10 +9,12 @@ dnl From Bruno Haible.
 AC_DEFUN([AM_LANGINFO_CODESET],
 [
   AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
-    [AC_TRY_LINK([#include <langinfo.h>],
-      [char* cs = nl_langinfo(CODESET); return !cs;],
-      [am_cv_langinfo_codeset=yes],
-      [am_cv_langinfo_codeset=no])
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <langinfo.h>]],
+          [[char* cs = nl_langinfo(CODESET); return !cs;]])],
+       [am_cv_langinfo_codeset=yes],
+       [am_cv_langinfo_codeset=no])
     ])
   if test $am_cv_langinfo_codeset = yes; then
     AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
index c3292d9cc07270f029f4cbc7616c8552df3837e5..8d9d565479adccc10ed7895a0618cd5dd6fa268c 100644 (file)
@@ -1,4 +1,4 @@
-# dirent_h.m4 serial 10
+# dirent_h.m4 serial 13
 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -32,9 +32,9 @@ AC_DEFUN([gl_DIRENT_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_DIRENT_H_DEFAULTS],
@@ -46,10 +46,12 @@ AC_DEFUN([gl_DIRENT_H_DEFAULTS],
   GNULIB_ALPHASORT=0;   AC_SUBST([GNULIB_ALPHASORT])
   dnl Assume proper GNU behavior unless another module says otherwise.
   HAVE_DECL_DIRFD=1;    AC_SUBST([HAVE_DECL_DIRFD])
+  HAVE_DECL_FDOPENDIR=1;AC_SUBST([HAVE_DECL_FDOPENDIR])
   HAVE_FDOPENDIR=1;     AC_SUBST([HAVE_FDOPENDIR])
   HAVE_SCANDIR=1;       AC_SUBST([HAVE_SCANDIR])
   HAVE_ALPHASORT=1;     AC_SUBST([HAVE_ALPHASORT])
   REPLACE_CLOSEDIR=0;   AC_SUBST([REPLACE_CLOSEDIR])
+  REPLACE_DIRFD=0;      AC_SUBST([REPLACE_DIRFD])
   REPLACE_FDOPENDIR=0;  AC_SUBST([REPLACE_FDOPENDIR])
   REPLACE_OPENDIR=0;    AC_SUBST([REPLACE_OPENDIR])
 ])
index 7fefa2e483acfa164b4109829b0339dff123e2a3..48b7bae1a846d549a14a63eb5aa9cdff5d4cc0d6 100644 (file)
@@ -1,4 +1,4 @@
-# serial 17   -*- Autoconf -*-
+# serial 18   -*- Autoconf -*-
 
 dnl Find out how to get the file descriptor associated with an open DIR*.
 
@@ -40,11 +40,13 @@ AC_DEFUN([gl_FUNC_DIRFD],
        gl_cv_func_dirfd_macro=yes,
        gl_cv_func_dirfd_macro=no)])
 
-  # Use the replacement only if we have no function, macro,
-  # or declaration with that name.
-  if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$gl_cv_func_dirfd_macro \
-      = no,no,no; then
-    AC_REPLACE_FUNCS([dirfd])
+  # Use the replacement only if we have no function or macro with that name.
+  if test $ac_cv_func_dirfd,$gl_cv_func_dirfd_macro = no,no; then
+    if test $ac_cv_have_decl_dirfd = yes; then
+      # If the system declares dirfd already, let's declare rpl_dirfd instead.
+      REPLACE_DIRFD=1
+    fi
+    AC_LIBOBJ([dirfd])
     AC_CACHE_CHECK(
               [how to get the file descriptor associated with an open DIR*],
                    gl_cv_sys_dir_fd_member_name,
index 5f50d6e3b02e22fbee18e10803044fac5ff89a57..b9dc2ef27e543825c4b1c4aae1309b186b009594 100644 (file)
@@ -1,4 +1,4 @@
-# environ.m4 serial 3
+# environ.m4 serial 5
 dnl Copyright (C) 2001-2004, 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -22,14 +22,16 @@ AC_DEFUN([gt_CHECK_VAR_DECL],
   define([gt_cv_var], [gt_cv_var_]$2[_declaration])
   AC_MSG_CHECKING([if $2 is properly declared])
   AC_CACHE_VAL([gt_cv_var], [
-    AC_TRY_COMPILE([$1
-      extern struct { int foo; } $2;],
-      [$2.foo = 1;],
-      gt_cv_var=no,
-      gt_cv_var=yes)])
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[$1
+           extern struct { int foo; } $2;]],
+         [[$2.foo = 1;]])],
+      [gt_cv_var=no],
+      [gt_cv_var=yes])])
   AC_MSG_RESULT([$gt_cv_var])
   if test $gt_cv_var = yes; then
-    AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_DECL], 1,
+    AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1,
               [Define if you have the declaration of $2.])
   fi
   undefine([gt_cv_var])
index d02a039363dda9dbd4eaf43d40e9cdbccb699446..e4325ac660e190773f22a946b03488ec3943a162 100644 (file)
@@ -1,5 +1,5 @@
-# errno_h.m4 serial 6
-dnl Copyright (C) 2004, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+# errno_h.m4 serial 7
+dnl Copyright (C) 2004, 2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -37,6 +37,9 @@ booboo
 #if !defined ESTALE
 booboo
 #endif
+#if !defined EDQUOT
+booboo
+#endif
 #if !defined ECANCELED
 booboo
 #endif
index 9f1307a428e297d89b8ef96a9affe82dcf091384..dd5a197b6ec9214bc06794bb437cc246b93010b3 100644 (file)
@@ -1,4 +1,4 @@
-#serial 12
+#serial 13
 
 # Copyright (C) 1996-1998, 2001-2004, 2009-2010 Free Software Foundation, Inc.
 #
@@ -13,6 +13,23 @@ AC_DEFUN([gl_ERROR],
   gl_PREREQ_ERROR
 ])
 
+# Redefine AC_FUNC_ERROR_AT_LINE, because it is no longer maintained in
+# Autoconf.
+AC_DEFUN([AC_FUNC_ERROR_AT_LINE],
+[
+  AC_LIBSOURCES([error.h, error.c])dnl
+  AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <error.h>]],
+          [[error_at_line (0, 0, "", 0, "an error occurred");]])],
+       [ac_cv_lib_error_at_line=yes],
+       [ac_cv_lib_error_at_line=no])])
+  if test $ac_cv_lib_error_at_line = no; then
+    AC_LIBOBJ([error])
+  fi
+])
+
 # Prerequisites of lib/error.c.
 AC_DEFUN([gl_PREREQ_ERROR],
 [
index c05e9255577ca727ff4f5522c944cab98e318ae0..7bc691def2755cd00e7b92ee26cd8b6aaea0ff55 100644 (file)
@@ -1,4 +1,4 @@
-# fchdir.m4 serial 13
+# fchdir.m4 serial 14
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -11,7 +11,7 @@ AC_DEFUN([gl_FUNC_FCHDIR],
   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
   AC_CHECK_FUNCS_ONCE([fchdir])
   if test $ac_cv_func_fchdir = no; then
-    REPLACE_FCHDIR=1
+    HAVE_FCHDIR=0
     AC_LIBOBJ([fchdir])
     gl_PREREQ_FCHDIR
     AC_DEFINE([REPLACE_FCHDIR], [1],
index 67167cbdab440897db2cf4839a7a34d61bf37ccf..1adacc8ab7898d257a6900c435dfe653af26fb8e 100644 (file)
@@ -1,5 +1,5 @@
-# fcntl-o.m4 serial 1
-dnl Copyright (C) 2006, 20092010 Free Software Foundation, Inc.
+# fcntl-o.m4 serial 2
+dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -12,7 +12,11 @@ dnl Written by Paul Eggert.
 AC_DEFUN([gl_FCNTL_O_FLAGS],
 [
   dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
-  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
+  dnl AC_GNU_SOURCE.
+  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
+    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
+    [AC_REQUIRE([AC_GNU_SOURCE])])
   AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
     [AC_RUN_IFELSE(
        [AC_LANG_PROGRAM(
index 67122e5ccb9b4d6839c94ca0b44d257c53f638db..e41915c326b7a29458d34f82ef36a0e2549e6d75 100644 (file)
@@ -1,4 +1,4 @@
-# serial 11
+# serial 12
 # Configure fcntl.h.
 dnl Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
@@ -24,9 +24,9 @@ AC_DEFUN([gl_FCNTL_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_FCNTL_H_DEFAULTS],
index 7282d4b063f187a215ae389370dac2f3c139cbde..0908e1f8c9fed45b2b26eb06b815c5f0551c8c54 100644 (file)
@@ -1,4 +1,4 @@
-# serial 3
+# serial 4
 # See if we need to provide fdopendir.
 
 dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
@@ -11,6 +11,10 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_FDOPENDIR],
 [
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  dnl FreeBSD 7.3 has the function, but failed to declare it.
+  AC_CHECK_DECLS([fdopendir], [], [HAVE_DECL_FDOPENDIR=0], [[
+#include <dirent.h>
+    ]])
   AC_CHECK_FUNCS_ONCE([fdopendir])
   if test $ac_cv_func_fdopendir = no; then
     AC_LIBOBJ([openat-proc])
@@ -23,6 +27,9 @@ AC_DEFUN([gl_FUNC_FDOPENDIR],
       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
 #include <dirent.h>
 #include <fcntl.h>
+#if !HAVE_DECL_FDOPENDIR
+extern DIR *fdopendir (int);
+#endif
 ]], [int fd = open ("conftest.c", O_RDONLY);
      if (fd < 0) return 2;
      return !!fdopendir (fd);])],
diff --git a/m4/filenamecat.m4 b/m4/filenamecat.m4
new file mode 100644 (file)
index 0000000..236e5b0
--- /dev/null
@@ -0,0 +1,19 @@
+# filenamecat.m4 serial 10
+dnl Copyright (C) 2002-2006, 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FILE_NAME_CONCAT],
+[
+  AC_REQUIRE([gl_FILE_NAME_CONCAT_LGPL])
+  AC_LIBOBJ([filenamecat])
+])
+
+AC_DEFUN([gl_FILE_NAME_CONCAT_LGPL],
+[
+  AC_LIBOBJ([filenamecat-lgpl])
+
+  dnl Prerequisites of lib/filenamecat-lgpl.c.
+  AC_CHECK_FUNCS_ONCE([mempcpy])
+])
index a74a0d957f2ea89a010102dba7da48add2fccbfe..f6099db405355e4e07b7f1f853051e2a5613d732 100644 (file)
@@ -1,4 +1,4 @@
-# float_h.m4 serial 3
+# float_h.m4 serial 4
 dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -10,7 +10,7 @@ AC_DEFUN([gl_FLOAT_H],
   AC_REQUIRE([AC_CANONICAL_HOST])
   FLOAT_H=
   case "$host_os" in
-    beos* | openbsd*)
+    beos* | openbsd* | mirbsd*)
       FLOAT_H=float.h
       gl_CHECK_NEXT_HEADERS([float.h])
       ;;
index 212ead57291fe6fcb88929b91250c891de3b012f..84bcabd9ff122254a55cad66724ec8183e27bff8 100644 (file)
@@ -20,7 +20,9 @@ AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
   FNMATCH_H=
-  gl_fnmatch_required_lowercase=`echo $gl_fnmatch_required | tr 'A-Z' 'a-z'`
+  gl_fnmatch_required_lowercase=`
+    echo $gl_fnmatch_required | tr '[[A-Z]]' '[[a-z]]'
+  `
   gl_fnmatch_cache_var="gl_cv_func_fnmatch_${gl_fnmatch_required_lowercase}"
   AC_CACHE_CHECK([for working $gl_fnmatch_required fnmatch],
     [$gl_fnmatch_cache_var],
index 5f7f97729c067cdbaec9527fefd3cabe4020e9cc..b97df53377bdee9e5849be768222607db77d21d2 100644 (file)
@@ -1,4 +1,4 @@
-# fseeko.m4 serial 7
+# fseeko.m4 serial 9
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -7,9 +7,25 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_FSEEKO],
 [
   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([gl_HAVE_FSEEKO])
   AC_REQUIRE([gl_STDIN_LARGE_OFFSET])
 
+  if test $gl_cv_func_fseeko = no; then
+    HAVE_FSEEKO=0
+    gl_REPLACE_FSEEKO
+  else
+    if test $gl_cv_var_stdin_large_offset = no; then
+      gl_REPLACE_FSEEKO
+    fi
+  fi
+])
+
+dnl Tests whether fseeko is available.
+dnl Result is gl_cv_func_fseeko.
+AC_DEFUN([gl_HAVE_FSEEKO],
+[
+  AC_REQUIRE([AC_PROG_CC])
+
   dnl Persuade glibc <stdio.h> to declare fseeko().
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
@@ -19,17 +35,16 @@ AC_DEFUN([gl_FUNC_FSEEKO],
 ]], [fseeko (stdin, 0, 0);])],
         [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no])
     ])
-  if test $gl_cv_func_fseeko = no \
-      || test $gl_cv_var_stdin_large_offset = no; then
-    gl_REPLACE_FSEEKO
-  fi
 ])
 
 AC_DEFUN([gl_REPLACE_FSEEKO],
 [
-  AC_LIBOBJ([fseeko])
   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  REPLACE_FSEEKO=1
+  AC_REQUIRE([gl_HAVE_FSEEKO])
+  if test $gl_cv_func_fseeko = yes; then
+    REPLACE_FSEEKO=1
+  fi
+  AC_LIBOBJ([fseeko])
   dnl If we are also using the fseek module, then fseek needs replacing, too.
   m4_ifdef([gl_REPLACE_FSEEK], [gl_REPLACE_FSEEK])
 ])
diff --git a/m4/ftruncate.m4 b/m4/ftruncate.m4
deleted file mode 100644 (file)
index 95e371b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# serial 14
-
-# See if we need to emulate a missing ftruncate function using fcntl or chsize.
-
-# Copyright (C) 2000-2001, 2003-2007, 2009-2010 Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# FIXME: remove this macro, along with all uses of HAVE_FTRUNCATE in 2010,
-# if the check below provokes no more reports.  So far, the only report
-# arose from a test build of this gnulib module, cross-compiling to mingw:
-# <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/9203>
-
-AC_DEFUN([gl_FUNC_FTRUNCATE],
-[
-  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_CHECK_FUNCS_ONCE([ftruncate])
-  if test $ac_cv_func_ftruncate = no; then
-    HAVE_FTRUNCATE=0
-    AC_LIBOBJ([ftruncate])
-    gl_PREREQ_FTRUNCATE
-    case "$host_os" in
-      mingw*)
-        # Yes, we know mingw lacks ftruncate.
-        ;;
-      *)
-        # If someone lacks ftruncate, make configure fail, and request
-        # a bug report to inform us about it.
-        if test x"$SKIP_FTRUNCATE_CHECK" != xyes; then
-          AC_MSG_FAILURE([Your system lacks the ftruncate function.
-              Please report this, along with the output of "uname -a", to the
-              bug-coreutils@gnu.org mailing list.  To continue past this point,
-              rerun configure with SKIP_FTRUNCATE_CHECK=yes.
-              E.g., ./configure SKIP_FTRUNCATE_CHECK=yes])
-        fi
-    esac
-  fi
-])
-
-# Prerequisites of lib/ftruncate.c.
-AC_DEFUN([gl_PREREQ_FTRUNCATE],
-[
-  AC_CHECK_FUNCS([chsize])
-])
diff --git a/m4/futimens.m4 b/m4/futimens.m4
new file mode 100644 (file)
index 0000000..1212fb9
--- /dev/null
@@ -0,0 +1,61 @@
+# serial 5
+# See if we need to provide futimens replacement.
+
+dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_FUTIMENS],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([futimens])
+  if test $ac_cv_func_futimens = no; then
+    HAVE_FUTIMENS=0
+    AC_LIBOBJ([futimens])
+  else
+    AC_CACHE_CHECK([whether futimens works],
+      [gl_cv_func_futimens_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+]], [[struct timespec ts[2] = { { 1, UTIME_OMIT }, { 1, UTIME_NOW } };
+      int fd = creat ("conftest.file", 0600);
+      struct stat st;
+      if (fd < 0) return 1;
+      errno = 0;
+      if (futimens (AT_FDCWD, NULL) == 0) return 2;
+      if (errno != EBADF) return 3;
+      if (futimens (fd, ts)) return 4;
+      sleep (1);
+      ts[0].tv_nsec = UTIME_NOW;
+      ts[1].tv_nsec = UTIME_OMIT;
+      if (futimens (fd, ts)) return 5;
+      if (fstat (fd, &st)) return 6;
+      if (st.st_ctime < st.st_atime) return 7;
+      ]])],
+dnl FIXME: simplify this in 2012, when file system bugs are no longer common
+         [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef __linux__
+/* The Linux kernel added futimens in 2.6.22, but has bugs with UTIME_OMIT
+   in several file systems as recently as 2.6.32.  Always replace futimens
+   to support older kernels.  */
+choke me
+#endif
+      ]])],
+           [gl_cv_func_futimens_works=yes],
+           [gl_cv_func_futimens_works="needs runtime check"])],
+         [gl_cv_func_futimens_works=no],
+         [gl_cv_func_futimens_works="guessing no"])
+      rm -f conftest.file])
+    if test "$gl_cv_func_futimens_works" != yes; then
+      REPLACE_FUTIMENS=1
+      AC_LIBOBJ([futimens])
+    fi
+  fi
+])
index ecf6192842e11b38144840c6869d8c02b2c21657..04ff1419b6032fa8aa329994c23cda515f8f0da3 100644 (file)
@@ -183,8 +183,6 @@ main ()
   no,*)
     AC_DEFINE([HAVE_PARTLY_WORKING_GETCWD], [1],
       [Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
-       setting errno to ERANGE, ENAMETOOLONG, or ENOENT.  If __GETCWD_PREFIX
-       is not defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD
-       is defined.]);;
+       setting errno to ERANGE, ENAMETOOLONG, or ENOENT.]);;
   esac
 ])
diff --git a/m4/getdate.m4 b/m4/getdate.m4
deleted file mode 100644 (file)
index 5f98229..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# getdate.m4 serial 16
-dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Define HAVE_COMPOUND_LITERALS if the C compiler supports compound literals
-dnl as in ISO C99.
-dnl Note that compound literals such as (struct s) { 3, 4 } can be used for
-dnl initialization of stack-allocated variables, but are not constant
-dnl expressions and therefore cannot be used as initializer for global or
-dnl static variables (even though gcc supports this in pre-C99 mode).
-AC_DEFUN([gl_C_COMPOUND_LITERALS],
-[
-  AC_CACHE_CHECK([for compound literals], [gl_cv_compound_literals],
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[struct s { int i, j; };]],
-      [[struct s t = (struct s) { 3, 4 };
-        if (t.i != 0) return 0;]])],
-    gl_cv_compound_literals=yes,
-    gl_cv_compound_literals=no)])
-  if test $gl_cv_compound_literals = yes; then
-    AC_DEFINE([HAVE_COMPOUND_LITERALS], [1],
-      [Define if you have compound literals.])
-  fi
-])
-
-AC_DEFUN([gl_GETDATE],
-[
-  dnl Prerequisites of lib/getdate.h.
-  AC_REQUIRE([AM_STDBOOL_H])
-  AC_REQUIRE([gl_TIMESPEC])
-
-  dnl Prerequisites of lib/getdate.y.
-  AC_REQUIRE([gl_BISON])
-  AC_REQUIRE([gl_C_COMPOUND_LITERALS])
-  AC_STRUCT_TIMEZONE
-  AC_REQUIRE([gl_CLOCK_TIME])
-  AC_REQUIRE([gl_TM_GMTOFF])
-  AC_COMPILE_IFELSE(
-    [AC_LANG_SOURCE([[
-#include <time.h> /* for time_t */
-#include <limits.h> /* for CHAR_BIT, LONG_MIN, LONG_MAX */
-#define TYPE_MINIMUM(t) \
-  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
-#define TYPE_MAXIMUM(t) \
-  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
-typedef int verify_min[2 * (LONG_MIN <= TYPE_MINIMUM (time_t)) - 1];
-typedef int verify_max[2 * (TYPE_MAXIMUM (time_t) <= LONG_MAX) - 1];
-       ]])],
-    [AC_DEFINE([TIME_T_FITS_IN_LONG_INT], [1],
-       [Define to 1 if all 'time_t' values fit in a 'long int'.])
-    ])
-])
index a19805eaa4041a41462fd3001146e4dd70ad8f73..d05e9d9143c70b3f3afd3caf0eb30f17fb9c1b4a 100644 (file)
@@ -1,4 +1,4 @@
-# getopt.m4 serial 24
+# getopt.m4 serial 31
 dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -50,6 +50,7 @@ AC_DEFUN([gl_GETOPT_IFELSE],
 AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
 [
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON
 
   dnl Persuade Solaris <unistd.h> to declare optarg, optind, opterr, optopt.
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
@@ -79,8 +80,13 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
   dnl Existence of the variable, in and of itself, is not a reason to replace
   dnl getopt, but knowledge of the variable is needed to determine how to
   dnl reset and whether a reset reparses the environment.
-  if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
-    AC_CHECK_DECLS([optreset], [], [],
+  dnl Solaris supports neither optreset nor optind=0, but keeps no state that
+  dnl needs a reset beyond setting optind=1; detect Solaris by getopt_clip.
+  if test -z "$gl_replace_getopt"; then
+    AC_CHECK_DECLS([optreset], [],
+      [AC_CHECK_DECLS([getopt_clip], [], [],
+        [[#include <getopt.h>]])
+      ],
       [[#include <getopt.h>]])
   fi
 
@@ -89,17 +95,21 @@ AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
   dnl is left over from earlier calls, and neither setting optind = 0 nor
   dnl setting optreset = 1 get rid of this internal state.
   dnl POSIX is silent on optind vs. optreset, so we allow either behavior.
+  dnl POSIX 2008 does not specify leading '+' behavior, but see
+  dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on
+  dnl the next version of POSIX.  For now, we only guarantee leading '+'
+  dnl behavior with getopt-gnu.
   if test -z "$gl_replace_getopt"; then
     AC_CACHE_CHECK([whether getopt is POSIX compatible],
       [gl_cv_func_getopt_posix],
       [
-        dnl This test fails on mingw and succeeds on all other platforms.
+        dnl This test fails on mingw and succeeds on many other platforms.
         AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
 
-#if !HAVE_DECL_OPTRESET
+#if !HAVE_DECL_OPTRESET && !HAVE_DECL_GETOPT_CLIP
 # define OPTIND_MIN 0
 #else
 # define OPTIND_MIN 1
@@ -167,14 +177,29 @@ main ()
     if (!(optind == 1))
       return 12;
   }
+  /* Detect MacOS 10.5, AIX 7.1 bug.  */
+  {
+    char *argv[3] = { "program", "-ab", NULL };
+    optind = OPTIND_MIN;
+    opterr = 0;
+    if (getopt (2, argv, "ab:") != 'a')
+      return 13;
+    if (getopt (2, argv, "ab:") != '?')
+      return 14;
+    if (optopt != 'b')
+      return 15;
+    if (optind != 2)
+      return 16;
+  }
 
   return 0;
 }
 ]])],
           [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no],
           [case "$host_os" in
-             mingw*) gl_cv_func_getopt_posix="guessing no";;
-             *)      gl_cv_func_getopt_posix="guessing yes";;
+             mingw*)         gl_cv_func_getopt_posix="guessing no";;
+             darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
+             *)              gl_cv_func_getopt_posix="guessing yes";;
            esac
           ])
       ])
@@ -189,7 +214,16 @@ main ()
        # optstring is necessary for programs like m4 that have POSIX-mandated
        # semantics for supporting options interspersed with files.
        # Also, since getopt_long is a GNU extension, we require optind=0.
-       gl_had_POSIXLY_CORRECT=${POSIXLY_CORRECT:+yes}
+       # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
+       # so take care to revert to the correct (non-)export state.
+dnl GNU Coding Standards currently allow awk but not env; besides, env
+dnl is ambiguous with environment values that contain newlines.
+       gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+       case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+         xx) gl_had_POSIXLY_CORRECT=exported ;;
+         x)  gl_had_POSIXLY_CORRECT=yes      ;;
+         *)  gl_had_POSIXLY_CORRECT=         ;;
+       esac
        POSIXLY_CORRECT=1
        export POSIXLY_CORRECT
        AC_RUN_IFELSE(
@@ -234,6 +268,15 @@ main ()
                if (getopt (3, argv, "-p") != 'p')
                  return 7;
              }
+             /* This code fails on glibc 2.11.  */
+             {
+               char *argv[] = { "program", "-b", "-a", NULL };
+               optind = opterr = 0;
+               if (getopt (3, argv, "+:a:b") != 'b')
+                 return 8;
+               if (getopt (3, argv, "+:a:b") != ':')
+                 return 9;
+             }
              return 0;
            ]])],
         [gl_cv_func_getopt_gnu=yes],
@@ -245,9 +288,11 @@ main ()
            *)                   gl_cv_func_getopt_gnu=yes;;
          esac
         ])
-       if test "$gl_had_POSIXLY_CORRECT" != yes; then
-         AS_UNSET([POSIXLY_CORRECT])
-       fi
+       case $gl_had_POSIXLY_CORRECT in
+         exported) ;;
+         yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;;
+         *) AS_UNSET([POSIXLY_CORRECT]) ;;
+       esac
       ])
     if test "$gl_cv_func_getopt_gnu" = "no"; then
       gl_replace_getopt=yes
index 8968516e2c7f462e4ed028cd286193d46304bb82..313ad7fa26c4bc3f28179c06ce16095ca8d11ba3 100644 (file)
@@ -1,4 +1,4 @@
-# getpagesize.m4 serial 7
+# getpagesize.m4 serial 8
 dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -27,4 +27,7 @@ AC_DEFUN([gl_FUNC_GETPAGESIZE],
       AC_LIBOBJ([getpagesize])
       ;;
   esac
+  dnl Also check whether it's declared.
+  dnl mingw has getpagesize() in libgcc.a but doesn't declare it.
+  AC_CHECK_DECL([getpagesize], , [HAVE_DECL_GETPAGESIZE=0])
 ])
index 9f0762ed8eec3b8252131f715f3bb3ed0b9dfffb..98289d847fd3976454a8bb975deb6ef34af9b45b 100644 (file)
@@ -1,4 +1,4 @@
-# gettext.m4 serial 62 (gettext-0.18)
+# gettext.m4 serial 64 (gettext-0.18.2)
 dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,7 @@ dnl They are *not* in the public domain.
 
 dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
 
 dnl Macro to add for using GNU gettext.
 
@@ -60,6 +60,8 @@ AC_DEFUN([AM_GNU_GETTEXT],
   ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
     [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
 ])])])])])
+  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
   ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
     [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
 ])])])])
@@ -155,12 +157,18 @@ changequote([,])dnl
         fi
 
         AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
-         [AC_TRY_LINK([#include <libintl.h>
+         [AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[
+#include <libintl.h>
 $gt_revision_test_code
 extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
-            [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+extern int *_nl_domain_bindings;
+               ]],
+               [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+               ]])],
             [eval "$gt_func_gnugettext_libc=yes"],
             [eval "$gt_func_gnugettext_libc=no"])])
 
@@ -181,35 +189,47 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_b
             gt_save_LIBS="$LIBS"
             LIBS="$LIBS $LIBINTL"
             dnl Now see whether libintl exists and does not depend on libiconv.
-            AC_TRY_LINK([#include <libintl.h>
+            AC_LINK_IFELSE(
+              [AC_LANG_PROGRAM(
+                 [[
+#include <libintl.h>
 $gt_revision_test_code
 extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias (const char *);],
-              [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+const char *_nl_expand_alias (const char *);
+                 ]],
+                 [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+                 ]])],
               [eval "$gt_func_gnugettext_libintl=yes"],
               [eval "$gt_func_gnugettext_libintl=no"])
             dnl Now see whether libintl exists and depends on libiconv.
             if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
               LIBS="$LIBS $LIBICONV"
-              AC_TRY_LINK([#include <libintl.h>
+              AC_LINK_IFELSE(
+                [AC_LANG_PROGRAM(
+                   [[
+#include <libintl.h>
 $gt_revision_test_code
 extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias (const char *);],
-                [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
-               [LIBINTL="$LIBINTL $LIBICONV"
-                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                eval "$gt_func_gnugettext_libintl=yes"
-               ])
+const char *_nl_expand_alias (const char *);
+                   ]],
+                   [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+                   ]])],
+                [LIBINTL="$LIBINTL $LIBICONV"
+                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                 eval "$gt_func_gnugettext_libintl=yes"
+                ])
             fi
             CPPFLAGS="$gt_save_CPPFLAGS"
             LIBS="$gt_save_LIBS"])
@@ -379,4 +399,4 @@ AC_DEFUN([AM_GNU_GETTEXT_NEED],
 
 dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
-             AC_DEFUN([gl_LOCK_EARLY], [])
+              AC_DEFUN([gl_LOCK_EARLY], [])
index 80ba26332fa6600589b57ba5efe4083dc5569110..4c7ac30d0fac314cfa28fc9788ef33917d234ad7 100644 (file)
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 13
+# gnulib-common.m4 serial 20
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -35,14 +35,71 @@ AC_DEFUN([gl_COMMON_BODY], [
    is a misnomer outside of parameter lists.  */
 #define _UNUSED_PARAMETER_ _GL_UNUSED
 ])
+  dnl Preparation for running test programs:
+  dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
+  dnl to /dev/tty, so they can be redirected to log files.  Such diagnostics
+  dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N.
+  LIBC_FATAL_STDERR_=1
+  export LIBC_FATAL_STDERR_
+])
+
+# gl_MODULE_INDICATOR_CONDITION
+# expands to a C preprocessor expression that evaluates to 1 or 0, depending
+# whether a gnulib module that has been requested shall be considered present
+# or not.
+AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
+# sets the shell variable that indicates the presence of the given module to
+# a C preprocessor expression that will evaluate to 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
+[
+  GNULIB_[]m4_translit([[$1]],
+    [abcdefghijklmnopqrstuvwxyz./-],
+    [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
 ])
 
 # gl_MODULE_INDICATOR([modulename])
-# defines a C macro indicating the presence of the given module.
+# defines a C macro indicating the presence of the given module
+# in a location where it can be used.
+#                                             |  Value  |   Value   |
+#                                             | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules:          |    1    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: |    0    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module not present at all:                  |    0    |     0     |
+# --------------------------------------------+---------+-----------+
 AC_DEFUN([gl_MODULE_INDICATOR],
 [
-  AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
-    [Define to 1 when using the gnulib module ]$1[.])
+  AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+    [gl_MODULE_INDICATOR_CONDITION],
+    [Define to a C preprocessor expression that evaluates to 1 or 0,
+     depending whether the gnulib module $1 shall be considered present.])
+])
+
+# gl_MODULE_INDICATOR_FOR_TESTS([modulename])
+# defines a C macro indicating the presence of the given module
+# in lib or tests. This is useful to determine whether the module
+# should be tested.
+#                                             |  Value  |   Value   |
+#                                             | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules:          |    1    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: |    1    |     1     |
+# --------------------------------------------+---------+-----------+
+# Module not present at all:                  |    0    |     0     |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
+[
+  AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+      [abcdefghijklmnopqrstuvwxyz./-],
+      [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when the gnulib module $1 should be tested.])
 ])
 
 # m4_foreach_w
@@ -81,6 +138,7 @@ m4_ifdef([AC_PROG_MKDIR_P], [
 # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
 # works.
 # This definition can be removed once autoconf >= 2.62 can be assumed.
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
   [ac_cv_c_restrict=no
@@ -118,6 +176,7 @@ AC_DEFUN([AC_C_RESTRICT],
    *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  esac
 ])
+])
 
 # gl_BIGENDIAN
 # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
index f9a584dd0e344a73c3602de217ec227c70c414ef..554fa54ef960e3316bcef339c4d870fd4cca8169 100644 (file)
@@ -14,7 +14,8 @@
 # This file represents the compiled summary of the specification in
 # gnulib-cache.m4. It lists the computed macro invocations that need
 # to be invoked from configure.ac.
-# In projects using CVS, this file can be treated like other built files.
+# In projects that use version control, this file can be treated like
+# other built files.
 
 
 # This macro should be invoked from ./configure.ac, in the section
@@ -28,13 +29,210 @@ AC_DEFUN([gl_EARLY],
   m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
   AC_REQUIRE([AC_PROG_RANLIB])
   AC_REQUIRE([AM_PROG_CC_C_O])
+  # Code from module alloca:
+  # Code from module alloca-opt:
+  # Code from module areadlink:
+  # Code from module areadlinkat:
+  # Code from module arg-nonnull:
+  # Code from module argmatch:
+  # Code from module argp:
+  # Code from module argp-version-etc:
+  # Code from module backupfile:
+  # Code from module bitrotate:
+  # Code from module btowc:
+  # Code from module c++defs:
+  # Code from module c-ctype:
+  # Code from module canonicalize-lgpl:
+  # Code from module chdir-long:
+  # Code from module chown:
+  # Code from module clock-time:
+  # Code from module cloexec:
+  # Code from module close:
+  # Code from module close-hook:
+  # Code from module close-stream:
+  # Code from module closeout:
+  # Code from module configmake:
+  # Code from module d-ino:
+  # Code from module dirent:
+  # Code from module dirent-safer:
+  # Code from module dirfd:
+  # Code from module dirname:
+  # Code from module dirname-lgpl:
+  # Code from module double-slash-root:
+  # Code from module dup2:
+  # Code from module environ:
+  # Code from module errno:
+  # Code from module error:
+  # Code from module exclude:
+  # Code from module exitfail:
+  # Code from module extensions:
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  # Code from module fchdir:
+  # Code from module fclose:
+  # Code from module fcntl:
+  # Code from module fcntl-h:
+  # Code from module fdopendir:
+  # Code from module fdutimensat:
+  # Code from module fileblocks:
+  # Code from module filenamecat-lgpl:
+  # Code from module float:
+  # Code from module fnmatch:
+  # Code from module fnmatch-gnu:
+  # Code from module fpending:
+  # Code from module fseeko:
   AC_REQUIRE([AC_FUNC_FSEEKO])
+  # Code from module full-write:
+  # Code from module futimens:
+  # Code from module getcwd:
+  # Code from module getdelim:
+  # Code from module getdtablesize:
+  # Code from module getline:
+  # Code from module getopt-gnu:
+  # Code from module getopt-posix:
+  # Code from module getpagesize:
+  # Code from module gettext:
+  # Code from module gettext-h:
+  # Code from module gettime:
+  # Code from module gettimeofday:
+  # Code from module gitlog-to-changelog:
+  # Code from module hash:
+  # Code from module havelib:
+  # Code from module human:
+  # Code from module include_next:
+  # Code from module inline:
+  # Code from module intprops:
+  # Code from module inttostr:
+  # Code from module inttypes:
+  # Code from module langinfo:
+  # Code from module lchown:
+  # Code from module link:
+  # Code from module link-follow:
+  # Code from module linkat:
+  # Code from module localcharset:
+  # Code from module lseek:
+  # Code from module lstat:
+  # Code from module malloc-gnu:
+  # Code from module malloc-posix:
+  # Code from module malloca:
+  # Code from module mbchar:
+  # Code from module mbrtowc:
+  # Code from module mbscasecmp:
+  # Code from module mbsinit:
+  # Code from module mbsrtowcs:
+  # Code from module mbuiter:
+  # Code from module memchr:
+  # Code from module mempcpy:
+  # Code from module memrchr:
+  # Code from module mkdir:
+  # Code from module mkdtemp:
+  # Code from module mkfifo:
+  # Code from module mkfifoat:
+  # Code from module mknod:
+  # Code from module mktime:
+  # Code from module modechange:
+  # Code from module multiarch:
+  # Code from module nl_langinfo:
+  # Code from module obstack:
+  # Code from module open:
+  # Code from module openat:
+  # Code from module openat-die:
+  # Code from module parse-datetime:
+  # Code from module pathmax:
+  # Code from module priv-set:
+  # Code from module progname:
+  # Code from module quote:
+  # Code from module quotearg:
+  # Code from module quotearg-simple:
+  # Code from module rawmemchr:
+  # Code from module readlink:
+  # Code from module readlinkat:
+  # Code from module realloc-posix:
+  # Code from module regex:
+  # Code from module rename:
+  # Code from module renameat:
+  # Code from module rmdir:
+  # Code from module rpmatch:
+  # Code from module safe-read:
+  # Code from module safe-write:
+  # Code from module same-inode:
+  # Code from module save-cwd:
+  # Code from module savedir:
+  # Code from module setenv:
+  # Code from module size_max:
+  # Code from module sleep:
+  # Code from module snprintf:
+  # Code from module ssize_t:
+  # Code from module stat:
+  # Code from module stat-macros:
+  # Code from module stat-time:
+  # Code from module stdarg:
   dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
   dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
   dnl AC_PROG_CC_STDC arranges for this.  With older Autoconf AC_PROG_CC_STDC
   dnl shouldn't hurt, though installers are on their own to set c99 mode.
   AC_REQUIRE([AC_PROG_CC_STDC])
+  # Code from module stdbool:
+  # Code from module stddef:
+  # Code from module stdint:
+  # Code from module stdio:
+  # Code from module stdlib:
+  # Code from module stpcpy:
+  # Code from module strcase:
+  # Code from module strchrnul:
+  # Code from module strdup-posix:
+  # Code from module streq:
+  # Code from module strerror:
+  # Code from module string:
+  # Code from module strings:
+  # Code from module strndup:
+  # Code from module strnlen:
+  # Code from module strnlen1:
+  # Code from module strtoimax:
+  # Code from module strtol:
+  # Code from module strtoll:
+  # Code from module strtoul:
+  # Code from module strtoull:
+  # Code from module strtoumax:
+  # Code from module symlink:
+  # Code from module symlinkat:
+  # Code from module sys_stat:
+  # Code from module sys_time:
+  # Code from module sysexits:
+  # Code from module tempname:
+  # Code from module time:
+  # Code from module time_r:
+  # Code from module timespec:
+  # Code from module unistd:
+  # Code from module unistd-safer:
+  # Code from module unitypes:
+  # Code from module uniwidth/base:
+  # Code from module uniwidth/width:
+  # Code from module unlink:
+  # Code from module unlinkdir:
+  # Code from module unlocked-io:
+  # Code from module unsetenv:
+  # Code from module utimens:
+  # Code from module utimensat:
+  # Code from module vasnprintf:
+  # Code from module vasprintf:
+  # Code from module verify:
+  # Code from module version-etc:
+  # Code from module version-etc-fsf:
+  # Code from module vsnprintf:
+  # Code from module warn-on-use:
+  # Code from module wchar:
+  # Code from module wcrtomb:
+  # Code from module wctype:
+  # Code from module wcwidth:
+  # Code from module write:
+  # Code from module xalloc:
+  # Code from module xalloc-die:
+  # Code from module xgetcwd:
+  # Code from module xsize:
+  # Code from module xstrndup:
+  # Code from module xstrtol:
+  # Code from module xstrtoumax:
+  # Code from module xvasprintf:
 ])
 
 # This macro should be invoked from ./configure.ac, in the section
@@ -45,6 +243,7 @@ AC_DEFUN([gl_INIT],
   gl_cond_libtool=false
   gl_libdeps=
   gl_ltlibdeps=
+  gl_m4_base='m4'
   m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
   m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
   m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
@@ -52,245 +251,477 @@ AC_DEFUN([gl_INIT],
   m4_pushdef([gl_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='gnu'
+  # Code from module alloca:
+  # Code from module alloca-opt:
   gl_FUNC_ALLOCA
+  # Code from module areadlink:
+  # Code from module areadlinkat:
+  gl_MODULE_INDICATOR([areadlinkat])
+  # Code from module arg-nonnull:
+  # Code from module argmatch:
   gl_ARGMATCH
+  # Code from module argp:
   gl_ARGP
   m4_ifdef([AM_XGETTEXT_OPTION],
     [AM_][XGETTEXT_OPTION([--flag=argp_error:2:c-format])
      AM_][XGETTEXT_OPTION([--flag=argp_failure:4:c-format])])
+  # Code from module argp-version-etc:
+  # Code from module backupfile:
   gl_BACKUPFILE
+  # Code from module bitrotate:
   AC_REQUIRE([AC_C_INLINE])
+  # Code from module btowc:
   gl_FUNC_BTOWC
   gl_WCHAR_MODULE_INDICATOR([btowc])
-  gl_FUNC_CANONICALIZE_FILENAME_MODE
-  gl_MODULE_INDICATOR([canonicalize])
+  # Code from module c++defs:
+  # Code from module c-ctype:
+  # Code from module canonicalize-lgpl:
+  gl_CANONICALIZE_LGPL
+  gl_MODULE_INDICATOR([canonicalize-lgpl])
   gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name])
+  gl_STDLIB_MODULE_INDICATOR([realpath])
+  # Code from module chdir-long:
   gl_FUNC_CHDIR_LONG
+  # Code from module chown:
   gl_FUNC_CHOWN
   gl_UNISTD_MODULE_INDICATOR([chown])
+  # Code from module clock-time:
   gl_CLOCK_TIME
+  # Code from module cloexec:
+  gl_CLOEXEC
+  gl_MODULE_INDICATOR_FOR_TESTS([cloexec])
+  # Code from module close:
   gl_FUNC_CLOSE
   gl_UNISTD_MODULE_INDICATOR([close])
+  # Code from module close-hook:
+  # Code from module close-stream:
   gl_CLOSE_STREAM
   gl_MODULE_INDICATOR([close-stream])
+  # Code from module closeout:
   gl_CLOSEOUT
+  # Code from module configmake:
+  # Code from module d-ino:
   gl_CHECK_TYPE_STRUCT_DIRENT_D_INO
+  # Code from module dirent:
   gl_DIRENT_H
+  # Code from module dirent-safer:
   gl_DIRENT_SAFER
   gl_MODULE_INDICATOR([dirent-safer])
+  # Code from module dirfd:
   gl_FUNC_DIRFD
   gl_DIRENT_MODULE_INDICATOR([dirfd])
+  # Code from module dirname:
   gl_DIRNAME
   gl_MODULE_INDICATOR([dirname])
+  # Code from module dirname-lgpl:
   gl_DIRNAME_LGPL
+  # Code from module double-slash-root:
   gl_DOUBLE_SLASH_ROOT
+  # Code from module dup2:
   gl_FUNC_DUP2
   gl_UNISTD_MODULE_INDICATOR([dup2])
+  # Code from module environ:
   gl_ENVIRON
   gl_UNISTD_MODULE_INDICATOR([environ])
+  # Code from module errno:
   gl_HEADER_ERRNO_H
+  # Code from module error:
   gl_ERROR
   m4_ifdef([AM_XGETTEXT_OPTION],
     [AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
      AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+  # Code from module exclude:
   gl_EXCLUDE
+  # Code from module exitfail:
+  # Code from module extensions:
+  # Code from module fchdir:
   gl_FUNC_FCHDIR
   gl_UNISTD_MODULE_INDICATOR([fchdir])
+  # Code from module fclose:
   gl_FUNC_FCLOSE
   gl_STDIO_MODULE_INDICATOR([fclose])
+  # Code from module fcntl:
   gl_FUNC_FCNTL
   gl_FCNTL_MODULE_INDICATOR([fcntl])
+  # Code from module fcntl-h:
   gl_FCNTL_H
+  # Code from module fdopendir:
   gl_FUNC_FDOPENDIR
   gl_DIRENT_MODULE_INDICATOR([fdopendir])
+  gl_MODULE_INDICATOR([fdopendir])
+  # Code from module fdutimensat:
+  AC_REQUIRE([AC_C_INLINE]) dnl because 'inline' is used in lib/utimens.h
+  gl_MODULE_INDICATOR([fdutimensat])
+  # Code from module fileblocks:
   gl_FILEBLOCKS
+  # Code from module filenamecat-lgpl:
+  gl_FILE_NAME_CONCAT_LGPL
+  # Code from module float:
   gl_FLOAT_H
+  # Code from module fnmatch:
   gl_FUNC_FNMATCH_POSIX
+  # Code from module fnmatch-gnu:
   gl_FUNC_FNMATCH_GNU
+  # Code from module fpending:
   gl_FUNC_FPENDING
+  # Code from module fseeko:
   gl_FUNC_FSEEKO
   gl_STDIO_MODULE_INDICATOR([fseeko])
-  gl_FUNC_FTRUNCATE
-  gl_UNISTD_MODULE_INDICATOR([ftruncate])
+  # Code from module full-write:
+  # Code from module futimens:
+  gl_FUNC_FUTIMENS
+  gl_SYS_STAT_MODULE_INDICATOR([futimens])
+  # Code from module getcwd:
   gl_FUNC_GETCWD
   gl_UNISTD_MODULE_INDICATOR([getcwd])
-  gl_GETDATE
+  # Code from module getdelim:
   gl_FUNC_GETDELIM
   gl_STDIO_MODULE_INDICATOR([getdelim])
+  # Code from module getdtablesize:
   gl_FUNC_GETDTABLESIZE
   gl_UNISTD_MODULE_INDICATOR([getdtablesize])
+  # Code from module getline:
   gl_FUNC_GETLINE
   gl_STDIO_MODULE_INDICATOR([getline])
+  # Code from module getopt-gnu:
   gl_FUNC_GETOPT_GNU
-  gl_MODULE_INDICATOR([getopt-gnu])
+  gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
+  # Code from module getopt-posix:
   gl_FUNC_GETOPT_POSIX
+  # Code from module getpagesize:
   gl_FUNC_GETPAGESIZE
   gl_UNISTD_MODULE_INDICATOR([getpagesize])
+  # Code from module gettext:
   dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac.
-  AM_GNU_GETTEXT_VERSION([0.17])
+  AM_GNU_GETTEXT_VERSION([0.18.1])
+  # Code from module gettext-h:
   AC_SUBST([LIBINTL])
   AC_SUBST([LTLIBINTL])
+  # Code from module gettime:
   gl_GETTIME
+  # Code from module gettimeofday:
   gl_FUNC_GETTIMEOFDAY
   gl_SYS_TIME_MODULE_INDICATOR([gettimeofday])
+  # Code from module gitlog-to-changelog:
+  # Code from module hash:
   gl_HASH
+  # Code from module havelib:
+  # Code from module human:
   gl_HUMAN
+  # Code from module include_next:
+  # Code from module inline:
   gl_INLINE
+  # Code from module intprops:
+  # Code from module inttostr:
   gl_INTTOSTR
+  # Code from module inttypes:
   gl_INTTYPES_H
+  # Code from module langinfo:
   gl_LANGINFO_H
+  # Code from module lchown:
   gl_FUNC_LCHOWN
   gl_UNISTD_MODULE_INDICATOR([lchown])
+  # Code from module link:
+  gl_FUNC_LINK
+  gl_UNISTD_MODULE_INDICATOR([link])
+  # Code from module link-follow:
+  gl_FUNC_LINK_FOLLOWS_SYMLINK
+  # Code from module linkat:
+  gl_FUNC_LINKAT
+  gl_UNISTD_MODULE_INDICATOR([linkat])
+  # Code from module localcharset:
   gl_LOCALCHARSET
   LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
   AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+  # Code from module lseek:
   gl_FUNC_LSEEK
   gl_UNISTD_MODULE_INDICATOR([lseek])
+  # Code from module lstat:
   gl_FUNC_LSTAT
   gl_SYS_STAT_MODULE_INDICATOR([lstat])
-  AC_FUNC_MALLOC
-  AC_DEFINE([GNULIB_MALLOC_GNU], 1, [Define to indicate the 'malloc' module.])
+  # Code from module malloc-gnu:
+  gl_FUNC_MALLOC_GNU
+  gl_MODULE_INDICATOR([malloc-gnu])
+  # Code from module malloc-posix:
   gl_FUNC_MALLOC_POSIX
   gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+  # Code from module malloca:
   gl_MALLOCA
+  # Code from module mbchar:
   gl_MBCHAR
+  # Code from module mbrtowc:
   gl_FUNC_MBRTOWC
   gl_WCHAR_MODULE_INDICATOR([mbrtowc])
+  # Code from module mbscasecmp:
   gl_STRING_MODULE_INDICATOR([mbscasecmp])
+  # Code from module mbsinit:
   gl_FUNC_MBSINIT
   gl_WCHAR_MODULE_INDICATOR([mbsinit])
+  # Code from module mbsrtowcs:
   gl_FUNC_MBSRTOWCS
   gl_WCHAR_MODULE_INDICATOR([mbsrtowcs])
+  # Code from module mbuiter:
   gl_MBITER
+  # Code from module memchr:
   gl_FUNC_MEMCHR
   gl_STRING_MODULE_INDICATOR([memchr])
+  # Code from module mempcpy:
   gl_FUNC_MEMPCPY
   gl_STRING_MODULE_INDICATOR([mempcpy])
+  # Code from module memrchr:
   gl_FUNC_MEMRCHR
   gl_STRING_MODULE_INDICATOR([memrchr])
+  # Code from module mkdir:
   gl_FUNC_MKDIR
+  # Code from module mkdtemp:
   gt_FUNC_MKDTEMP
   gl_STDLIB_MODULE_INDICATOR([mkdtemp])
+  # Code from module mkfifo:
+  gl_FUNC_MKFIFO
+  gl_UNISTD_MODULE_INDICATOR([mkfifo])
+  # Code from module mkfifoat:
+  gl_FUNC_MKFIFOAT
+  gl_UNISTD_MODULE_INDICATOR([mkfifoat])
+  gl_UNISTD_MODULE_INDICATOR([mknodat])
+  # Code from module mknod:
+  gl_FUNC_MKNOD
+  gl_UNISTD_MODULE_INDICATOR([mknod])
+  # Code from module mktime:
   gl_FUNC_MKTIME
   gl_TIME_MODULE_INDICATOR([mktime])
+  # Code from module modechange:
   gl_MODECHANGE
+  # Code from module multiarch:
   gl_MULTIARCH
+  # Code from module nl_langinfo:
   gl_FUNC_NL_LANGINFO
   gl_LANGINFO_MODULE_INDICATOR([nl_langinfo])
+  # Code from module obstack:
   AC_FUNC_OBSTACK
   dnl Note: AC_FUNC_OBSTACK does AC_LIBSOURCES([obstack.h, obstack.c]).
+  # Code from module open:
   gl_FUNC_OPEN
-  gl_MODULE_INDICATOR([open])
   gl_FCNTL_MODULE_INDICATOR([open])
+  # Code from module openat:
   gl_FUNC_OPENAT
+  # Code from module openat-die:
+  # Code from module parse-datetime:
+  gl_PARSE_DATETIME
+  # Code from module pathmax:
   gl_PATHMAX
+  # Code from module priv-set:
   gl_PRIV_SET
+  # Code from module progname:
   AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
   AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
+  # Code from module quote:
   gl_QUOTE
+  # Code from module quotearg:
   gl_QUOTEARG
+  # Code from module quotearg-simple:
+  # Code from module rawmemchr:
   gl_FUNC_RAWMEMCHR
   gl_STRING_MODULE_INDICATOR([rawmemchr])
+  # Code from module readlink:
   gl_FUNC_READLINK
   gl_UNISTD_MODULE_INDICATOR([readlink])
+  # Code from module readlinkat:
+  gl_FUNC_READLINKAT
+  gl_UNISTD_MODULE_INDICATOR([readlinkat])
+  # Code from module realloc-posix:
   gl_FUNC_REALLOC_POSIX
   gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+  # Code from module regex:
   gl_REGEX
+  # Code from module rename:
+  gl_FUNC_RENAME
+  gl_STDIO_MODULE_INDICATOR([rename])
+  # Code from module renameat:
+  gl_FUNC_RENAMEAT
+  gl_STDIO_MODULE_INDICATOR([renameat])
+  # Code from module rmdir:
   gl_FUNC_RMDIR
   gl_UNISTD_MODULE_INDICATOR([rmdir])
+  # Code from module rpmatch:
   gl_FUNC_RPMATCH
   gl_STDLIB_MODULE_INDICATOR([rpmatch])
+  # Code from module safe-read:
   gl_SAFE_READ
+  # Code from module safe-write:
   gl_SAFE_WRITE
-  gl_SAME
+  # Code from module same-inode:
+  # Code from module save-cwd:
   gl_SAVE_CWD
+  # Code from module savedir:
   gl_SAVEDIR
+  # Code from module setenv:
   gl_FUNC_SETENV
   gl_STDLIB_MODULE_INDICATOR([setenv])
+  # Code from module size_max:
   gl_SIZE_MAX
+  # Code from module sleep:
   gl_FUNC_SLEEP
   gl_UNISTD_MODULE_INDICATOR([sleep])
+  # Code from module snprintf:
   gl_FUNC_SNPRINTF
   gl_STDIO_MODULE_INDICATOR([snprintf])
+  # Code from module ssize_t:
   gt_TYPE_SSIZE_T
+  # Code from module stat:
   gl_FUNC_STAT
   gl_SYS_STAT_MODULE_INDICATOR([stat])
+  # Code from module stat-macros:
+  # Code from module stat-time:
   gl_STAT_TIME
   gl_STAT_BIRTHTIME
+  # Code from module stdarg:
   gl_STDARG_H
+  # Code from module stdbool:
   AM_STDBOOL_H
+  # Code from module stddef:
   gl_STDDEF_H
+  # Code from module stdint:
   gl_STDINT_H
+  # Code from module stdio:
   gl_STDIO_H
+  # Code from module stdlib:
   gl_STDLIB_H
+  # Code from module stpcpy:
   gl_FUNC_STPCPY
   gl_STRING_MODULE_INDICATOR([stpcpy])
+  # Code from module strcase:
   gl_STRCASE
+  # Code from module strchrnul:
   gl_FUNC_STRCHRNUL
   gl_STRING_MODULE_INDICATOR([strchrnul])
+  # Code from module strdup-posix:
   gl_FUNC_STRDUP_POSIX
   gl_STRING_MODULE_INDICATOR([strdup])
+  # Code from module streq:
+  # Code from module strerror:
   gl_FUNC_STRERROR
   gl_STRING_MODULE_INDICATOR([strerror])
+  # Code from module string:
   gl_HEADER_STRING_H
+  # Code from module strings:
   gl_HEADER_STRINGS_H
+  # Code from module strndup:
   gl_FUNC_STRNDUP
   gl_STRING_MODULE_INDICATOR([strndup])
+  # Code from module strnlen:
   gl_FUNC_STRNLEN
   gl_STRING_MODULE_INDICATOR([strnlen])
+  # Code from module strnlen1:
+  # Code from module strtoimax:
   gl_FUNC_STRTOIMAX
   gl_INTTYPES_MODULE_INDICATOR([strtoimax])
+  # Code from module strtol:
   gl_FUNC_STRTOL
+  # Code from module strtoll:
   gl_FUNC_STRTOLL
   gl_STDLIB_MODULE_INDICATOR([strtoll])
+  # Code from module strtoul:
   gl_FUNC_STRTOUL
+  # Code from module strtoull:
   gl_FUNC_STRTOULL
   gl_STDLIB_MODULE_INDICATOR([strtoull])
+  # Code from module strtoumax:
   gl_FUNC_STRTOUMAX
   gl_INTTYPES_MODULE_INDICATOR([strtoumax])
+  # Code from module symlink:
+  gl_FUNC_SYMLINK
+  gl_UNISTD_MODULE_INDICATOR([symlink])
+  # Code from module symlinkat:
+  gl_FUNC_SYMLINKAT
+  gl_UNISTD_MODULE_INDICATOR([symlinkat])
+  # Code from module sys_stat:
   gl_HEADER_SYS_STAT_H
   AC_PROG_MKDIR_P
+  # Code from module sys_time:
   gl_HEADER_SYS_TIME_H
   AC_PROG_MKDIR_P
+  # Code from module sysexits:
   gl_SYSEXITS
+  # Code from module tempname:
   gl_FUNC_GEN_TEMPNAME
+  # Code from module time:
   gl_HEADER_TIME_H
+  # Code from module time_r:
   gl_TIME_R
+  gl_TIME_MODULE_INDICATOR([time_r])
+  # Code from module timespec:
   gl_TIMESPEC
+  # Code from module unistd:
   gl_UNISTD_H
+  # Code from module unistd-safer:
   gl_UNISTD_SAFER
+  # Code from module unitypes:
+  gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
+  # Code from module uniwidth/base:
+  gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
+  # Code from module uniwidth/width:
+  gl_LIBUNISTRING_MODULE([0.9], [uniwidth/width])
+  # Code from module unlink:
   gl_FUNC_UNLINK
   gl_UNISTD_MODULE_INDICATOR([unlink])
+  # Code from module unlinkdir:
   gl_UNLINKDIR
+  # Code from module unlocked-io:
   gl_FUNC_GLIBC_UNLOCKED_IO
+  # Code from module unsetenv:
   gl_FUNC_UNSETENV
   gl_STDLIB_MODULE_INDICATOR([unsetenv])
+  # Code from module utimens:
   gl_UTIMENS
+  # Code from module utimensat:
+  gl_FUNC_UTIMENSAT
+  gl_SYS_STAT_MODULE_INDICATOR([utimensat])
+  # Code from module vasnprintf:
   gl_FUNC_VASNPRINTF
+  # Code from module vasprintf:
   gl_FUNC_VASPRINTF
   gl_STDIO_MODULE_INDICATOR([vasprintf])
   m4_ifdef([AM_XGETTEXT_OPTION],
     [AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format])
      AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])])
+  # Code from module verify:
+  # Code from module version-etc:
   gl_VERSION_ETC
+  # Code from module version-etc-fsf:
+  # Code from module vsnprintf:
   gl_FUNC_VSNPRINTF
   gl_STDIO_MODULE_INDICATOR([vsnprintf])
+  # Code from module warn-on-use:
+  # Code from module wchar:
   gl_WCHAR_H
+  # Code from module wcrtomb:
   gl_FUNC_WCRTOMB
   gl_WCHAR_MODULE_INDICATOR([wcrtomb])
+  # Code from module wctype:
   gl_WCTYPE_H
+  # Code from module wcwidth:
   gl_FUNC_WCWIDTH
   gl_WCHAR_MODULE_INDICATOR([wcwidth])
+  # Code from module write:
   gl_FUNC_WRITE
   gl_UNISTD_MODULE_INDICATOR([write])
+  # Code from module xalloc:
   gl_XALLOC
+  # Code from module xalloc-die:
+  # Code from module xgetcwd:
   gl_XGETCWD
+  # Code from module xsize:
   gl_XSIZE
+  # Code from module xstrndup:
   gl_XSTRNDUP
+  # Code from module xstrtol:
   gl_XSTRTOL
+  # Code from module xstrtoumax:
+  # Code from module xvasprintf:
   gl_XVASPRINTF
   m4_ifdef([AM_XGETTEXT_OPTION],
     [AM_][XGETTEXT_OPTION([--flag=xasprintf:1:c-format])])
+  # End of code from modules
   m4_ifval(gl_LIBSOURCES_LIST, [
     m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
       for gl_file in ]gl_LIBSOURCES_LIST[ ; do
@@ -330,6 +761,13 @@ AC_DEFUN([gl_INIT],
   m4_pushdef([gltests_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='tests'
+changequote(,)dnl
+  gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
+  AC_SUBST([gltests_WITNESS])
+  gl_module_indicator_condition=$gltests_WITNESS
+  m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
+  m4_popdef([gl_MODULE_INDICATOR_CONDITION])
   m4_ifval(gltests_LIBSOURCES_LIST, [
     m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
       for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
@@ -428,11 +866,13 @@ AC_DEFUN([gl_FILE_LIST], [
   build-aux/config.rpath
   build-aux/gitlog-to-changelog
   build-aux/warn-on-use.h
-  doc/getdate.texi
+  doc/parse-datetime.texi
   lib/alloca.c
   lib/alloca.in.h
-  lib/areadlink-with-size.c
+  lib/anytostr.c
+  lib/areadlink.c
   lib/areadlink.h
+  lib/areadlinkat.c
   lib/argmatch.c
   lib/argmatch.h
   lib/argp-ba.c
@@ -453,6 +893,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/asnprintf.c
   lib/asprintf.c
   lib/at-func.c
+  lib/at-func2.c
   lib/backupfile.c
   lib/backupfile.h
   lib/basename-lgpl.c
@@ -461,11 +902,12 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/btowc.c
   lib/c-ctype.c
   lib/c-ctype.h
-  lib/canonicalize.c
-  lib/canonicalize.h
+  lib/canonicalize-lgpl.c
   lib/chdir-long.c
   lib/chdir-long.h
   lib/chown.c
+  lib/cloexec.c
+  lib/cloexec.h
   lib/close-hook.c
   lib/close-hook.h
   lib/close-stream.c
@@ -499,9 +941,10 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/fcntl.in.h
   lib/fd-safer.c
   lib/fdopendir.c
-  lib/file-set.c
-  lib/file-set.h
+  lib/fdutimensat.c
   lib/fileblocks.c
+  lib/filenamecat-lgpl.c
+  lib/filenamecat.h
   lib/float+.h
   lib/float.in.h
   lib/fnmatch.c
@@ -511,12 +954,10 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/fpending.h
   lib/fseeko.c
   lib/fstatat.c
-  lib/ftruncate.c
   lib/full-write.c
   lib/full-write.h
+  lib/futimens.c
   lib/getcwd.c
-  lib/getdate.h
-  lib/getdate.y
   lib/getdelim.c
   lib/getdtablesize.c
   lib/getline.c
@@ -528,10 +969,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/gettext.h
   lib/gettime.c
   lib/gettimeofday.c
-  lib/hash-pjw.c
-  lib/hash-pjw.h
-  lib/hash-triple.c
-  lib/hash-triple.h
   lib/hash.c
   lib/hash.h
   lib/human.c
@@ -543,6 +980,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/inttypes.in.h
   lib/langinfo.in.h
   lib/lchown.c
+  lib/link.c
+  lib/linkat.c
   lib/localcharset.c
   lib/localcharset.h
   lib/lseek.c
@@ -566,6 +1005,10 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/mkdir.c
   lib/mkdirat.c
   lib/mkdtemp.c
+  lib/mkfifo.c
+  lib/mkfifoat.c
+  lib/mknod.c
+  lib/mknodat.c
   lib/mktime-internal.h
   lib/mktime.c
   lib/modechange.c
@@ -581,6 +1024,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/openat.c
   lib/openat.h
   lib/opendir-safer.c
+  lib/parse-datetime.h
+  lib/parse-datetime.y
   lib/pathmax.h
   lib/pipe-safer.c
   lib/printf-args.c
@@ -598,6 +1043,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/rawmemchr.c
   lib/rawmemchr.valgrind
   lib/readlink.c
+  lib/readlinkat.c
   lib/realloc.c
   lib/ref-add.sin
   lib/ref-del.sin
@@ -607,6 +1053,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/regex_internal.c
   lib/regex_internal.h
   lib/regexec.c
+  lib/rename.c
+  lib/renameat.c
   lib/rmdir.c
   lib/rpmatch.c
   lib/safe-read.c
@@ -614,8 +1062,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/safe-write.c
   lib/safe-write.h
   lib/same-inode.h
-  lib/same.c
-  lib/same.h
   lib/save-cwd.c
   lib/save-cwd.h
   lib/savedir.c
@@ -656,6 +1102,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/strtoul.c
   lib/strtoull.c
   lib/strtoumax.c
+  lib/symlink.c
+  lib/symlinkat.c
   lib/sys_stat.in.h
   lib/sys_time.in.h
   lib/sysexits.in.h
@@ -669,8 +1117,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/unistd--.h
   lib/unistd-safer.h
   lib/unistd.in.h
-  lib/unitypes.h
-  lib/uniwidth.h
+  lib/unitypes.in.h
+  lib/uniwidth.in.h
   lib/uniwidth/cjk.h
   lib/uniwidth/width.c
   lib/unlink.c
@@ -681,6 +1129,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/unsetenv.c
   lib/utimens.c
   lib/utimens.h
+  lib/utimensat.c
   lib/vasnprintf.c
   lib/vasnprintf.h
   lib/vasprintf.c
@@ -714,6 +1163,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/alloca.m4
   m4/argmatch.m4
   m4/argp.m4
+  m4/asm-underscore.m4
   m4/backupfile.m4
   m4/bison.m4
   m4/btowc.m4
@@ -721,6 +1171,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/chdir-long.m4
   m4/chown.m4
   m4/clock_time.m4
+  m4/cloexec.m4
   m4/close-stream.m4
   m4/close.m4
   m4/closeout.m4
@@ -746,15 +1197,15 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/fcntl_h.m4
   m4/fdopendir.m4
   m4/fileblocks.m4
+  m4/filenamecat.m4
   m4/float_h.m4
   m4/fnmatch.m4
   m4/fpending.m4
   m4/fseeko.m4
-  m4/ftruncate.m4
+  m4/futimens.m4
   m4/getcwd-abort-bug.m4
   m4/getcwd-path-max.m4
   m4/getcwd.m4
-  m4/getdate.m4
   m4/getdelim.m4
   m4/getdtablesize.m4
   m4/getline.m4
@@ -787,6 +1238,10 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/lib-ld.m4
   m4/lib-link.m4
   m4/lib-prefix.m4
+  m4/libunistring-base.m4
+  m4/link-follow.m4
+  m4/link.m4
+  m4/linkat.m4
   m4/localcharset.m4
   m4/locale-fr.m4
   m4/locale-ja.m4
@@ -808,6 +1263,9 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/memrchr.m4
   m4/mkdir.m4
   m4/mkdtemp.m4
+  m4/mkfifo.m4
+  m4/mkfifoat.m4
+  m4/mknod.m4
   m4/mktime.m4
   m4/mmap-anon.m4
   m4/mode_t.m4
@@ -817,6 +1275,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/nls.m4
   m4/open.m4
   m4/openat.m4
+  m4/parse-datetime.m4
   m4/pathmax.m4
   m4/po.m4
   m4/printf-posix.m4
@@ -827,13 +1286,15 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/quotearg.m4
   m4/rawmemchr.m4
   m4/readlink.m4
+  m4/readlinkat.m4
   m4/realloc.m4
   m4/regex.m4
+  m4/rename.m4
+  m4/renameat.m4
   m4/rmdir.m4
   m4/rpmatch.m4
   m4/safe-read.m4
   m4/safe-write.m4
-  m4/same.m4
   m4/save-cwd.m4
   m4/savedir.m4
   m4/setenv.m4
@@ -865,6 +1326,8 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/strtoul.m4
   m4/strtoull.m4
   m4/strtoumax.m4
+  m4/symlink.m4
+  m4/symlinkat.m4
   m4/sys_stat_h.m4
   m4/sys_time_h.m4
   m4/sysexits.m4
@@ -882,6 +1345,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/unlocked-io.m4
   m4/utimbuf.m4
   m4/utimens.m4
+  m4/utimensat.m4
   m4/utimes.m4
   m4/vasnprintf.m4
   m4/vasprintf.m4
index f46ff1421541e2a8b0bef692bc3299a902f5226d..425145c0aee8f847f459df54299b9e1e6b4af743 100644 (file)
@@ -1,4 +1,4 @@
-# iconv.m4 serial 9 (gettext-0.18)
+# iconv.m4 serial 15 (gettext-0.18.2)
 dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -30,27 +30,35 @@ AC_DEFUN([AM_ICONV_LINK],
   dnl Add $INCICONV to CPPFLAGS before performing the following checks,
   dnl because if the user has installed libiconv and not disabled its use
   dnl via --without-libiconv-prefix, he wants to use it. The first
-  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+  dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
   am_save_CPPFLAGS="$CPPFLAGS"
   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
 
   AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
-    AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-      [iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);],
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[
+#include <stdlib.h>
+#include <iconv.h>
+         ]],
+         [[iconv_t cd = iconv_open("","");
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);]])],
       [am_cv_func_iconv=yes])
     if test "$am_cv_func_iconv" != yes; then
       am_save_LIBS="$LIBS"
       LIBS="$LIBS $LIBICONV"
-      AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-        [iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);],
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
+#include <stdlib.h>
+#include <iconv.h>
+           ]],
+           [[iconv_t cd = iconv_open("","");
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);]])],
         [am_cv_lib_iconv=yes]
         [am_cv_func_iconv=yes])
       LIBS="$am_save_LIBS"
@@ -58,12 +66,14 @@ AC_DEFUN([AM_ICONV_LINK],
   ])
   if test "$am_cv_func_iconv" = yes; then
     AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
-      dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
+      dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+      dnl Solaris 10.
       am_save_LIBS="$LIBS"
       if test $am_cv_lib_iconv = yes; then
         LIBS="$LIBS $LIBICONV"
       fi
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <iconv.h>
 #include <string.h>
 int main ()
@@ -106,6 +116,24 @@ int main ()
           return 1;
       }
   }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        const char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          return 1;
+      }
+  }
 #if 0 /* This bug could be worked around by the caller.  */
   /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
   {
@@ -138,11 +166,17 @@ int main ()
       && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
     return 1;
   return 0;
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
-        [case "$host_os" in
+}]])],
+        [am_cv_func_iconv_works=yes],
+        [am_cv_func_iconv_works=no],
+        [
+changequote(,)dnl
+         case "$host_os" in
            aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
            *)            am_cv_func_iconv_works="guessing yes" ;;
-         esac])
+         esac
+changequote([,])dnl
+        ])
       LIBS="$am_save_LIBS"
     ])
     case "$am_cv_func_iconv_works" in
@@ -170,13 +204,33 @@ int main ()
   AC_SUBST([LTLIBICONV])
 ])
 
-AC_DEFUN([AM_ICONV],
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl   Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl   warnings.
+m4_define([gl_iconv_AC_DEFUN],
+  m4_version_prereq([2.64],
+    [[AC_DEFUN_ONCE(
+        [$1], [$2])]],
+    [m4_ifdef([gl_00GNULIB],
+       [[AC_DEFUN_ONCE(
+           [$1], [$2])]],
+       [[AC_DEFUN(
+           [$1], [$2])]])]))
+gl_iconv_AC_DEFUN([AM_ICONV],
 [
   AM_ICONV_LINK
   if test "$am_cv_func_iconv" = yes; then
     AC_MSG_CHECKING([for iconv declaration])
     AC_CACHE_VAL([am_cv_proto_iconv], [
-      AC_TRY_COMPILE([
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
 #include <stdlib.h>
 #include <iconv.h>
 extern
@@ -188,7 +242,10 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
 #else
 size_t iconv();
 #endif
-], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
+           ]],
+           [[]])],
+        [am_cv_proto_iconv_arg1=""],
+        [am_cv_proto_iconv_arg1="const"])
       am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
     am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
     AC_MSG_RESULT([
index c7e0672f60c01b02fa96a2a4427907c69f483879..e37eb0567dbedcbb821ce33e164b2f24c26019a8 100644 (file)
@@ -1,4 +1,4 @@
-# include_next.m4 serial 14
+# include_next.m4 serial 16
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -24,6 +24,13 @@ dnl does not warn about some things, and on some systems (Solaris and Interix)
 dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
 dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
 dnl of plain '__STDC__'.
+dnl
+dnl PRAGMA_COLUMNS can be used in files that override system header files, so
+dnl as to avoid compilation errors on HP NonStop systems when the gnulib file
+dnl is included by a system header file that does a "#pragma COLUMNS 80" (which
+dnl has the effect of truncating the lines of that file and all files that it
+dnl includes to 80 columns) and the gnulib file has lines longer than 80
+dnl columns.
 
 AC_DEFUN([gl_INCLUDE_NEXT],
 [
@@ -68,10 +75,11 @@ EOF
 EOF
      gl_save_CPPFLAGS="$CPPFLAGS"
      CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
-     AC_COMPILE_IFELSE([#include <conftest.h>],
+dnl We intentionally avoid using AC_LANG_SOURCE here.
+     AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
        [gl_cv_have_include_next=yes],
        [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
-        AC_COMPILE_IFELSE([#include <conftest.h>],
+        AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
           [gl_cv_have_include_next=buggy],
           [gl_cv_have_include_next=no])
        ])
@@ -97,6 +105,24 @@ EOF
   AC_SUBST([INCLUDE_NEXT])
   AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
   AC_SUBST([PRAGMA_SYSTEM_HEADER])
+  AC_CACHE_CHECK([whether system header files limit the line length],
+    [gl_cv_pragma_columns],
+    [dnl HP NonStop systems, which define __TANDEM, have this misfeature.
+     AC_EGREP_CPP([choke me],
+       [
+#ifdef __TANDEM
+choke me
+#endif
+       ],
+       [gl_cv_pragma_columns=yes],
+       [gl_cv_pragma_columns=no])
+    ])
+  if test $gl_cv_pragma_columns = yes; then
+    PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+  else
+    PRAGMA_COLUMNS=
+  fi
+  AC_SUBST([PRAGMA_COLUMNS])
 ])
 
 # gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
@@ -185,3 +211,7 @@ AC_DEFUN([gl_CHECK_NEXT_HEADERS],
        [$gl_next_as_first_directive])
      AS_VAR_POPDEF([gl_next_header])])
 ])
+
+# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE;
+# this fallback is safe for all earlier autoconf versions.
+m4_define_default([AC_LANG_DEFINES_PROVIDED])
index dd91025962741fb1e5fd697ffbb88c9df66b202f..f0f7c98726f2ef2587e849fb2944dde68fc795e9 100644 (file)
@@ -1,4 +1,4 @@
-# intlmacosx.m4 serial 3 (gettext-0.18)
+# intlmacosx.m4 serial 4 (gettext-0.18.2)
 dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -22,8 +22,10 @@ AC_DEFUN([gt_INTL_MACOSX],
     [gt_cv_func_CFPreferencesCopyAppValue],
     [gt_save_LIBS="$LIBS"
      LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
-       [CFPreferencesCopyAppValue(NULL, NULL)],
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFPreferences.h>]],
+          [[CFPreferencesCopyAppValue(NULL, NULL)]])],
        [gt_cv_func_CFPreferencesCopyAppValue=yes],
        [gt_cv_func_CFPreferencesCopyAppValue=no])
      LIBS="$gt_save_LIBS"])
@@ -35,7 +37,10 @@ AC_DEFUN([gt_INTL_MACOSX],
   AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
     [gt_save_LIBS="$LIBS"
      LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
-     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFLocale.h>]],
+          [[CFLocaleCopyCurrent();]])],
        [gt_cv_func_CFLocaleCopyCurrent=yes],
        [gt_cv_func_CFLocaleCopyCurrent=no])
      LIBS="$gt_save_LIBS"])
index 975caac50670d193a88577508de756a7aa17c560..493e4a93281814caf7edc3917887eeec68eb86ce 100644 (file)
@@ -1,4 +1,4 @@
-# intmax_t.m4 serial 7
+# intmax_t.m4 serial 8
 dnl Copyright (C) 1997-2004, 2006-2007, 2009-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Paul Eggert.
 
-AC_PREREQ([2.13])
+AC_PREREQ([2.53])
 
 # Define intmax_t to 'long' or 'long long'
 # if it is not already defined in <stdint.h> or <inttypes.h>.
@@ -38,7 +38,9 @@ AC_DEFUN([gt_AC_TYPE_INTMAX_T],
   AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
   AC_REQUIRE([gl_AC_HEADER_STDINT_H])
   AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
-    [AC_TRY_COMPILE([
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
 #include <stddef.h>
 #include <stdlib.h>
 #if HAVE_STDINT_H_WITH_UINTMAX
@@ -47,7 +49,10 @@ AC_DEFUN([gt_AC_TYPE_INTMAX_T],
 #if HAVE_INTTYPES_H_WITH_UINTMAX
 #include <inttypes.h>
 #endif
-], [intmax_t x = -1; return !x;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
+          ]],
+          [[intmax_t x = -1; return !x;]])],
+       [gt_cv_c_intmax_t=yes],
+       [gt_cv_c_intmax_t=no])])
   if test $gt_cv_c_intmax_t = yes; then
     AC_DEFINE([HAVE_INTMAX_T], [1],
       [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
index 3e17ed59f197eb15df08f966b42324e9e6b71edf..ff64ddbd3e226d908f8d5f3bdfa2432f9285242f 100644 (file)
@@ -1,4 +1,4 @@
-#serial 7
+#serial 8
 dnl Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,11 +6,6 @@ dnl with or without modifications, as long as this notice is preserved.
 
 AC_DEFUN([gl_INTTOSTR],
 [
-  AC_LIBOBJ([imaxtostr])
-  AC_LIBOBJ([offtostr])
-  AC_LIBOBJ([umaxtostr])
-  AC_LIBOBJ([uinttostr])
-
   gl_PREREQ_INTTOSTR
   gl_PREREQ_IMAXTOSTR
   gl_PREREQ_OFFTOSTR
index 718a4f4e19f4e0ae45cd9be70a1aef0df4df307e..ee96bcd9780bc62b88dbb6c34897938a6fb43524 100644 (file)
@@ -1,4 +1,4 @@
-# inttypes-pri.m4 serial 6 (gettext-0.18)
+# inttypes-pri.m4 serial 7 (gettext-0.18.2)
 dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,7 +6,7 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
-AC_PREREQ([2.52])
+AC_PREREQ([2.53])
 
 # Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
 # macros to non-string values.  This is the case on AIX 4.3.3.
@@ -18,11 +18,17 @@ AC_DEFUN([gt_INTTYPES_PRI],
     AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
       [gt_cv_inttypes_pri_broken],
       [
-        AC_TRY_COMPILE([#include <inttypes.h>
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[
+#include <inttypes.h>
 #ifdef PRId32
 char *p = PRId32;
 #endif
-], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
+             ]],
+             [[]])],
+          [gt_cv_inttypes_pri_broken=no],
+          [gt_cv_inttypes_pri_broken=yes])
       ])
   fi
   if test "$gt_cv_inttypes_pri_broken" = yes; then
index 3ee174dc8bfb7785d25723484c0d34fe21483e1e..e1be6e9a8948ee40e5b3d0eda44e4b4a0c04d8b6 100644 (file)
@@ -1,4 +1,4 @@
-# inttypes.m4 serial 17
+# inttypes.m4 serial 18
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -285,7 +285,7 @@ AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
 ])
 
 AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
index 782d77ed8b1e0629d7b5ac2938db0ef6010e61d6..9d8f926926e55b4a89dff55f8f7b38a465d1e678 100644 (file)
@@ -1,4 +1,4 @@
-# inttypes_h.m4 serial 9
+# inttypes_h.m4 serial 10
 dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -12,12 +12,15 @@ dnl From Paul Eggert.
 AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
 [
   AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
-  [AC_TRY_COMPILE(
-    [#include <sys/types.h>
-#include <inttypes.h>],
-    [uintmax_t i = (uintmax_t) -1; return !i;],
-    [gl_cv_header_inttypes_h=yes],
-    [gl_cv_header_inttypes_h=no])])
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
+#include <sys/types.h>
+#include <inttypes.h>
+          ]],
+          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
+       [gl_cv_header_inttypes_h=yes],
+       [gl_cv_header_inttypes_h=no])])
   if test $gl_cv_header_inttypes_h = yes; then
     AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
       [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
index 5e4922afd46984995881e908bb41e1697fa78a46..adc445e85911ae6630a19f0002a4d2618a4e0c6f 100644 (file)
@@ -1,5 +1,5 @@
-# langinfo_h.m4 serial 4
-dnl Copyright (C) 20092010 Free Software Foundation, Inc.
+# langinfo_h.m4 serial 7
+dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -11,16 +11,19 @@ AC_DEFUN([gl_LANGINFO_H],
   dnl Persuade glibc-2.0.6 <langinfo.h> to define CODESET.
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
+  dnl <langinfo.h> is always overridden, because of GNULIB_POSIXCHECK.
   gl_CHECK_NEXT_HEADERS([langinfo.h])
 
   dnl Determine whether <langinfo.h> exists. It is missing on mingw and BeOS.
   HAVE_LANGINFO_CODESET=0
+  HAVE_LANGINFO_T_FMT_AMPM=0
   HAVE_LANGINFO_ERA=0
+  HAVE_LANGINFO_YESEXPR=0
   AC_CHECK_HEADERS_ONCE([langinfo.h])
   if test $ac_cv_header_langinfo_h = yes; then
     HAVE_LANGINFO_H=1
     dnl Determine what <langinfo.h> defines. CODESET and ERA etc. are missing
-    dnl on OpenBSD 3.8.
+    dnl on OpenBSD 3.8. T_FMT_AMPM and YESEXPR, NOEXPR are missing on IRIX 5.3.
     AC_CACHE_CHECK([whether langinfo.h defines CODESET],
       [gl_cv_header_langinfo_codeset],
       [AC_COMPILE_IFELSE(
@@ -33,6 +36,18 @@ int a = CODESET;
     if test $gl_cv_header_langinfo_codeset = yes; then
       HAVE_LANGINFO_CODESET=1
     fi
+    AC_CACHE_CHECK([whether langinfo.h defines T_FMT_AMPM],
+      [gl_cv_header_langinfo_t_fmt_ampm],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+int a = T_FMT_AMPM;
+]])],
+         [gl_cv_header_langinfo_t_fmt_ampm=yes],
+         [gl_cv_header_langinfo_t_fmt_ampm=no])
+      ])
+    if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then
+      HAVE_LANGINFO_T_FMT_AMPM=1
+    fi
     AC_CACHE_CHECK([whether langinfo.h defines ERA],
       [gl_cv_header_langinfo_era],
       [AC_COMPILE_IFELSE(
@@ -45,12 +60,26 @@ int a = ERA;
     if test $gl_cv_header_langinfo_era = yes; then
       HAVE_LANGINFO_ERA=1
     fi
+    AC_CACHE_CHECK([whether langinfo.h defines YESEXPR],
+      [gl_cv_header_langinfo_yesexpr],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[#include <langinfo.h>
+int a = YESEXPR;
+]])],
+         [gl_cv_header_langinfo_yesexpr=yes],
+         [gl_cv_header_langinfo_yesexpr=no])
+      ])
+    if test $gl_cv_header_langinfo_yesexpr = yes; then
+      HAVE_LANGINFO_YESEXPR=1
+    fi
   else
     HAVE_LANGINFO_H=0
   fi
   AC_SUBST([HAVE_LANGINFO_H])
   AC_SUBST([HAVE_LANGINFO_CODESET])
+  AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM])
   AC_SUBST([HAVE_LANGINFO_ERA])
+  AC_SUBST([HAVE_LANGINFO_YESEXPR])
 
   dnl Check for declarations of anything we want to poison if the
   dnl corresponding gnulib module is not in use.
@@ -62,9 +91,9 @@ AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_LANGINFO_H_DEFAULTS],
index ebb30528bd5abfdfcc2126175cbe1de99d902457..294db72e13d1f91e59faa00122d93da2d0d6159e 100644 (file)
@@ -1,4 +1,4 @@
-# lib-ld.m4 serial 4 (gettext-0.18)
+# lib-ld.m4 serial 5 (gettext-0.18.2)
 dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -31,15 +31,14 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
 fi
 ac_prog=ld
 if test "$GCC" = yes; then
index 90e1ac9170d3418035f0c6a299d16ae8aadcebee..2ea9d6d073c84b7f876a24930dc2d849c1293992 100644 (file)
@@ -1,4 +1,4 @@
-# lib-link.m4 serial 20 (gettext-0.18)
+# lib-link.m4 serial 25 (gettext-0.18.2)
 dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
 [
   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
   AC_REQUIRE([AC_LIB_RPATH])
-  pushdef([Name],[translit([$1],[./-], [___])])
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([Name],[m4_translit([$1],[./+-], [____])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
   AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
     AC_LIB_LINKFLAGS_BODY([$1], [$2])
     ac_cv_lib[]Name[]_libs="$LIB[]NAME"
@@ -58,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
 [
   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
   AC_REQUIRE([AC_LIB_RPATH])
-  pushdef([Name],[translit([$1],[./-], [___])])
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([Name],[m4_translit([$1],[./+-], [____])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
 
   dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
   dnl accordingly.
@@ -74,8 +74,19 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
 
   AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
     ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIB[]NAME"
-    AC_TRY_LINK([$3], [$4],
+    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+    dnl because these -l options might require -L options that are present in
+    dnl LIBS. -l options benefit only from the -L options listed before it.
+    dnl Otherwise, add it to the front of LIBS, because it may be a static
+    dnl library that depends on another static library that is present in LIBS.
+    dnl Static libraries benefit only from the static libraries listed after
+    dnl it.
+    case " $LIB[]NAME" in
+      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+      *)       LIBS="$LIB[]NAME $LIBS" ;;
+    esac
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([[$3]], [[$4]])],
       [ac_cv_lib[]Name=yes],
       [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
     LIBS="$ac_save_LIBS"
@@ -147,15 +158,15 @@ dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
 dnl macro call that searches for libname.
 AC_DEFUN([AC_LIB_FROMPACKAGE],
 [
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
   define([acl_frompackage_]NAME, [$2])
   popdef([NAME])
   pushdef([PACK],[$2])
-  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
-                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+                                     [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
   define([acl_libsinpackage_]PACKUP,
-    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
+    m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
   popdef([PACKUP])
   popdef([PACK])
 ])
@@ -168,14 +179,14 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
 AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
 [
   AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
-  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
   pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
-  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
-                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+                                     [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
   pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
   dnl Autoconf >= 2.61 supports dots in --with options.
-  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
+  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
   dnl By default, look in $includedir and $libdir.
   use_additional=yes
   AC_LIB_WITH_FINAL_PREFIX([
@@ -232,7 +243,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
         names_already_handled="$names_already_handled $name"
         dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
         dnl or AC_LIB_HAVE_LINKFLAGS call.
-        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
         eval value=\"\$HAVE_LIB$uppername\"
         if test -n "$value"; then
           if test "$value" = yes; then
diff --git a/m4/libunistring-base.m4 b/m4/libunistring-base.m4
new file mode 100644 (file)
index 0000000..8335ec5
--- /dev/null
@@ -0,0 +1,141 @@
+# libunistring-base.m4 serial 5
+dnl Copyright (C) 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paolo Bonzini and Bruno Haible.
+
+dnl gl_LIBUNISTRING_MODULE([VERSION], [Module])
+dnl Declares that the source files of Module should be compiled, unless we
+dnl are linking with libunistring and its version is >= the given VERSION.
+dnl Defines an automake conditional LIBUNISTRING_COMPILE_$MODULE that is
+dnl true if the source files of Module should be compiled.
+dnl This macro is to be used for public libunistring API, not for
+dnl undocumented API.
+dnl
+dnl You have to bump the VERSION argument to the next projected version
+dnl number each time you make a change that affects the behaviour of the
+dnl functions defined in Module (even if the sources of Module itself do not
+dnl change).
+
+AC_DEFUN([gl_LIBUNISTRING_MODULE],
+[
+  AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
+  dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
+  dnl gl_LIBUNISTRING_CORE if that macro has been run.
+  AM_CONDITIONAL(AS_TR_CPP([LIBUNISTRING_COMPILE_$2]),
+    [gl_LIBUNISTRING_VERSION_CMP([$1])])
+])
+
+dnl gl_LIBUNISTRING_LIBHEADER([VERSION], [HeaderFile])
+dnl Declares that HeaderFile should be created, unless we are linking
+dnl with libunistring and its version is >= the given VERSION.
+dnl HeaderFile should be relative to the lib directory and end in '.h'.
+dnl Prepares for substituting LIBUNISTRING_HEADERFILE (to HeaderFile or empty).
+dnl
+dnl When we are linking with the already installed libunistring and its version
+dnl is < VERSION, we create HeaderFile here, because we may compile functions
+dnl (via gl_LIBUNISTRING_MODULE above) that are not contained in the installed
+dnl version.
+dnl When we are linking with the already installed libunistring and its version
+dnl is > VERSION, we don't create HeaderFile here: it could cause compilation
+dnl errors in other libunistring header files if some types are missing.
+dnl
+dnl You have to bump the VERSION argument to the next projected version
+dnl number each time you make a non-comment change to the HeaderFile.
+
+AC_DEFUN([gl_LIBUNISTRING_LIBHEADER],
+[
+  AC_REQUIRE([gl_LIBUNISTRING_LIB_PREPARE])
+  dnl Use the variables HAVE_LIBUNISTRING, LIBUNISTRING_VERSION from
+  dnl gl_LIBUNISTRING_CORE if that macro has been run.
+  if gl_LIBUNISTRING_VERSION_CMP([$1]); then
+    LIBUNISTRING_[]AS_TR_CPP([$2])='$2'
+  else
+    LIBUNISTRING_[]AS_TR_CPP([$2])=
+  fi
+  AC_SUBST([LIBUNISTRING_]AS_TR_CPP([$2]))
+])
+
+dnl Miscellaneous preparations/initializations.
+
+AC_DEFUN([gl_LIBUNISTRING_LIB_PREPARE],
+[
+  dnl Ensure that HAVE_LIBUNISTRING is fully determined at this point.
+  m4_ifdef([gl_LIBUNISTRING], [AC_REQUIRE([gl_LIBUNISTRING])])
+
+  AC_REQUIRE([AC_PROG_AWK])
+
+dnl Sed expressions to extract the parts of a version number.
+changequote(,)
+gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+changequote([,])
+
+  if test "$HAVE_LIBUNISTRING" = yes; then
+    LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
+    LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
+    LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
+  fi
+])
+
+dnl gl_LIBUNISTRING_VERSION_CMP([VERSION])
+dnl Expands to a shell statement that evaluates to true if LIBUNISTRING_VERSION
+dnl is less than the VERSION argument.
+AC_DEFUN([gl_LIBUNISTRING_VERSION_CMP],
+[ { test "$HAVE_LIBUNISTRING" != yes \
+    || {
+         dnl AS_LITERAL_IF exists and works fine since autoconf-2.59 at least.
+         AS_LITERAL_IF([$1],
+           [dnl This is the optimized variant, that assumes the argument is a literal:
+            m4_pushdef([requested_version_major],
+              [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^\([0-9]*\).*], [\1]), [])])
+            m4_pushdef([requested_version_minor],
+              [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
+            m4_pushdef([requested_version_subminor],
+              [gl_LIBUNISTRING_ARG_OR_ZERO(m4_bpatsubst([$1], [^[0-9]*[.][0-9]*[.]\([0-9]*\).*], [\1]), [$1])])
+            test $LIBUNISTRING_VERSION_MAJOR -lt requested_version_major \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq requested_version_major \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt requested_version_minor \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq requested_version_minor \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt requested_version_subminor
+                         }
+                    }
+               }
+            m4_popdef([requested_version_subminor])
+            m4_popdef([requested_version_minor])
+            m4_popdef([requested_version_major])
+           ],
+           [dnl This is the unoptimized variant:
+            requested_version_major=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_major"`
+            requested_version_minor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_minor"`
+            requested_version_subminor=`echo '$1' | sed -n -e "$gl_libunistring_sed_extract_subminor"`
+            test $LIBUNISTRING_VERSION_MAJOR -lt $requested_version_major \
+            || { test $LIBUNISTRING_VERSION_MAJOR -eq $requested_version_major \
+                 && { test $LIBUNISTRING_VERSION_MINOR -lt $requested_version_minor \
+                      || { test $LIBUNISTRING_VERSION_MINOR -eq $requested_version_minor \
+                           && test $LIBUNISTRING_VERSION_SUBMINOR -lt $requested_version_subminor
+                         }
+                    }
+               }
+           ])
+       }
+  }])
+
+dnl gl_LIBUNISTRING_ARG_OR_ZERO([ARG], [ORIG]) expands to ARG if it is not the
+dnl same as ORIG, otherwise to 0.
+m4_define([gl_LIBUNISTRING_ARG_OR_ZERO], [m4_if([$1], [$2], [0], [$1])])
diff --git a/m4/link-follow.m4 b/m4/link-follow.m4
new file mode 100644 (file)
index 0000000..256b2a9
--- /dev/null
@@ -0,0 +1,81 @@
+# serial 15
+dnl Run a program to determine whether link(2) follows symlinks.
+dnl Set LINK_FOLLOWS_SYMLINKS accordingly.
+
+# Copyright (C) 1999-2001, 2004-2006, 2009-2010 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl This macro can be used to emulate POSIX linkat.  If
+dnl LINK_FOLLOWS_SYMLINKS is 0, link matches linkat(,0), and
+dnl linkat(,AT_SYMLINK_FOLLOW) requires a readlink. If it is 1,
+dnl link matches linkat(,AT_SYMLINK_FOLLOW), and there is no way
+dnl to do linkat(,0) on symlinks (on all other file types,
+dnl link() is sufficient).  If it is -1, use a runtime test.
+AC_DEFUN([gl_FUNC_LINK_FOLLOWS_SYMLINK],
+[dnl
+  AC_CHECK_FUNCS_ONCE([readlink])
+  dnl Mingw lacks link, although gnulib provides a good replacement.
+  dnl However, it also lacks symlink, so there's nothing to test in
+  dnl the first place, and no reason to need to distinguish between
+  dnl linkat variants.  So, we set LINK_FOLLOWS_SYMLINKS to 0.
+  gl_link_follows_symlinks=0 # assume GNU behavior
+  if test $ac_cv_func_readlink = yes; then
+    AC_CACHE_CHECK([whether link(2) dereferences a symlink],
+                    gl_cv_func_link_follows_symlink,
+    [
+      # Create a regular file.
+      echo > conftest.file
+      AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#       include <sys/types.h>
+#       include <sys/stat.h>
+#       include <unistd.h>
+#       include <stdlib.h>
+
+#       define SAME_INODE(Stat_buf_1, Stat_buf_2) \
+          ((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
+           && (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
+
+        int
+        main ()
+        {
+          const char *file = "conftest.file";
+          const char *sym = "conftest.sym";
+          const char *hard = "conftest.hard";
+          struct stat sb_file, sb_hard;
+
+          /* Create a symlink to the regular file. */
+          if (symlink (file, sym))
+            return 2;
+
+          /* Create a hard link to that symlink.  */
+          if (link (sym, hard))
+            return 3;
+
+          if (lstat (hard, &sb_hard))
+            return 4;
+          if (lstat (file, &sb_file))
+            return 5;
+
+          /* If the dev/inode of hard and file are the same, then
+             the link call followed the symlink.  */
+          return SAME_INODE (sb_hard, sb_file) ? 1 : 0;
+        }
+      ]])],
+        [gl_cv_func_link_follows_symlink=no], dnl GNU behavior
+        [gl_cv_func_link_follows_symlink=yes], dnl Followed link/compile failed
+        [gl_cv_func_link_follows_symlink=unknown] dnl We're cross compiling.
+      )
+      rm -f conftest.file conftest.sym conftest.hard
+    ])
+    case $gl_cv_func_link_follows_symlink in
+      yes) gl_link_follows_symlinks=1 ;;
+      no) ;; # already defaulted to 0
+      *) gl_link_follows_symlinks=-1 ;;
+    esac
+  fi
+  AC_DEFINE_UNQUOTED([LINK_FOLLOWS_SYMLINKS], [$gl_link_follows_symlinks],
+    [Define to 1 if `link(2)' dereferences symbolic links, 0 if it
+     creates hard links to symlinks, and -1 if unknown.])
+])
diff --git a/m4/link.m4 b/m4/link.m4
new file mode 100644 (file)
index 0000000..0ca85d3
--- /dev/null
@@ -0,0 +1,38 @@
+# link.m4 serial 4
+dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_LINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([link])
+  if test $ac_cv_func_link = no; then
+    HAVE_LINK=0
+    AC_LIBOBJ([link])
+  else
+    AC_CACHE_CHECK([whether link handles trailing slash correctly],
+      [gl_cv_func_link_works],
+      [touch conftest.a
+       # Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.a conftest.lnk
+       fi
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+]], [[if (!link ("conftest.a", "conftest.b/")) return 1;
+#if HAVE_LSTAT
+      if (!link ("conftest.lnk/", "conftest.b")) return 2;
+#endif
+           ]])],
+         [gl_cv_func_link_works=yes], [gl_cv_func_link_works=no],
+         [gl_cv_func_link_works="guessing no"])
+       rm -f conftest.a conftest.b conftest.lnk])
+    if test "$gl_cv_func_link_works" != yes; then
+      REPLACE_LINK=1
+      AC_LIBOBJ([link])
+    fi
+  fi
+])
diff --git a/m4/linkat.m4 b/m4/linkat.m4
new file mode 100644 (file)
index 0000000..c0b2729
--- /dev/null
@@ -0,0 +1,99 @@
+# serial 3
+# See if we need to provide linkat replacement.
+
+dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_LINKAT],
+[
+  AC_REQUIRE([gl_FUNC_OPENAT])
+  AC_REQUIRE([gl_FUNC_LINK])
+  AC_REQUIRE([gl_FUNC_LINK_FOLLOWS_SYMLINK])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CHECK_FUNCS_ONCE([linkat symlink])
+  AC_CHECK_HEADERS_ONCE([sys/param.h])
+  if test $ac_cv_func_linkat = no; then
+    HAVE_LINKAT=0
+    AC_LIBOBJ([linkat])
+    AC_LIBOBJ([at-func2])
+  else
+    AC_CACHE_CHECK([whether linkat(,AT_SYMLINK_FOLLOW) works],
+      [gl_cv_func_linkat_follow],
+      [rm -rf conftest.f1 conftest.f2
+       touch conftest.f1
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <fcntl.h>
+#include <unistd.h>
+#ifdef __linux__
+/* Linux added linkat in 2.6.16, but did not add AT_SYMLINK_FOLLOW
+   until 2.6.18.  Always replace linkat to support older kernels.  */
+choke me
+#endif
+]], [return linkat (AT_FDCWD, "conftest.f1", AT_FDCWD, "conftest.f2",
+                    AT_SYMLINK_FOLLOW);])],
+         [gl_cv_func_linkat_follow=yes],
+         [gl_cv_func_linkat_follow="need runtime check"])
+       rm -rf conftest.f1 conftest.f2])
+    AC_CACHE_CHECK([whether linkat handles trailing slash correctly],
+      [gl_cv_func_linkat_slash],
+      [rm -rf conftest.a conftest.b conftest.c conftest.d
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <unistd.h>
+              #include <fcntl.h>
+              #include <errno.h>
+              #include <stdio.h>
+            ]],
+            [[int fd;
+              int err;
+              int ret;
+              /* Create a regular file.  */
+              fd = open ("conftest.a", O_CREAT | O_EXCL | O_WRONLY, 0600);
+              if (fd < 0)
+                return 1;
+              if (write (fd, "hello", 5) < 5)
+                return 2;
+              if (close (fd) < 0)
+                return 3;
+              /* Test whether hard links are supported on the current
+                 device.  */
+              if (linkat (AT_FDCWD, "conftest.a", AT_FDCWD, "conftest.b",
+                          AT_SYMLINK_FOLLOW) < 0)
+                return 0;
+              /* Test whether a trailing "/" is treated like "/.".  */
+              if (linkat (AT_FDCWD, "conftest.a/", AT_FDCWD, "conftest.c",
+                          AT_SYMLINK_FOLLOW) == 0)
+                return 4;
+              if (linkat (AT_FDCWD, "conftest.a", AT_FDCWD, "conftest.d/",
+                          AT_SYMLINK_FOLLOW) == 0)
+                return 5;
+              return 0;
+            ]])],
+         [gl_cv_func_linkat_slash=yes],
+         [gl_cv_func_linkat_slash=no],
+         [# Guess yes on glibc systems, no otherwise.
+          case "$host_os" in
+            *-gnu*) gl_cv_func_linkat_slash="guessing yes";;
+            *)      gl_cv_func_linkat_slash="guessing no";;
+          esac
+         ])
+       rm -rf conftest.a conftest.b conftest.c conftest.d])
+    case "$gl_cv_func_linkat_slash" in
+      *yes) gl_linkat_slash_bug=0 ;;
+      *)    gl_linkat_slash_bug=1 ;;
+    esac
+    if test "$gl_cv_func_linkat_follow" != yes \
+       || test $gl_linkat_slash_bug = 1; then
+      REPLACE_LINKAT=1
+      AC_LIBOBJ([linkat])
+      AC_DEFINE_UNQUOTED([LINKAT_TRAILING_SLASH_BUG], [$gl_linkat_slash_bug],
+        [Define to 1 if linkat fails to recognize a trailing slash.])
+    fi
+  fi
+])
index 001f53906f5e1464ac84e7679704ad210a36b456..e3534321d9549b9e8ede47a16f3e334058423d1e 100644 (file)
@@ -1,4 +1,4 @@
-# locale-fr.m4 serial 11
+# locale-fr.m4 serial 12
 dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -31,11 +31,14 @@ int main () {
      is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
      On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
      succeeds but then nl_langinfo(CODESET) is "646". In this situation,
-     some unit tests fail.  */
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
 #if HAVE_LANGINFO_CODESET
   {
     const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
       return 1;
   }
 #endif
index 0eedaf149aab11a18940ce2cfe63398b6a895f01..3168400251fea8920efd981ec3888fbcc78836d0 100644 (file)
@@ -1,4 +1,4 @@
-# locale-ja.m4 serial 7
+# locale-ja.m4 serial 8
 dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -33,11 +33,14 @@ int main ()
      is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
      On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
      succeeds but then nl_langinfo(CODESET) is "646". In this situation,
-     some unit tests fail.  */
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
 #if HAVE_LANGINFO_CODESET
   {
     const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
       return 1;
   }
 #endif
@@ -52,7 +55,7 @@ int main ()
   if (MB_CUR_MAX == 1)
     return 1;
   /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
-     This excludes the UTF-8 encoding.  */
+     This excludes the UTF-8 encoding (except on MirBSD).  */
   t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
   if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
   for (p = buf; *p != '\0'; p++)
index 777fd1418eddfeff2087d1509723d7ffac40452d..be176c15ed60364837420fe69b775fcacb2e7585 100644 (file)
@@ -1,4 +1,4 @@
-# locale-zh.m4 serial 6
+# locale-zh.m4 serial 7
 dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -34,11 +34,14 @@ int main ()
      is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
      On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
      succeeds but then nl_langinfo(CODESET) is "646". In this situation,
-     some unit tests fail.  */
+     some unit tests fail.
+     On MirBSD 10, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
 #if HAVE_LANGINFO_CODESET
   {
     const char *cs = nl_langinfo (CODESET);
-    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+        || strcmp (cs, "UTF-8") == 0)
       return 1;
   }
 #endif
@@ -49,7 +52,7 @@ int main ()
   if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
 #endif
   /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
-     This excludes the UTF-8 encoding.  */
+     This excludes the UTF-8 encoding (except on MirBSD).  */
   t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
   if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
   for (p = buf; *p != '\0'; p++)
index 9bf4dc2d046b4536500fd5526f1ab178976b91e1..b0612c7e1791a2adbb051ff7d2cb06e786967663 100644 (file)
@@ -1,4 +1,4 @@
-# lseek.m4 serial 5
+# lseek.m4 serial 6
 dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -10,15 +10,13 @@ AC_DEFUN([gl_FUNC_LSEEK],
   AC_REQUIRE([AC_PROG_CC])
   AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe],
     [if test $cross_compiling = no; then
-       AC_LINK_IFELSE([
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #include <sys/types.h> /* for off_t */
 #include <stdio.h> /* for SEEK_CUR */
-#include <unistd.h>
-int main ()
-{
+#include <unistd.h>]], [[
   /* Exit with success only if stdin is seekable.  */
   return lseek (0, (off_t)0, SEEK_CUR) < 0;
-}],
+]])],
          [if test -s conftest$ac_exeext \
              && ./conftest$ac_exeext < conftest.$ac_ext \
              && test 1 = "`echo hi \
@@ -29,11 +27,11 @@ int main ()
           fi],
          [gl_cv_func_lseek_pipe=no])
      else
-       AC_COMPILE_IFELSE([
+       AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) || defined __BEOS__
 /* mingw and BeOS mistakenly return 0 when trying to seek on pipes.  */
   Choke me.
-#endif],
+#endif]])],
          [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no])
      fi])
   if test $gl_cv_func_lseek_pipe = no; then
index 5dbd16e28ffe875a46d4696df5a4a164b32b929f..236af540e0321a95a4b83af0df5891565cebb7de 100644 (file)
@@ -1,4 +1,4 @@
-# serial 20
+# serial 21
 
 # Copyright (C) 1997-2001, 2003-2010 Free Software Foundation, Inc.
 #
@@ -26,3 +26,44 @@ AC_DEFUN([gl_FUNC_LSTAT],
     HAVE_LSTAT=0
   fi
 ])
+
+# Redefine AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK, because it is no longer
+# maintained in Autoconf.
+AC_DEFUN([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
+[
+  AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
+    [ac_cv_func_lstat_dereferences_slashed_symlink],
+    [rm -f conftest.sym conftest.file
+     echo >conftest.file
+     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [AC_INCLUDES_DEFAULT],
+            [[struct stat sbuf;
+              /* Linux will dereference the symlink and fail, as required by
+                 POSIX.  That is better in the sense that it means we will not
+                 have to compile and use the lstat wrapper.  */
+              return lstat ("conftest.sym/", &sbuf) == 0;
+            ]])],
+         [ac_cv_func_lstat_dereferences_slashed_symlink=yes],
+         [ac_cv_func_lstat_dereferences_slashed_symlink=no],
+         [# When cross-compiling, be pessimistic so we will end up using the
+          # replacement version of lstat that checks for trailing slashes and
+          # calls lstat a second time when necessary.
+          ac_cv_func_lstat_dereferences_slashed_symlink=no
+         ])
+     else
+       # If the 'ln -s' command failed, then we probably don't even
+       # have an lstat function.
+       ac_cv_func_lstat_dereferences_slashed_symlink=no
+     fi
+     rm -f conftest.sym conftest.file
+    ])
+  test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+    AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
+      [Define to 1 if `lstat' dereferences a symlink specified
+       with a trailing slash.])
+  if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then
+    AC_LIBOBJ([lstat])
+  fi
+])
index 910ac92292c8c9b2840ad1e9c8cfcb8d9a867f4c..7a749254a1f9c3cd21f873592cc0b3a3a49c579d 100644 (file)
@@ -1,25 +1,40 @@
-# malloc.m4 serial 9
+# malloc.m4 serial 12
 dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
+# gl_FUNC_MALLOC_GNU
+# ------------------
+# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
+# it is not.
+AC_DEFUN([gl_FUNC_MALLOC_GNU],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
+  _AC_FUNC_MALLOC_IF(
+    [AC_DEFINE([HAVE_MALLOC_GNU], [1],
+               [Define to 1 if your system has a GNU libc compatible 'malloc'
+                function, and to 0 otherwise.])],
+    [AC_DEFINE([HAVE_MALLOC_GNU], [0])
+     gl_REPLACE_MALLOC
+    ])
+])
+
 # gl_FUNC_MALLOC_POSIX
 # --------------------
 # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
 # fails), and replace malloc if it is not.
 AC_DEFUN([gl_FUNC_MALLOC_POSIX],
 [
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
   AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
   if test $gl_cv_func_malloc_posix = yes; then
-    HAVE_MALLOC_POSIX=1
     AC_DEFINE([HAVE_MALLOC_POSIX], [1],
       [Define if the 'malloc' function is POSIX compliant.])
   else
-    AC_LIBOBJ([malloc])
-    HAVE_MALLOC_POSIX=0
+    gl_REPLACE_MALLOC
   fi
-  AC_SUBST([HAVE_MALLOC_POSIX])
 ])
 
 # Test whether malloc, realloc, calloc are POSIX compliant,
@@ -32,10 +47,20 @@ AC_DEFUN([gl_CHECK_MALLOC_POSIX],
       dnl It is too dangerous to try to allocate a large amount of memory:
       dnl some systems go to their knees when you do that. So assume that
       dnl all Unix implementations of the function are POSIX compliant.
-      AC_TRY_COMPILE([],
-        [#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-         choke me
-         #endif
-        ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no])
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[]],
+           [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+             choke me
+             #endif
+            ]])],
+        [gl_cv_func_malloc_posix=yes],
+        [gl_cv_func_malloc_posix=no])
     ])
 ])
+
+AC_DEFUN([gl_REPLACE_MALLOC],
+[
+  AC_LIBOBJ([malloc])
+  REPLACE_MALLOC=1
+])
index 9ec93f561575d64d89959130279d6f90154bf0f3..28b9c43bfa6390a72c85a94a22b4d167ab369d89 100644 (file)
@@ -1,4 +1,4 @@
-# mbrtowc.m4 serial 16
+# mbrtowc.m4 serial 18
 dnl Copyright (C) 2001-2002, 2004-2005, 2008-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -11,38 +11,39 @@ AC_DEFUN([gl_FUNC_MBRTOWC],
 
   AC_REQUIRE([AC_TYPE_MBSTATE_T])
   gl_MBSTATE_T_BROKEN
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_MBRTOWC=1
-  fi
+
   AC_CHECK_FUNCS_ONCE([mbrtowc])
   if test $ac_cv_func_mbrtowc = no; then
     HAVE_MBRTOWC=0
-  fi
-  if test $HAVE_MBRTOWC != 0 && test $REPLACE_MBRTOWC != 1; then
-    gl_MBRTOWC_NULL_ARG
-    gl_MBRTOWC_RETVAL
-    gl_MBRTOWC_NUL_RETVAL
-    case "$gl_cv_func_mbrtowc_null_arg" in
-      *yes) ;;
-      *) AC_DEFINE([MBRTOWC_NULL_ARG_BUG], [1],
-           [Define if the mbrtowc function has the NULL string argument bug.])
-         REPLACE_MBRTOWC=1
-         ;;
-    esac
-    case "$gl_cv_func_mbrtowc_retval" in
-      *yes) ;;
-      *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1],
-           [Define if the mbrtowc function returns a wrong return value.])
-         REPLACE_MBRTOWC=1
-         ;;
-    esac
-    case "$gl_cv_func_mbrtowc_nul_retval" in
-      *yes) ;;
-      *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1],
-           [Define if the mbrtowc function does not return 0 for a NUL character.])
-         REPLACE_MBRTOWC=1
-         ;;
-    esac
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBRTOWC=1
+    else
+      gl_MBRTOWC_NULL_ARG
+      gl_MBRTOWC_RETVAL
+      gl_MBRTOWC_NUL_RETVAL
+      case "$gl_cv_func_mbrtowc_null_arg" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_NULL_ARG_BUG], [1],
+             [Define if the mbrtowc function has the NULL string argument bug.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_retval" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1],
+             [Define if the mbrtowc function returns a wrong return value.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+      case "$gl_cv_func_mbrtowc_nul_retval" in
+        *yes) ;;
+        *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1],
+             [Define if the mbrtowc function does not return 0 for a NUL character.])
+           REPLACE_MBRTOWC=1
+           ;;
+      esac
+    fi
   fi
   if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
     gl_REPLACE_WCHAR_H
@@ -100,14 +101,15 @@ AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
       dnl is present.
 changequote(,)dnl
       case "$host_os" in
-              # Guess no on AIX and OSF/1.
-        osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
-              # Guess yes otherwise.
-        *)    gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
+                     # Guess no on AIX and OSF/1.
+        aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;;
+                     # Guess yes otherwise.
+        *)           gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;;
       esac
 changequote([,])dnl
       if test $LOCALE_JA != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <string.h>
 #include <wchar.h>
@@ -125,7 +127,7 @@ int main ()
           return 1;
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_mbrtowc_incomplete_state=yes],
           [gl_cv_func_mbrtowc_incomplete_state=no],
           [:])
@@ -155,7 +157,8 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_ZH_CN != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <stdlib.h>
 #include <string.h>
@@ -177,7 +180,7 @@ int main ()
         return 1;
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_mbrtowc_sanitycheck=yes],
           [gl_cv_func_mbrtowc_sanitycheck=no],
           [:])
@@ -207,7 +210,8 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_FR_UTF8 != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <string.h>
 #include <wchar.h>
@@ -227,7 +231,10 @@ int main ()
         return 1;
     }
   return 0;
-}], [gl_cv_func_mbrtowc_null_arg=yes], [gl_cv_func_mbrtowc_null_arg=no], [:])
+}]])],
+          [gl_cv_func_mbrtowc_null_arg=yes],
+          [gl_cv_func_mbrtowc_null_arg=no],
+          [:])
       fi
     ])
 ])
@@ -257,7 +264,8 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <string.h>
 #include <wchar.h>
@@ -294,7 +302,7 @@ int main ()
         }
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_mbrtowc_retval=yes],
           [gl_cv_func_mbrtowc_retval=no],
           [:])
@@ -324,7 +332,8 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_ZH_CN != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <string.h>
 #include <wchar.h>
@@ -341,7 +350,7 @@ int main ()
         return 1;
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_mbrtowc_nul_retval=yes],
           [gl_cv_func_mbrtowc_nul_retval=no],
           [:])
index 13907a516773e0dff5ae5dfac94ca7855a4ffdb2..46c106fc492ee63d678282a8a61bdf5b03f3ecd2 100644 (file)
@@ -1,5 +1,5 @@
-# mbsinit.m4 serial 3
-dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+# mbsinit.m4 serial 4
+dnl Copyright (C) 2008, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -10,12 +10,14 @@ AC_DEFUN([gl_FUNC_MBSINIT],
 
   AC_REQUIRE([AC_TYPE_MBSTATE_T])
   gl_MBSTATE_T_BROKEN
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_MBSINIT=1
-  fi
+
   AC_CHECK_FUNCS_ONCE([mbsinit])
   if test $ac_cv_func_mbsinit = no; then
     HAVE_MBSINIT=0
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBSINIT=1
+    fi
   fi
   if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
     gl_REPLACE_WCHAR_H
index 846a29345fe2acc41f2d488fcc12328ebcd3fd22..e854337ffdcb04e85a77ce184c9ee7f9b359d602 100644 (file)
@@ -1,4 +1,4 @@
-# mbsrtowcs.m4 serial 5
+# mbsrtowcs.m4 serial 7
 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -10,19 +10,20 @@ AC_DEFUN([gl_FUNC_MBSRTOWCS],
 
   AC_REQUIRE([AC_TYPE_MBSTATE_T])
   gl_MBSTATE_T_BROKEN
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_MBSRTOWCS=1
-  fi
+
   AC_CHECK_FUNCS_ONCE([mbsrtowcs])
   if test $ac_cv_func_mbsrtowcs = no; then
     HAVE_MBSRTOWCS=0
-  fi
-  if test $HAVE_MBSRTOWCS != 0 && test $REPLACE_MBSRTOWCS != 1; then
-    gl_MBSRTOWCS_WORKS
-    case "$gl_cv_func_mbsrtowcs_works" in
-      *yes) ;;
-      *) REPLACE_MBSRTOWCS=1 ;;
-    esac
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_MBSRTOWCS=1
+    else
+      gl_MBSRTOWCS_WORKS
+      case "$gl_cv_func_mbsrtowcs_works" in
+        *yes) ;;
+        *) REPLACE_MBSRTOWCS=1 ;;
+      esac
+    fi
   fi
   if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then
     gl_REPLACE_WCHAR_H
@@ -56,7 +57,8 @@ changequote(,)dnl
       esac
 changequote([,])dnl
       if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <string.h>
 #include <wchar.h>
@@ -107,7 +109,7 @@ int main ()
           }
     }
   return 0;
-}],
+}]])],
           [gl_cv_func_mbsrtowcs_works=yes],
           [gl_cv_func_mbsrtowcs_works=no],
           [:])
index 94596ef959a860c5dbba620109bb0341f99528e0..b05a79a026ed4ccd8d1da71d3e203a7480face9e 100644 (file)
@@ -1,4 +1,4 @@
-# memchr.m4 serial 7
+# memchr.m4 serial 9
 dnl Copyright (C) 2002-2004, 2009-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -13,12 +13,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
 
   dnl These days, we assume memchr is present.  But just in case...
   AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  AC_REPLACE_FUNCS([memchr])
-  if test $ac_cv_func_memchr = no; then
-    gl_PREREQ_MEMCHR
-    REPLACE_MEMCHR=1
-  fi
-
+  AC_CHECK_FUNCS_ONCE([memchr])
   if test $ac_cv_func_memchr = yes; then
     # Detect platform-specific bugs in some versions of glibc:
     # memchr should not dereference anything with length 0
@@ -67,16 +62,22 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
       strcpy (fence - 9, "12345678");
       if (memchr (fence - 9, 0, 79) != fence - 1)
         return 2;
+      if (memchr (fence - 1, 0, 3) != fence - 1)
+        return 3;
     }
   return 0;
 ]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no],
       [dnl Be pessimistic for now.
        gl_cv_func_memchr_works="guessing no"])])
     if test "$gl_cv_func_memchr_works" != yes; then
-      gl_PREREQ_MEMCHR
       REPLACE_MEMCHR=1
-      AC_LIBOBJ([memchr])
     fi
+  else
+    HAVE_MEMCHR=0
+  fi
+  if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
+    AC_LIBOBJ([memchr])
+    gl_PREREQ_MEMCHR
   fi
 ])
 
diff --git a/m4/mkfifo.m4 b/m4/mkfifo.m4
new file mode 100644 (file)
index 0000000..8d1f634
--- /dev/null
@@ -0,0 +1,45 @@
+# serial 1
+# See if we need to provide mkfifo replacement.
+
+dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_MKFIFO],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([mkfifo])
+  if test $ac_cv_func_mkfifo = no; then
+    HAVE_MKFIFO=0
+    AC_LIBOBJ([mkfifo])
+  else
+    dnl Check for Solaris 9 and FreeBSD bug with trailing slash.
+    AC_CHECK_FUNCS_ONCE([lstat])
+    AC_CACHE_CHECK([whether mkfifo rejects trailing slashes],
+      [gl_cv_func_mkfifo_works],
+      [# Assume that if we have lstat, we can also check symlinks.
+       if test $ac_cv_func_lstat = yes; then
+         ln -s conftest.tmp conftest.lnk
+       fi
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <sys/stat.h>
+]], [[if (!mkfifo ("conftest.tmp/", 0600)) return 1;
+#if HAVE_LSTAT
+      if (!mkfifo ("conftest.lnk/", 0600)) return 2;
+#endif
+           ]])],
+         [gl_cv_func_mkfifo_works=yes], [gl_cv_func_mkfifo_works=no],
+         [gl_cv_func_mkfifo_works="guessing no"])
+       rm -f conftest.tmp conftest.lnk])
+    if test "$gl_cv_func_mkfifo_works" != yes; then
+      AC_DEFINE([MKFIFO_TRAILING_SLASH_BUG], [1], [Define to 1 if mkfifo
+        does not reject trailing slash])
+      REPLACE_MKFIFO=1
+      AC_LIBOBJ([mkfifo])
+    fi
+  fi
+])
diff --git a/m4/mkfifoat.m4 b/m4/mkfifoat.m4
new file mode 100644 (file)
index 0000000..0b373bb
--- /dev/null
@@ -0,0 +1,24 @@
+# serial 2
+# See if we need to provide mkfifoat/mknodat replacement.
+
+dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_MKFIFOAT],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_REQUIRE([gl_FUNC_OPENAT])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([mkfifoat mknodat])
+  if test $ac_cv_func_mkfifoat = no; then
+    # No known system has mkfifoat but not mknodat
+    HAVE_MKFIFOAT=0
+    HAVE_MKNODAT=0
+    AC_LIBOBJ([mkfifoat])
+    AC_LIBOBJ([mknodat])
+  fi
+])
diff --git a/m4/mknod.m4 b/m4/mknod.m4
new file mode 100644 (file)
index 0000000..c13644b
--- /dev/null
@@ -0,0 +1,50 @@
+# serial 2
+# See if we need to provide mknod replacement.
+
+dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_MKNOD],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_REQUIRE([gl_FUNC_MKFIFO])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([mknod])
+  if test $ac_cv_func_mknod = no; then
+    HAVE_MKNOD=0
+    AC_LIBOBJ([mknod])
+  else
+    dnl Detect BSD bug, where mknod requires root privileges to create fifo.
+    AC_CACHE_CHECK([whether mknod can create fifo without root privileges],
+      [gl_cv_func_mknod_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <sys/stat.h>
+             #include <unistd.h>
+]], [[/* Indeterminate for super-user, assume no.  Why are you running
+         configure as root, anyway?  */
+      if (!geteuid ()) return 99;
+      if (mknod ("conftest.fifo", S_IFIFO | 0600, 0)) return 2;]])],
+         [gl_cv_func_mknod_works=yes],
+         [if test $? == 99 && test x"$FORCE_UNSAFE_CONFIGURE" = x; then
+            AC_MSG_FAILURE([you should not run configure as root ]dnl
+[(set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)])
+          fi
+          gl_cv_func_mknod_works=no],
+         [gl_cv_func_mknod_works="guessing no"])
+       rm -f conftest.fifo])
+    if test "$gl_cv_func_mknod_works" != yes; then
+      AC_DEFINE([MKNOD_FIFO_BUG], [1], [Define to 1 if mknod cannot create
+        a fifo without super-user privileges])
+    fi
+    dnl Systems that mishandle trailing slash on mkfifo also goof on mknod.
+    if test $REPLACE_MKFIFO = 1 || test "$gl_cv_func_mknod_works" != yes; then
+      REPLACE_MKNOD=1
+      AC_LIBOBJ([mknod])
+    fi
+  fi
+])
index 44b8d87885361a1eb6181f13d5cf34bd43685b6c..3e3b22d40b203ad3f4c8162b8ff90f2fd7d1ea7e 100644 (file)
@@ -1,4 +1,4 @@
-# serial 15
+# serial 16
 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -7,10 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Jim Meyering.
 
-# Redefine AC_FUNC_MKTIME, to fix a bug in Autoconf 2.61a and earlier.
-# This redefinition can be removed once a new version of Autoconf is assumed.
-# The redefinition is taken from
-# <http://cvs.sv.gnu.org/viewcvs/*checkout*/autoconf/autoconf/lib/autoconf/functions.m4?rev=1.119>.
+# Redefine AC_FUNC_MKTIME, because it is no longer maintained in Autoconf.
 # AC_FUNC_MKTIME
 # --------------
 AC_DEFUN([AC_FUNC_MKTIME],
index d705b3a1eff807faf1fb50bc373fa1c4eceef7e8..d402da994dd7c94fdbbf16f724decd58d0cda20c 100644 (file)
@@ -1,4 +1,4 @@
-# open.m4 serial 8
+# open.m4 serial 9
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -22,7 +22,8 @@ AC_DEFUN([gl_FUNC_OPEN],
             touch conftest.tmp
             ln -s conftest.tmp conftest.lnk
           fi
-          AC_TRY_RUN([
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
 #include <fcntl.h>
 #if HAVE_UNISTD_H
 # include <unistd.h>
@@ -33,14 +34,16 @@ int main ()
   if (open ("conftest.lnk/", O_RDONLY) != -1) return 2;
 #endif
   return open ("conftest.sl/", O_CREAT, 0600) >= 0;
-}], [gl_cv_func_open_slash=yes], [gl_cv_func_open_slash=no],
+}]])],
+            [gl_cv_func_open_slash=yes],
+            [gl_cv_func_open_slash=no],
             [
 changequote(,)dnl
              case "$host_os" in
-               freebsd*)        gl_cv_func_open_slash="guessing no" ;;
-               solaris2.[0-9]*) gl_cv_func_open_slash="guessing no" ;;
-               hpux*)           gl_cv_func_open_slash="guessing no" ;;
-               *)               gl_cv_func_open_slash="guessing yes" ;;
+               freebsd* | aix* | hpux* | solaris2.[0-9]*)
+                 gl_cv_func_open_slash="guessing no" ;;
+               *)
+                 gl_cv_func_open_slash="guessing yes" ;;
              esac
 changequote([,])dnl
             ])
index 7975efb47e22ab04033a0ceccfb246eedb7af948..eec426a401b0bc73aff33b8f9fb72c1f5939dc89 100644 (file)
@@ -1,4 +1,4 @@
-# serial 27
+# serial 30
 # See if we need to use our replacement for Solaris' openat et al functions.
 
 dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
@@ -99,18 +99,23 @@ main ()
 # If we have the fchownat function, and it has the bug (in glibc-2.4)
 # that it dereferences symlinks even with AT_SYMLINK_NOFOLLOW, then
 # use the replacement function.
+# Also if the fchownat function, like chown, has the trailing slash bug,
+# use the replacement function.
 # Also use the replacement function if fchownat is simply not available.
 AC_DEFUN([gl_FUNC_FCHOWNAT],
 [
   AC_REQUIRE([gl_FUNC_CHOWN])
   AC_CHECK_FUNC([fchownat],
-    [gl_FUNC_FCHOWNAT_DEREF_BUG([REPLACE_FCHOWNAT=1
-      AC_DEFINE([FCHOWNAT_NOFOLLOW_BUG], [1], [Define to 1 if your
-      platform has fchownat, but it cannot perform lchown tasks.])])],
+    [gl_FUNC_FCHOWNAT_DEREF_BUG(
+       [REPLACE_FCHOWNAT=1
+        AC_DEFINE([FCHOWNAT_NOFOLLOW_BUG], [1],
+                  [Define to 1 if your platform has fchownat, but it cannot
+                   perform lchown tasks.])
+       ])
+     if test $REPLACE_CHOWN = 1; then
+       REPLACE_FCHOWNAT=1
+     fi],
     [HAVE_FCHOWNAT=0])
-  if test $REPLACE_CHOWN = 1; then
-    REPLACE_FCHOWNAT=1
-  fi
   if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
     AC_LIBOBJ([fchownat])
   fi
diff --git a/m4/parse-datetime.m4 b/m4/parse-datetime.m4
new file mode 100644 (file)
index 0000000..d781292
--- /dev/null
@@ -0,0 +1,53 @@
+# parse-datetime.m4 serial 18
+dnl Copyright (C) 2002-2006, 2008-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Define HAVE_COMPOUND_LITERALS if the C compiler supports compound literals
+dnl as in ISO C99.
+dnl Note that compound literals such as (struct s) { 3, 4 } can be used for
+dnl initialization of stack-allocated variables, but are not constant
+dnl expressions and therefore cannot be used as initializer for global or
+dnl static variables (even though gcc supports this in pre-C99 mode).
+AC_DEFUN([gl_C_COMPOUND_LITERALS],
+[
+  AC_CACHE_CHECK([for compound literals], [gl_cv_compound_literals],
+  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[struct s { int i, j; };]],
+      [[struct s t = (struct s) { 3, 4 };
+        if (t.i != 0) return 0;]])],
+    gl_cv_compound_literals=yes,
+    gl_cv_compound_literals=no)])
+  if test $gl_cv_compound_literals = yes; then
+    AC_DEFINE([HAVE_COMPOUND_LITERALS], [1],
+      [Define if you have compound literals.])
+  fi
+])
+
+AC_DEFUN([gl_PARSE_DATETIME],
+[
+  dnl Prerequisites of lib/parse-datetime.h.
+  AC_REQUIRE([AM_STDBOOL_H])
+  AC_REQUIRE([gl_TIMESPEC])
+
+  dnl Prerequisites of lib/parse-datetime.y.
+  AC_REQUIRE([gl_BISON])
+  AC_REQUIRE([gl_C_COMPOUND_LITERALS])
+  AC_STRUCT_TIMEZONE
+  AC_REQUIRE([gl_CLOCK_TIME])
+  AC_REQUIRE([gl_TM_GMTOFF])
+  AC_COMPILE_IFELSE(
+    [AC_LANG_SOURCE([[
+#include <time.h> /* for time_t */
+#include <limits.h> /* for CHAR_BIT, LONG_MIN, LONG_MAX */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+typedef int verify_min[2 * (LONG_MIN <= TYPE_MINIMUM (time_t)) - 1];
+typedef int verify_max[2 * (TYPE_MAXIMUM (time_t) <= LONG_MAX) - 1];
+       ]])],
+    [AC_DEFINE([TIME_T_FITS_IN_LONG_INT], [1],
+       [Define to 1 if all 'time_t' values fit in a 'long int'.])
+    ])
+])
index 960efe15d4e121d74e5ca16810c6597ef7545581..47f36a41a07323392df3f8ab862e27d98facfd76 100644 (file)
--- a/m4/po.m4
+++ b/m4/po.m4
@@ -29,7 +29,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
 
   dnl Release version of the gettext macros. This is used to ensure that
   dnl the gettext macros and po/Makefile.in.in are in sync.
-  AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
 
   dnl Perform the following tests also if --disable-nls has been given,
   dnl because they are needed for "make dist" to work.
index ebca5364c467d51f91324b50bb2b248b3cc725a0..e850862c0197425876a56074463edf5921f8e61c 100644 (file)
@@ -1,4 +1,4 @@
-# printf.m4 serial 33
+# printf.m4 serial 35
 dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,8 @@ AC_DEFUN([gl_PRINTF_SIZES_C99],
   AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
     [gl_cv_func_printf_sizes_c99],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stddef.h>
 #include <stdio.h>
 #include <string.h>
@@ -50,34 +51,36 @@ int main ()
       || strcmp (buf, "1.5 33") != 0)
     return 1;
   return 0;
-}], [gl_cv_func_printf_sizes_c99=yes], [gl_cv_func_printf_sizes_c99=no],
-      [
+}]])],
+        [gl_cv_func_printf_sizes_c99=yes],
+        [gl_cv_func_printf_sizes_c99=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_printf_sizes_c99="guessing yes";;
-                               # Guess yes on FreeBSD >= 5.
-         freebsd[1-4]*)        gl_cv_func_printf_sizes_c99="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
-         darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                               # Guess yes on OpenBSD >= 3.9.
-         openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                               gl_cv_func_printf_sizes_c99="guessing no";;
-         openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
-                               # Guess yes on Solaris >= 2.10.
-         solaris2.[0-9]*)      gl_cv_func_printf_sizes_c99="guessing no";;
-         solaris*)             gl_cv_func_printf_sizes_c99="guessing yes";;
-                               # Guess yes on NetBSD >= 3.
-         netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                               gl_cv_func_printf_sizes_c99="guessing no";;
-         netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_printf_sizes_c99="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4]*)        gl_cv_func_printf_sizes_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
+           darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_printf_sizes_c99="guessing no";;
+           openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[0-9]*)      gl_cv_func_printf_sizes_c99="guessing no";;
+           solaris*)             gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_printf_sizes_c99="guessing no";;
+           netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_sizes_c99="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -92,7 +95,8 @@ AC_DEFUN([gl_PRINTF_LONG_DOUBLE],
   AC_CACHE_CHECK([whether printf supports 'long double' arguments],
     [gl_cv_func_printf_long_double],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[10000];
@@ -111,16 +115,18 @@ int main ()
       || strcmp (buf, "1.75 33") != 0)
     return 1;
   return 0;
-}], [gl_cv_func_printf_long_double=yes], [gl_cv_func_printf_long_double=no],
-      [
+}]])],
+        [gl_cv_func_printf_long_double=yes],
+        [gl_cv_func_printf_long_double=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-         beos*)        gl_cv_func_printf_long_double="guessing no";;
-         mingw* | pw*) gl_cv_func_printf_long_double="guessing no";;
-         *)            gl_cv_func_printf_long_double="guessing yes";;
-       esac
+         case "$host_os" in
+           beos*)        gl_cv_func_printf_long_double="guessing no";;
+           mingw* | pw*) gl_cv_func_printf_long_double="guessing no";;
+           *)            gl_cv_func_printf_long_double="guessing yes";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -136,7 +142,8 @@ AC_DEFUN([gl_PRINTF_INFINITE],
   AC_CACHE_CHECK([whether printf supports infinite 'double' arguments],
     [gl_cv_func_printf_infinite],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static int
@@ -201,32 +208,34 @@ int main ()
         || strcmp (buf, "-0") != 0)
     return 1;
   return 0;
-}], [gl_cv_func_printf_infinite=yes], [gl_cv_func_printf_infinite=no],
-      [
+}]])],
+        [gl_cv_func_printf_infinite=yes],
+        [gl_cv_func_printf_infinite=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_printf_infinite="guessing yes";;
-                               # Guess yes on FreeBSD >= 6.
-         freebsd[1-5]*)        gl_cv_func_printf_infinite="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_printf_infinite="guessing no";;
-         darwin*)              gl_cv_func_printf_infinite="guessing yes";;
-                               # Guess yes on HP-UX >= 11.
-         hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
-         hpux*)                gl_cv_func_printf_infinite="guessing yes";;
-                               # Guess yes on NetBSD >= 3.
-         netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                               gl_cv_func_printf_infinite="guessing no";;
-         netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
-                               # Guess yes on BeOS.
-         beos*)                gl_cv_func_printf_infinite="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_printf_infinite="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on FreeBSD >= 6.
+           freebsd[1-5]*)        gl_cv_func_printf_infinite="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_infinite="guessing no";;
+           darwin*)              gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on HP-UX >= 11.
+           hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";;
+           hpux*)                gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_printf_infinite="guessing no";;
+           netbsd*)              gl_cv_func_printf_infinite="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_printf_infinite="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_infinite="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -252,7 +261,8 @@ AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE],
       AC_CACHE_CHECK([whether printf supports infinite 'long double' arguments],
         [gl_cv_func_printf_infinite_long_double],
         [
-          AC_TRY_RUN([
+          AC_RUN_IFELSE(
+            [AC_LANG_SOURCE([[
 ]GL_NOCRASH[
 #include <float.h>
 #include <stdio.h>
@@ -414,38 +424,38 @@ int main ()
   }
 #endif
   return 0;
-}],
-          [gl_cv_func_printf_infinite_long_double=yes],
-          [gl_cv_func_printf_infinite_long_double=no],
-          [
+}]])],
+            [gl_cv_func_printf_infinite_long_double=yes],
+            [gl_cv_func_printf_infinite_long_double=no],
+            [
 changequote(,)dnl
-           case "$host_cpu" in
-                                   # Guess no on ia64, x86_64, i386.
-             ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
-             *)
-               case "$host_os" in
-                                       # Guess yes on glibc systems.
-                 *-gnu*)               gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                       # Guess yes on FreeBSD >= 6.
-                 freebsd[1-5]*)        gl_cv_func_printf_infinite_long_double="guessing no";;
-                 freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                       # Guess yes on MacOS X >= 10.3.
-                 darwin[1-6].*)        gl_cv_func_printf_infinite_long_double="guessing no";;
-                 darwin*)              gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                       # Guess yes on HP-UX >= 11.
-                 hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
-                 hpux*)                gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                       # Guess yes on NetBSD >= 3.
-                 netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                                       gl_cv_func_printf_infinite_long_double="guessing no";;
-                 netbsd*)              gl_cv_func_printf_infinite_long_double="guessing yes";;
-                                       # If we don't know, assume the worst.
-                 *)                    gl_cv_func_printf_infinite_long_double="guessing no";;
-               esac
-               ;;
-           esac
+             case "$host_cpu" in
+                                     # Guess no on ia64, x86_64, i386.
+               ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";;
+               *)
+                 case "$host_os" in
+                                         # Guess yes on glibc systems.
+                   *-gnu*)               gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on FreeBSD >= 6.
+                   freebsd[1-5]*)        gl_cv_func_printf_infinite_long_double="guessing no";;
+                   freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on MacOS X >= 10.3.
+                   darwin[1-6].*)        gl_cv_func_printf_infinite_long_double="guessing no";;
+                   darwin*)              gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on HP-UX >= 11.
+                   hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";;
+                   hpux*)                gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # Guess yes on NetBSD >= 3.
+                   netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                         gl_cv_func_printf_infinite_long_double="guessing no";;
+                   netbsd*)              gl_cv_func_printf_infinite_long_double="guessing yes";;
+                                         # If we don't know, assume the worst.
+                   *)                    gl_cv_func_printf_infinite_long_double="guessing no";;
+                 esac
+                 ;;
+             esac
 changequote([,])dnl
-          ])
+            ])
         ])
       ;;
     *)
@@ -466,7 +476,8 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
   AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
     [gl_cv_func_printf_directive_a],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -512,26 +523,28 @@ int main ()
           && strcmp (buf, "0x8.0p-2") != 0))
     return 1;
   return 0;
-}], [gl_cv_func_printf_directive_a=yes], [gl_cv_func_printf_directive_a=no],
-      [
-       case "$host_os" in
-                               # Guess yes on glibc >= 2.5 systems.
-         *-gnu*)
-           AC_EGREP_CPP([BZ2908], [
-             #include <features.h>
-             #ifdef __GNU_LIBRARY__
-              #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)
-               BZ2908
-              #endif
-             #endif
-             ],
-             [gl_cv_func_printf_directive_a="guessing yes"],
-             [gl_cv_func_printf_directive_a="guessing no"])
-           ;;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_printf_directive_a="guessing no";;
-       esac
-      ])
+}]])],
+        [gl_cv_func_printf_directive_a=yes],
+        [gl_cv_func_printf_directive_a=no],
+        [
+         case "$host_os" in
+                                 # Guess yes on glibc >= 2.5 systems.
+           *-gnu*)
+             AC_EGREP_CPP([BZ2908], [
+               #include <features.h>
+               #ifdef __GNU_LIBRARY__
+                #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)
+                 BZ2908
+                #endif
+               #endif
+               ],
+               [gl_cv_func_printf_directive_a="guessing yes"],
+               [gl_cv_func_printf_directive_a="guessing no"])
+             ;;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_directive_a="guessing no";;
+         esac
+        ])
     ])
 ])
 
@@ -546,7 +559,8 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
   AC_CACHE_CHECK([whether printf supports the 'F' directive],
     [gl_cv_func_printf_directive_f],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -563,26 +577,28 @@ int main ()
       || strcmp (buf, "1234") != 0)
     return 1;
   return 0;
-}], [gl_cv_func_printf_directive_f=yes], [gl_cv_func_printf_directive_f=no],
-      [
+}]])],
+        [gl_cv_func_printf_directive_f=yes],
+        [gl_cv_func_printf_directive_f=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_printf_directive_f="guessing yes";;
-                               # Guess yes on FreeBSD >= 6.
-         freebsd[1-5]*)        gl_cv_func_printf_directive_f="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
-         darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
-                               # Guess yes on Solaris >= 2.10.
-         solaris2.[0-9]*)      gl_cv_func_printf_directive_f="guessing no";;
-         solaris*)             gl_cv_func_printf_directive_f="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_printf_directive_f="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on FreeBSD >= 6.
+           freebsd[1-5]*)        gl_cv_func_printf_directive_f="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
+           darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
+                                 # Guess yes on Solaris >= 2.10.
+           solaris2.[0-9]*)      gl_cv_func_printf_directive_f="guessing no";;
+           solaris*)             gl_cv_func_printf_directive_f="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_printf_directive_f="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -597,7 +613,8 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
   AC_CACHE_CHECK([whether printf supports the 'n' directive],
     [gl_cv_func_printf_directive_n],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char fmtstring[10];
@@ -614,14 +631,16 @@ int main ()
       || count != 4)
     return 1;
   return 0;
-}], [gl_cv_func_printf_directive_n=yes], [gl_cv_func_printf_directive_n=no],
-      [
+}]])],
+        [gl_cv_func_printf_directive_n=yes],
+        [gl_cv_func_printf_directive_n=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-         *)     gl_cv_func_printf_directive_n="guessing yes";;
-       esac
+         case "$host_os" in
+           *)     gl_cv_func_printf_directive_n="guessing yes";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -639,7 +658,8 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_LS],
   AC_CACHE_CHECK([whether printf supports the 'ls' directive],
     [gl_cv_func_printf_directive_ls],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
    <wchar.h>.
    BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
@@ -687,19 +707,21 @@ int main ()
       return 1;
   }
   return 0;
-}], [gl_cv_func_printf_directive_ls=yes], [gl_cv_func_printf_directive_ls=no],
-      [
+}]])],
+        [gl_cv_func_printf_directive_ls=yes],
+        [gl_cv_func_printf_directive_ls=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-         openbsd*)        gl_cv_func_printf_directive_ls="guessing no";;
-         irix*)           gl_cv_func_printf_directive_ls="guessing no";;
-         solaris*)        gl_cv_func_printf_directive_ls="guessing no";;
-         cygwin*)         gl_cv_func_printf_directive_ls="guessing no";;
-         beos* | haiku*)  gl_cv_func_printf_directive_ls="guessing no";;
-         *)               gl_cv_func_printf_directive_ls="guessing yes";;
-       esac
+         case "$host_os" in
+           openbsd*)        gl_cv_func_printf_directive_ls="guessing no";;
+           irix*)           gl_cv_func_printf_directive_ls="guessing no";;
+           solaris*)        gl_cv_func_printf_directive_ls="guessing no";;
+           cygwin*)         gl_cv_func_printf_directive_ls="guessing no";;
+           beos* | haiku*)  gl_cv_func_printf_directive_ls="guessing no";;
+           *)               gl_cv_func_printf_directive_ls="guessing yes";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -714,7 +736,8 @@ AC_DEFUN([gl_PRINTF_POSITIONS],
   AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions],
     [gl_cv_func_printf_positions],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 /* The string "%2$d %1$d", with dollar characters protected from the shell's
@@ -725,18 +748,20 @@ int main ()
 {
   sprintf (buf, format, 33, 55);
   return (strcmp (buf, "55 33") != 0);
-}], [gl_cv_func_printf_positions=yes], [gl_cv_func_printf_positions=no],
-      [
+}]])],
+        [gl_cv_func_printf_positions=yes],
+        [gl_cv_func_printf_positions=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-         netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
-                       gl_cv_func_printf_positions="guessing no";;
-         beos*)        gl_cv_func_printf_positions="guessing no";;
-         mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
-         *)            gl_cv_func_printf_positions="guessing yes";;
-       esac
+         case "$host_os" in
+           netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
+                         gl_cv_func_printf_positions="guessing no";;
+           beos*)        gl_cv_func_printf_positions="guessing no";;
+           mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
+           *)            gl_cv_func_printf_positions="guessing yes";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -751,7 +776,8 @@ AC_DEFUN([gl_PRINTF_FLAG_GROUPING],
   AC_CACHE_CHECK([whether printf supports the grouping flag],
     [gl_cv_func_printf_flag_grouping],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -761,17 +787,19 @@ int main ()
       || buf[strlen (buf) - 1] != '9')
     return 1;
   return 0;
-}], [gl_cv_func_printf_flag_grouping=yes], [gl_cv_func_printf_flag_grouping=no],
-      [
+}]])],
+        [gl_cv_func_printf_flag_grouping=yes],
+        [gl_cv_func_printf_flag_grouping=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-         cygwin*)      gl_cv_func_printf_flag_grouping="guessing no";;
-         netbsd*)      gl_cv_func_printf_flag_grouping="guessing no";;
-         mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
-         *)            gl_cv_func_printf_flag_grouping="guessing yes";;
-       esac
+         case "$host_os" in
+           cygwin*)      gl_cv_func_printf_flag_grouping="guessing no";;
+           netbsd*)      gl_cv_func_printf_flag_grouping="guessing no";;
+           mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
+           *)            gl_cv_func_printf_flag_grouping="guessing yes";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -787,7 +815,8 @@ AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
   AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
     [gl_cv_func_printf_flag_leftadjust],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -798,7 +827,7 @@ int main ()
       || strcmp (buf, "ab  c") != 0)
     return 1;
   return 0;
-}],
+}]])],
         [gl_cv_func_printf_flag_leftadjust=yes],
         [gl_cv_func_printf_flag_leftadjust=no],
         [
@@ -828,7 +857,8 @@ AC_DEFUN([gl_PRINTF_FLAG_ZERO],
   AC_CACHE_CHECK([whether printf supports the zero flag correctly],
     [gl_cv_func_printf_flag_zero],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -839,19 +869,21 @@ int main ()
           && strcmp (buf, "  infinity") != 0))
     return 1;
   return 0;
-}], [gl_cv_func_printf_flag_zero=yes], [gl_cv_func_printf_flag_zero=no],
-      [
+}]])],
+        [gl_cv_func_printf_flag_zero=yes],
+        [gl_cv_func_printf_flag_zero=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                 # Guess yes on glibc systems.
-         *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
-                 # Guess yes on BeOS.
-         beos*)  gl_cv_func_printf_flag_zero="guessing yes";;
-                 # If we don't know, assume the worst.
-         *)      gl_cv_func_printf_flag_zero="guessing no";;
-       esac
+         case "$host_os" in
+                   # Guess yes on glibc systems.
+           *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";;
+                   # Guess yes on BeOS.
+           beos*)  gl_cv_func_printf_flag_zero="guessing yes";;
+                   # If we don't know, assume the worst.
+           *)      gl_cv_func_printf_flag_zero="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -868,7 +900,8 @@ AC_DEFUN([gl_PRINTF_PRECISION],
   AC_CACHE_CHECK([whether printf supports large precisions],
     [gl_cv_func_printf_precision],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[5000];
@@ -881,17 +914,19 @@ int main ()
   if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
     return 1;
   return 0;
-}], [gl_cv_func_printf_precision=yes], [gl_cv_func_printf_precision=no],
-      [
+}]])],
+        [gl_cv_func_printf_precision=yes],
+        [gl_cv_func_printf_precision=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-         # Guess no only on native Win32 and BeOS systems.
-         mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
-         beos*)        gl_cv_func_printf_precision="guessing no" ;;
-         *)            gl_cv_func_printf_precision="guessing yes" ;;
-       esac
+         case "$host_os" in
+           # Guess no only on native Win32 and BeOS systems.
+           mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;;
+           beos*)        gl_cv_func_printf_precision="guessing no" ;;
+           *)            gl_cv_func_printf_precision="guessing yes" ;;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -1031,7 +1066,8 @@ AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
   AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
     [gl_cv_func_snprintf_truncation_c99],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -1042,47 +1078,49 @@ int main ()
   if (memcmp (buf, "45\0DEF", 6) != 0)
     return 1;
   return 0;
-}], [gl_cv_func_snprintf_truncation_c99=yes], [gl_cv_func_snprintf_truncation_c99=no],
-      [
+}]])],
+        [gl_cv_func_snprintf_truncation_c99=yes],
+        [gl_cv_func_snprintf_truncation_c99=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on FreeBSD >= 5.
-         freebsd[1-4]*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
-         darwin*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on OpenBSD >= 3.9.
-         openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                               gl_cv_func_snprintf_truncation_c99="guessing no";;
-         openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on Solaris >= 2.6.
-         solaris2.[0-5]*)      gl_cv_func_snprintf_truncation_c99="guessing no";;
-         solaris*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on AIX >= 4.
-         aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
-         aix*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on HP-UX >= 11.
-         hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
-         hpux*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on IRIX >= 6.5.
-         irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on OSF/1 >= 5.
-         osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
-         osf*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on NetBSD >= 3.
-         netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                               gl_cv_func_snprintf_truncation_c99="guessing no";;
-         netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # Guess yes on BeOS.
-         beos*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_snprintf_truncation_c99="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4]*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
+           darwin*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
+           openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5]*)      gl_cv_func_snprintf_truncation_c99="guessing no";;
+           solaris*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
+           aix*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on HP-UX >= 11.
+           hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
+           hpux*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on IRIX >= 6.5.
+           irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on OSF/1 >= 5.
+           osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
+           osf*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_truncation_c99="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_truncation_c99="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -1101,14 +1139,15 @@ dnl     }
 dnl     ---------------------------------------------------------------------
 dnl Result is gl_cv_func_snprintf_retval_c99.
 
-AC_DEFUN([gl_SNPRINTF_RETVAL_C99],
+AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99],
 [
   AC_REQUIRE([AC_PROG_CC])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
     [gl_cv_func_snprintf_retval_c99],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char buf[100];
@@ -1118,39 +1157,41 @@ int main ()
   if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
     return 1;
   return 0;
-}], [gl_cv_func_snprintf_retval_c99=yes], [gl_cv_func_snprintf_retval_c99=no],
-      [
+}]])],
+        [gl_cv_func_snprintf_retval_c99=yes],
+        [gl_cv_func_snprintf_retval_c99=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on FreeBSD >= 5.
-         freebsd[1-4]*)        gl_cv_func_snprintf_retval_c99="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
-         darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on OpenBSD >= 3.9.
-         openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
-                               gl_cv_func_snprintf_retval_c99="guessing no";;
-         openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on Solaris >= 2.6.
-         solaris2.[0-5]*)      gl_cv_func_snprintf_retval_c99="guessing no";;
-         solaris*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on AIX >= 4.
-         aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
-         aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on NetBSD >= 3.
-         netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                               gl_cv_func_snprintf_retval_c99="guessing no";;
-         netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # Guess yes on BeOS.
-         beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4]*)        gl_cv_func_snprintf_retval_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
+           darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on OpenBSD >= 3.9.
+           openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5]*)      gl_cv_func_snprintf_retval_c99="guessing no";;
+           solaris*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
+           aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_retval_c99="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -1165,7 +1206,8 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
   AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
     [gl_cv_func_snprintf_directive_n],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 #include <string.h>
 static char fmtstring[10];
@@ -1181,40 +1223,42 @@ int main ()
   if (count != 6)
     return 1;
   return 0;
-}], [gl_cv_func_snprintf_directive_n=yes], [gl_cv_func_snprintf_directive_n=no],
-      [
+}]])],
+        [gl_cv_func_snprintf_directive_n=yes],
+        [gl_cv_func_snprintf_directive_n=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on FreeBSD >= 5.
-         freebsd[1-4]*)        gl_cv_func_snprintf_directive_n="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing no";;
-         darwin*)              gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on Solaris >= 2.6.
-         solaris2.[0-5]*)      gl_cv_func_snprintf_directive_n="guessing no";;
-         solaris*)             gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on AIX >= 4.
-         aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing no";;
-         aix*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on IRIX >= 6.5.
-         irix6.5)              gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on OSF/1 >= 5.
-         osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing no";;
-         osf*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on NetBSD >= 3.
-         netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                               gl_cv_func_snprintf_directive_n="guessing no";;
-         netbsd*)              gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # Guess yes on BeOS.
-         beos*)                gl_cv_func_snprintf_directive_n="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_snprintf_directive_n="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4]*)        gl_cv_func_snprintf_directive_n="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing no";;
+           darwin*)              gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5]*)      gl_cv_func_snprintf_directive_n="guessing no";;
+           solaris*)             gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing no";;
+           aix*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on IRIX >= 6.5.
+           irix6.5)              gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on OSF/1 >= 5.
+           osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing no";;
+           osf*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_snprintf_directive_n="guessing no";;
+           netbsd*)              gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_snprintf_directive_n="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_snprintf_directive_n="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -1229,17 +1273,18 @@ AC_DEFUN([gl_SNPRINTF_SIZE1],
   AC_CACHE_CHECK([whether snprintf respects a size of 1],
     [gl_cv_func_snprintf_size1],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdio.h>
 int main()
 {
   static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
   snprintf (buf, 1, "%d", 12345);
   return buf[1] != 'E';
-}],
-      [gl_cv_func_snprintf_size1=yes],
-      [gl_cv_func_snprintf_size1=no],
-      [gl_cv_func_snprintf_size1="guessing yes"])
+}]])],
+        [gl_cv_func_snprintf_size1=yes],
+        [gl_cv_func_snprintf_size1=no],
+        [gl_cv_func_snprintf_size1="guessing yes"])
     ])
 ])
 
@@ -1286,7 +1331,8 @@ AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99],
   AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99],
     [gl_cv_func_vsnprintf_zerosize_c99],
     [
-      AC_TRY_RUN([
+      AC_RUN_IFELSE(
+        [AC_LANG_SOURCE([[
 #include <stdarg.h>
 #include <stdio.h>
 static int my_snprintf (char *buf, int size, const char *format, ...)
@@ -1303,43 +1349,43 @@ int main()
   static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' };
   my_snprintf (buf, 0, "%d", 12345);
   return buf[0] != 'D';
-}],
-      [gl_cv_func_vsnprintf_zerosize_c99=yes],
-      [gl_cv_func_vsnprintf_zerosize_c99=no],
-      [
+}]])],
+        [gl_cv_func_vsnprintf_zerosize_c99=yes],
+        [gl_cv_func_vsnprintf_zerosize_c99=no],
+        [
 changequote(,)dnl
-       case "$host_os" in
-                               # Guess yes on glibc systems.
-         *-gnu*)               gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on FreeBSD >= 5.
-         freebsd[1-4]*)        gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on MacOS X >= 10.3.
-         darwin[1-6].*)        gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
-         darwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on Cygwin.
-         cygwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on Solaris >= 2.6.
-         solaris2.[0-5]*)      gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
-         solaris*)             gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on AIX >= 4.
-         aix[1-3]*)            gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
-         aix*)                 gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on IRIX >= 6.5.
-         irix6.5)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on NetBSD >= 3.
-         netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
-                               gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
-         netbsd*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on BeOS.
-         beos*)                gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # Guess yes on mingw.
-         mingw* | pw*)         gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
-                               # If we don't know, assume the worst.
-         *)                    gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
-       esac
+         case "$host_os" in
+                                 # Guess yes on glibc systems.
+           *-gnu*)               gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on FreeBSD >= 5.
+           freebsd[1-4]*)        gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on MacOS X >= 10.3.
+           darwin[1-6].*)        gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           darwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on Cygwin.
+           cygwin*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on Solaris >= 2.6.
+           solaris2.[0-5]*)      gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           solaris*)             gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on AIX >= 4.
+           aix[1-3]*)            gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           aix*)                 gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on IRIX >= 6.5.
+           irix6.5)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on NetBSD >= 3.
+           netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
+                                 gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+           netbsd*)              gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on BeOS.
+           beos*)                gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # Guess yes on mingw.
+           mingw* | pw*)         gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
+                                 # If we don't know, assume the worst.
+           *)                    gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
+         esac
 changequote([,])dnl
-      ])
+        ])
     ])
 ])
 
@@ -1401,7 +1447,7 @@ dnl   Cygwin 1.5.19 (2006)           #  .  .  #  #  #  .  #  .  #  .  #  #  #  .
 dnl   Solaris 10                     .  .  #  #  #  .  .  #  .  .  .  #  .  .  .  .  .  .  .  .
 dnl   Solaris 2.6 ... 9              #  .  #  #  #  #  .  #  .  .  .  #  .  .  .  .  .  .  .  .
 dnl   Solaris 2.5.1                  #  .  #  #  #  #  .  #  .  .  .  #  .  .  #  #  #  #  #  #
-dnl   AIX 5.2                        .  .  #  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
+dnl   AIX 5.2, 7.1                   .  .  #  #  #  .  .  .  .  .  .  #  .  .  .  .  .  .  .  .
 dnl   AIX 4.3.2, 5.1                 #  .  #  #  #  #  .  .  .  .  .  #  .  .  .  .  .  .  .  .
 dnl   HP-UX 11.31                    .  .  .  .  #  .  .  .  .  .  .  #  .  .  .  .  #  #  .  .
 dnl   HP-UX 11.{00,11,23}            #  .  .  .  #  #  .  .  .  .  .  #  .  .  .  .  #  #  .  #
index 205b00c6c1d11e5949b818fb0f76c1e5fc5b99d6..aaa18961899a6e3c7c64055a7102ca284b500313 100644 (file)
@@ -1,4 +1,4 @@
-# serial 6
+# serial 7
 
 # Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 #
@@ -12,4 +12,5 @@ AC_DEFUN([gl_PRIV_SET],
 [
   AC_REQUIRE([AC_C_INLINE])
   AC_CHECK_FUNCS([getppriv])
+  AC_CHECK_HEADERS_ONCE([priv.h])
 ])
index 2d804ac99d7087a595be309ce76de5c98f89ce92..9ffa5c0202ccbde432409c50e5d3ff3c9e7ccb1b 100644 (file)
@@ -1,4 +1,4 @@
-# progtest.m4 serial 6 (gettext-0.18)
+# progtest.m4 serial 7 (gettext-0.18.2)
 dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -27,15 +27,14 @@ AC_DEFUN([AM_PATH_PROG_WITH_TEST],
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
 fi
 
 # Find out how to test for executable files. Don't use a zero-byte file,
diff --git a/m4/readlinkat.m4 b/m4/readlinkat.m4
new file mode 100644 (file)
index 0000000..a389749
--- /dev/null
@@ -0,0 +1,21 @@
+# serial 1
+# See if we need to provide readlinkat replacement.
+
+dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_READLINKAT],
+[
+  AC_REQUIRE([gl_FUNC_OPENAT])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([readlinkat])
+  if test $ac_cv_func_readlinkat = no; then
+    HAVE_READLINKAT=0
+    AC_LIBOBJ([readlinkat])
+  fi
+])
index dc30235c176cb5f7228dfbf091aaed3f96d8f9c6..01c1234f7e2f33b95639eb809aa769b95c88f257 100644 (file)
@@ -1,23 +1,44 @@
-# realloc.m4 serial 9
+# realloc.m4 serial 11
 dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
+# gl_FUNC_REALLOC_GNU
+# -------------------
+# Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace
+# realloc if it is not.
+AC_DEFUN([gl_FUNC_REALLOC_GNU],
+[
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+  dnl _AC_FUNC_REALLOC_IF is defined in Autoconf.
+  _AC_FUNC_REALLOC_IF(
+    [AC_DEFINE([HAVE_REALLOC_GNU], [1],
+               [Define to 1 if your system has a GNU libc compatible 'realloc'
+                function, and to 0 otherwise.])],
+    [AC_DEFINE([HAVE_REALLOC_GNU], [0])
+     gl_REPLACE_REALLOC
+    ])
+])# gl_FUNC_REALLOC_GNU
+
 # gl_FUNC_REALLOC_POSIX
 # ---------------------
 # Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
 # fails), and replace realloc if it is not.
 AC_DEFUN([gl_FUNC_REALLOC_POSIX],
 [
+  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
   AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
   if test $gl_cv_func_malloc_posix = yes; then
-    HAVE_REALLOC_POSIX=1
     AC_DEFINE([HAVE_REALLOC_POSIX], [1],
       [Define if the 'realloc' function is POSIX compliant.])
   else
-    AC_LIBOBJ([realloc])
-    HAVE_REALLOC_POSIX=0
+    gl_REPLACE_REALLOC
   fi
-  AC_SUBST([HAVE_REALLOC_POSIX])
+])
+
+AC_DEFUN([gl_REPLACE_REALLOC],
+[
+  AC_LIBOBJ([realloc])
+  REPLACE_REALLOC=1
 ])
index 6bd6b8f7d4e6218874d715bf7041b9aa91cbdca6..38f1dd76b61030a7afe77d8050a30a156d5ba695 100644 (file)
@@ -1,4 +1,4 @@
-# serial 55
+# serial 56
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
 # 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@@ -96,8 +96,9 @@ AC_DEFUN([gl_REGEX],
             if (!s)
               return 1;
 
-            /* Ensure that [b-a] is diagnosed as invalid. */
-            re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+            /* Ensure that [b-a] is diagnosed as invalid, when
+               using RE_NO_EMPTY_RANGES. */
+            re_set_syntax (RE_SYNTAX_POSIX_EGREP | RE_NO_EMPTY_RANGES);
             memset (&regex, 0, sizeof regex);
             s = re_compile_pattern ("a[b-a]", 6, &regex);
             if (s == 0)
@@ -157,12 +158,17 @@ AC_DEFUN([gl_REGEX],
             if (! REG_STARTEND)
               return 1;
 
-            /* Reject hosts whose regoff_t values are too narrow.
-               These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t
-               and 32-bit int.  */
+#if 0
+            /* It would be nice to reject hosts whose regoff_t values are too
+               narrow (including glibc on hosts with 64-bit ptrdiff_t and
+               32-bit int), but we should wait until glibc implements this
+               feature.  Otherwise, support for equivalence classes and
+               multibyte collation symbols would always be broken except
+               when compiling --without-included-regex.   */
             if (sizeof (regoff_t) < sizeof (ptrdiff_t)
                 || sizeof (regoff_t) < sizeof (ssize_t))
               return 1;
+#endif
 
             return 0;]])],
        [gl_cv_func_re_compile_pattern_working=yes],
diff --git a/m4/rename.m4 b/m4/rename.m4
new file mode 100644 (file)
index 0000000..30daf0e
--- /dev/null
@@ -0,0 +1,158 @@
+# serial 22
+
+# Copyright (C) 2001, 2003, 2005-2006, 2009-2010 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Volker Borchert.
+dnl Determine whether rename works for source file names with a trailing slash.
+dnl The rename from SunOS 4.1.1_U1 doesn't.
+dnl
+dnl If it doesn't, then define RENAME_TRAILING_SLASH_BUG and arrange
+dnl to compile the wrapper function.
+dnl
+
+AC_DEFUN([gl_FUNC_RENAME],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([lstat])
+
+  dnl Solaris 10, AIX 7.1 mistakenly allow rename("file","name/").
+  dnl NetBSD 1.6 mistakenly forbids rename("dir","name/").
+  dnl FreeBSD 7.2 mistakenly allows rename("file","link-to-file/").
+  dnl The Solaris bug can be worked around without stripping
+  dnl trailing slash, while the NetBSD bug requires stripping;
+  dnl the two conditions can be distinguished by whether hard
+  dnl links are also broken.
+  AC_CACHE_CHECK([whether rename honors trailing slash on destination],
+    [gl_cv_func_rename_slash_dst_works],
+    [rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.lnk
+    touch conftest.f && mkdir conftest.d1 ||
+      AC_MSG_ERROR([cannot create temporary files])
+    # Assume that if we have lstat, we can also check symlinks.
+    if test $ac_cv_func_lstat = yes; then
+      ln -s conftest.f conftest.lnk
+    fi
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#       include <stdio.h>
+#       include <stdlib.h>
+]], [if (rename ("conftest.f", "conftest.f1/") == 0) return 1;
+     if (rename ("conftest.d1", "conftest.d2/") != 0) return 2;
+#if HAVE_LSTAT
+     if (rename ("conftest.f", "conftest.lnk/") == 0) return 3;
+#endif
+    ])],
+      [gl_cv_func_rename_slash_dst_works=yes],
+      [gl_cv_func_rename_slash_dst_works=no],
+      dnl When crosscompiling, assume rename is broken.
+      [gl_cv_func_rename_slash_dst_works="guessing no"])
+    rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.lnk
+  ])
+  if test "x$gl_cv_func_rename_slash_dst_works" != xyes; then
+    AC_LIBOBJ([rename])
+    REPLACE_RENAME=1
+    AC_DEFINE([RENAME_TRAILING_SLASH_DEST_BUG], [1],
+      [Define if rename does not correctly handle slashes on the destination
+       argument, such as on Solaris 10 or NetBSD 1.6.])
+  fi
+
+  dnl SunOS 4.1.1_U1 mistakenly forbids rename("dir/","name").
+  dnl Solaris 9 mistakenly allows rename("file/","name").
+  dnl FreeBSD 7.2 mistakenly allows rename("link-to-file/","name").
+  dnl These bugs require stripping trailing slash to avoid corrupting
+  dnl symlinks with a trailing slash.
+  AC_CACHE_CHECK([whether rename honors trailing slash on source],
+    [gl_cv_func_rename_slash_src_works],
+    [rm -rf conftest.f conftest.d1 conftest.d2 conftest.lnk
+    touch conftest.f && mkdir conftest.d1 ||
+      AC_MSG_ERROR([cannot create temporary files])
+    # Assume that if we have lstat, we can also check symlinks.
+    if test $ac_cv_func_lstat = yes; then
+      ln -s conftest.f conftest.lnk
+    fi
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#       include <stdio.h>
+#       include <stdlib.h>
+]], [if (rename ("conftest.f/", "conftest.d2") == 0) return 1;
+     if (rename ("conftest.d1/", "conftest.d2") != 0) return 2;
+#if HAVE_LSTAT
+     if (rename ("conftest.lnk/", "conftest.f") == 0) return 3;
+#endif
+    ])],
+      [gl_cv_func_rename_slash_src_works=yes],
+      [gl_cv_func_rename_slash_src_works=no],
+      dnl When crosscompiling, assume rename is broken.
+      [gl_cv_func_rename_slash_src_works="guessing no"])
+    rm -rf conftest.f conftest.d1 conftest.d2 conftest.lnk
+  ])
+  if test "x$gl_cv_func_rename_slash_src_works" != xyes; then
+    AC_LIBOBJ([rename])
+    REPLACE_RENAME=1
+    AC_DEFINE([RENAME_TRAILING_SLASH_SOURCE_BUG], [1],
+      [Define if rename does not correctly handle slashes on the source
+       argument, such as on Solaris 9 or cygwin 1.5.])
+  fi
+
+  dnl NetBSD 1.6 and cygwin 1.5.x mistakenly reduce hard link count
+  dnl on rename("h1","h2").
+  dnl This bug requires stat'ting targets prior to attempting rename.
+  AC_CACHE_CHECK([whether rename manages hard links correctly],
+    [gl_cv_func_rename_link_works],
+    [rm -rf conftest.f conftest.f1
+    if touch conftest.f && ln conftest.f conftest.f1 &&
+        set x `ls -i conftest.f conftest.f1` && test "$2" = "$4"; then
+      AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#       include <stdio.h>
+#       include <stdlib.h>
+#       include <unistd.h>
+]], [if (rename ("conftest.f", "conftest.f1")) return 1;
+     if (unlink ("conftest.f1")) return 2;
+     if (rename ("conftest.f", "conftest.f")) return 3;
+     if (rename ("conftest.f1", "conftest.f1") == 0) return 4;])],
+        [gl_cv_func_rename_link_works=yes],
+        [gl_cv_func_rename_link_works=no],
+        dnl When crosscompiling, assume rename is broken.
+        [gl_cv_func_rename_link_works="guessing no"])
+    else
+      gl_cv_func_rename_link_works="guessing no"
+    fi
+    rm -rf conftest.f conftest.f1
+  ])
+  if test "x$gl_cv_func_rename_link_works" != xyes; then
+    AC_LIBOBJ([rename])
+    REPLACE_RENAME=1
+    AC_DEFINE([RENAME_HARD_LINK_BUG], [1],
+      [Define if rename fails to leave hard links alone, as on NetBSD 1.6
+       or Cygwin 1.5.])
+  fi
+
+  dnl Cygwin 1.5.x mistakenly allows rename("dir","file").
+  dnl mingw mistakenly forbids rename("dir1","dir2").
+  dnl These bugs require stripping trailing slash to avoid corrupting
+  dnl symlinks with a trailing slash.
+  AC_CACHE_CHECK([whether rename manages existing destinations correctly],
+    [gl_cv_func_rename_dest_works],
+    [rm -rf conftest.f conftest.d1 conftest.d2
+    touch conftest.f && mkdir conftest.d1 conftest.d2 ||
+      AC_MSG_ERROR([cannot create temporary files])
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#       include <stdio.h>
+#       include <stdlib.h>
+]], [if (rename ("conftest.d1", "conftest.d2") != 0) return 1;
+     if (rename ("conftest.d2", "conftest.f") == 0) return 2;])],
+      [gl_cv_func_rename_dest_works=yes],
+      [gl_cv_func_rename_dest_works=no],
+      dnl When crosscompiling, assume rename is broken.
+      [gl_cv_func_rename_dest_works="guessing no"])
+    rm -rf conftest.f conftest.d1 conftest.d2
+  ])
+  if test "x$gl_cv_func_rename_dest_works" != xyes; then
+    AC_LIBOBJ([rename])
+    REPLACE_RENAME=1
+    AC_DEFINE([RENAME_DEST_EXISTS_BUG], [1],
+      [Define if rename does not work when the destination file exists,
+       as on Cygwin 1.5 or Windows.])
+  fi
+])
diff --git a/m4/renameat.m4 b/m4/renameat.m4
new file mode 100644 (file)
index 0000000..4d514a1
--- /dev/null
@@ -0,0 +1,28 @@
+# serial 2
+# See if we need to provide renameat replacement.
+
+dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_RENAMEAT],
+[
+  AC_REQUIRE([gl_FUNC_OPENAT])
+  AC_REQUIRE([gl_FUNC_RENAME])
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([renameat])
+  if test $ac_cv_func_renameat = no; then
+    HAVE_RENAMEAT=0
+    AC_LIBOBJ([renameat])
+    AC_LIBOBJ([at-func2])
+  elif test $REPLACE_RENAME = 1; then
+    dnl Solaris 9 and 10 have the same bugs in renameat as in rename.
+    REPLACE_RENAMEAT=1
+    AC_LIBOBJ([renameat])
+    AC_LIBOBJ([at-func2])
+  fi
+])
index 8d6bee8bb5a5d4c5fc340ccaecea9be13120356c..a8a113eef03846b2bf4ff5766f9c6d4c4df04162 100644 (file)
@@ -1,4 +1,4 @@
-# rmdir.m4 serial 7
+# rmdir.m4 serial 8
 dnl Copyright (C) 2002, 2005, 2009-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -8,37 +8,22 @@ AC_DEFUN([gl_FUNC_RMDIR],
 [
   AC_REQUIRE([gl_AC_DOS])
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  dnl FIXME: simplify this module in 2010 if no one reports a missing rmdir
-  AC_REPLACE_FUNCS([rmdir])
-  if test $ac_cv_func_rmdir = no; then
-    REPLACE_RMDIR=1
-    # If someone lacks rmdir, make configure fail, and request
-    # a bug report to inform us about it.
-    if test x"$SKIP_RMDIR_CHECK" != xyes; then
-      AC_MSG_FAILURE([Your system lacks the rmdir function.
-              Please report this, along with the output of "uname -a", to the
-              bug-coreutils@gnu.org mailing list.  To continue past this point,
-              rerun configure with SKIP_RMDIR_CHECK=yes.
-              E.g., ./configure SKIP_RMDIR_CHECK=yes])
-    fi
-  else
-    dnl Detect cygwin 1.5.x bug.
-    AC_CACHE_CHECK([whether rmdir works], [gl_cv_func_rmdir_works],
-      [mkdir conftest.dir
-       touch conftest.file
-       AC_RUN_IFELSE(
-         [AC_LANG_PROGRAM(
-           [[#include <stdio.h>
-             #include <errno.h>
-             #include <unistd.h>
+  dnl Detect cygwin 1.5.x bug.
+  AC_CACHE_CHECK([whether rmdir works], [gl_cv_func_rmdir_works],
+    [mkdir conftest.dir
+     touch conftest.file
+     AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+         [[#include <stdio.h>
+           #include <errno.h>
+           #include <unistd.h>
 ]], [[return !rmdir ("conftest.file/") || errno != ENOTDIR
        || !rmdir ("conftest.dir/./");]])],
-         [gl_cv_func_rmdir_works=yes], [gl_cv_func_rmdir_works=no],
-         [gl_cv_func_rmdir_works="guessing no"])
-       rm -rf conftest.dir conftest.file])
-    if test x"$gl_cv_func_rmdir_works" != xyes; then
-      REPLACE_RMDIR=1
-      AC_LIBOBJ([rmdir])
-    fi
+       [gl_cv_func_rmdir_works=yes], [gl_cv_func_rmdir_works=no],
+       [gl_cv_func_rmdir_works="guessing no"])
+     rm -rf conftest.dir conftest.file])
+  if test x"$gl_cv_func_rmdir_works" != xyes; then
+    REPLACE_RMDIR=1
+    AC_LIBOBJ([rmdir])
   fi
 ])
diff --git a/m4/same.m4 b/m4/same.m4
deleted file mode 100644 (file)
index 73c82bb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#serial 8
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2010 Free Software Foundation,
-dnl Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_SAME],
-[
-  AC_LIBOBJ([same])
-
-  dnl Prerequisites of lib/same.c.
-  AC_REQUIRE([AC_SYS_LONG_FILE_NAMES])
-  AC_CHECK_FUNCS_ONCE([pathconf])
-])
index ae4dd863fc4574401dd4e22b5c3c9a585fd37dbb..de7171ee5226dc8d2557bc487a863926f3f2c99f 100644 (file)
@@ -1,4 +1,4 @@
-# setenv.m4 serial 15
+# setenv.m4 serial 18
 dnl Copyright (C) 2001-2004, 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -25,6 +25,7 @@ AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
        #include <stdlib.h>
        #include <errno.h>
+       #include <string.h>
       ]], [[
        if (setenv ("", "", 0) != -1) return 1;
        if (errno != EINVAL) return 2;
@@ -52,7 +53,10 @@ AC_DEFUN([gl_FUNC_UNSETENV],
   else
     dnl Some BSDs return void, failing to do error checking.
     AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
-      [AC_TRY_COMPILE([#include <stdlib.h>
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[
+#include <stdlib.h>
 extern
 #ifdef __cplusplus
 "C"
@@ -62,7 +66,10 @@ int unsetenv (const char *name);
 #else
 int unsetenv();
 #endif
-], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')])
+            ]],
+            [[]])],
+         [gt_cv_func_unsetenv_ret='int'],
+         [gt_cv_func_unsetenv_ret='void'])])
     if test $gt_cv_func_unsetenv_ret = 'void'; then
       AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void
        instead of int.])
@@ -71,10 +78,12 @@ int unsetenv();
     fi
 
     dnl Solaris 10 unsetenv does not remove all copies of a name.
-    AC_CACHE_CHECK([whether unsetenv works on duplicates],
+    dnl OpenBSD 4.7 unsetenv("") does not fail.
+    AC_CACHE_CHECK([whether unsetenv obeys POSIX],
       [gl_cv_func_unsetenv_works],
       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
        #include <stdlib.h>
+       #include <errno.h>
       ]], [[
        char entry[] = "b=2";
        if (putenv ((char *) "a=1")) return 1;
@@ -82,6 +91,7 @@ int unsetenv();
        entry[0] = 'a';
        unsetenv ("a");
        if (getenv ("a")) return 3;
+       if (!unsetenv ("") || errno != EINVAL) return 4;
       ]])],
       [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no],
       [gl_cv_func_unsetenv_works="guessing no"])])
index ce992db1f18336a0775f3bd98bdd12cdb7e4e70f..f3b1a9dfb2074f1cb667ef70f15c3c32456541ef 100644 (file)
@@ -1,4 +1,4 @@
-# size_max.m4 serial 9
+# size_max.m4 serial 10
 dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -34,10 +34,14 @@ Found it
         if test $fits_in_uint = 1; then
           dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
           dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
-          AC_TRY_COMPILE([#include <stddef.h>
-            extern size_t foo;
-            extern unsigned long foo;
-            ], [], [fits_in_uint=0])
+          AC_COMPILE_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[#include <stddef.h>
+                 extern size_t foo;
+                 extern unsigned long foo;
+               ]],
+               [[]])],
+            [fits_in_uint=0])
         fi
         dnl We cannot use 'expr' to simplify this expression, because 'expr'
         dnl works only with 'long' integers in the host environment, while we
index e0ccee3a5c55bf26611116e575742fbdf63f78a7..e4c160b50d99c96aee5557ff0809c58f7a822594 100644 (file)
@@ -1,5 +1,5 @@
-# ssize_t.m4 serial 4 (gettext-0.15)
-dnl Copyright (C) 2001-2003, 2006, 2009-2010 Free Software Foundation, Inc.
+# ssize_t.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2001-2003, 2006, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -10,9 +10,11 @@ dnl Test whether ssize_t is defined.
 AC_DEFUN([gt_TYPE_SSIZE_T],
 [
   AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
-    [AC_TRY_COMPILE([#include <sys/types.h>],
-       [int x = sizeof (ssize_t *) + sizeof (ssize_t);
-        return !x;],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>]],
+          [[int x = sizeof (ssize_t *) + sizeof (ssize_t);
+            return !x;]])],
        [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
   if test $gt_cv_ssize_t = no; then
     AC_DEFINE([ssize_t], [int],
index acd32d86a084ea6cbfcbd47bf1c3a756b94ccf61..75e1d9473edfe1878b45f98993be9539ee31b8c6 100644 (file)
@@ -1,4 +1,4 @@
-# serial 4
+# serial 5
 
 # Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 #
@@ -24,7 +24,7 @@ AC_DEFUN([gl_FUNC_STAT],
             mingw*) gl_cv_func_stat_dir_slash="guessing no";;
             *) gl_cv_func_stat_dir_slash="guessing yes";;
           esac])])
-  dnl Solaris 9 mistakenly succeeds on stat("file/")
+  dnl AIX 7.1, Solaris 9 mistakenly succeed on stat("file/")
   dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/")
   AC_CACHE_CHECK([whether stat handles trailing slashes on files],
       [gl_cv_func_stat_file_slash],
index 5c87bd8b5f6da4b6b64bb94f68fc61f8c2956e9d..8a62f2e844a3799e3058a57809daacb7aa6c74cd 100644 (file)
@@ -1,4 +1,4 @@
-# stdarg.m4 serial 3
+# stdarg.m4 serial 4
 dnl Copyright (C) 2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -13,12 +13,16 @@ AC_DEFUN([gl_STDARG_H],
   NEXT_STDARG_H='<stdarg.h>'; AC_SUBST([NEXT_STDARG_H])
   AC_MSG_CHECKING([for va_copy])
   AC_CACHE_VAL([gl_cv_func_va_copy], [
-    AC_TRY_COMPILE([#include <stdarg.h>], [
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[#include <stdarg.h>]],
+         [[
 #ifndef va_copy
 void (*func) (va_list, va_list) = va_copy;
 #endif
-],
-      [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])])
+         ]])],
+      [gl_cv_func_va_copy=yes],
+      [gl_cv_func_va_copy=no])])
   AC_MSG_RESULT([$gl_cv_func_va_copy])
   if test $gl_cv_func_va_copy = no; then
     dnl Provide a substitute.
@@ -47,12 +51,16 @@ void (*func) (va_list, va_list) = va_copy;
       dnl Provide a substitute in <config.h>, either __va_copy or as a simple
       dnl assignment.
       gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [
-        AC_TRY_COMPILE([#include <stdarg.h>], [
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[#include <stdarg.h>]],
+             [[
 #ifndef __va_copy
 error, bail out
 #endif
-],
-          [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])])
+             ]])],
+          [gl_cv_func___va_copy=yes],
+          [gl_cv_func___va_copy=no])])
       if test $gl_cv_func___va_copy = yes; then
         AC_DEFINE([va_copy], [__va_copy],
           [Define as a macro for copying va_list variables.])
index 3d672d7476b217bdc8777d6759f1f3bc5c53343d..1efe59ea1ca778630d7fda8ad62cf203669cfaf1 100644 (file)
@@ -5,6 +5,8 @@ dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
+#serial 3
+
 # Prepare for substituting <stdbool.h> if it is not supported.
 
 AC_DEFUN([AM_STDBOOL_H],
@@ -31,82 +33,68 @@ AC_DEFUN([AM_STDBOOL_H],
 # AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
 AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
 
-# This macro is only needed in autoconf <= 2.59.  Newer versions of autoconf
-# have this macro built-in.
+# This version of the macro is needed in autoconf <= 2.67.  Autoconf has
+# it built in since 2.60, but we want the tweaks from the 2.68 version
+# to avoid rejecting xlc and clang due to relying on extensions.
 
 AC_DEFUN([AC_HEADER_STDBOOL],
   [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
      [ac_cv_header_stdbool_h],
-     [AC_TRY_COMPILE(
-        [
-          #include <stdbool.h>
-          #ifndef bool
-           "error: bool is not defined"
-          #endif
-          #ifndef false
-           "error: false is not defined"
-          #endif
-          #if false
-           "error: false is not 0"
-          #endif
-          #ifndef true
-           "error: true is not defined"
-          #endif
-          #if true != 1
-           "error: true is not 1"
-          #endif
-          #ifndef __bool_true_false_are_defined
-           "error: __bool_true_false_are_defined is not defined"
-          #endif
+     [AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
+             #include <stdbool.h>
+             #ifndef bool
+              "error: bool is not defined"
+             #endif
+             #ifndef false
+              "error: false is not defined"
+             #endif
+             #if false
+              "error: false is not 0"
+             #endif
+             #ifndef true
+              "error: true is not defined"
+             #endif
+             #if true != 1
+              "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
+              "error: __bool_true_false_are_defined is not defined"
+             #endif
 
-          struct s { _Bool s: 1; _Bool t; } s;
+             struct s { _Bool s: 1; _Bool t; } s;
 
-          char a[true == 1 ? 1 : -1];
-          char b[false == 0 ? 1 : -1];
-          char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-          char d[(bool) 0.5 == true ? 1 : -1];
-          bool e = &s;
-          char f[(_Bool) 0.0 == false ? 1 : -1];
-          char g[true];
-          char h[sizeof (_Bool)];
-          char i[sizeof s.t];
-          enum { j = false, k = true, l = false * true, m = true * 256 };
-          _Bool n[m];
-          char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-          char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-          #if defined __xlc__ || defined __GNUC__
-           /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
-              reported by James Lemley on 2005-10-05; see
-              http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
-              This test is not quite right, since xlc is allowed to
-              reject this program, as the initializer for xlcbug is
-              not one of the forms that C requires support for.
-              However, doing the test right would require a run-time
-              test, and that would make cross-compilation harder.
-              Let us hope that IBM fixes the xlc bug, and also adds
-              support for this kind of constant expression.  In the
-              meantime, this test will reject xlc, which is OK, since
-              our stdbool.h substitute should suffice.  We also test
-              this with GCC, where it should work, to detect more
-              quickly whether someone messes up the test in the
-              future.  */
-           char digs[] = "0123456789";
-           int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
-          #endif
-          /* Catch a bug in an HP-UX C compiler.  See
-             http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-             http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-           */
-          _Bool q = true;
-          _Bool *pq = &q;
-        ],
-        [
-          *pq |= q;
-          *pq |= ! q;
-          /* Refer to every declared value, to avoid compiler optimizations.  */
-          return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-                  + !m + !n + !o + !p + !q + !pq);
-        ],
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
+           ]],
+           [[
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
+           ]])],
         [ac_cv_header_stdbool_h=yes],
         [ac_cv_header_stdbool_h=no])])
    AC_CHECK_TYPES([_Bool])
index c8572de947dcd3fe6492189ec54b7811c4c9f4d0..c3ae569431947623ce90da8befe383bacf3084ee 100644 (file)
@@ -1,5 +1,5 @@
 dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
-# stddef_h.m4 serial 1
+# stddef_h.m4 serial 2
 dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -33,7 +33,7 @@ AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
 ])
 
 AC_DEFUN([gl_STDDEF_H_DEFAULTS],
index 1cc57e6e9608a820725378eb081e253c6e35806f..c5e813a96d00639cbfcc98f8a83e2804efee0602 100644 (file)
@@ -1,4 +1,4 @@
-# stdint.m4 serial 34
+# stdint.m4 serial 35
 dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -309,7 +309,7 @@ AC_DEFUN([gl_STDINT_BITSIZEOF],
   dnl   config.h.in,
   dnl - extra AC_SUBST calls, so that the right substitutions are made.
   m4_foreach_w([gltype], [$1],
-    [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+    [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
        [Define to the number of bits in type ']gltype['.])])
   for gltype in $1 ; do
     AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
@@ -334,7 +334,7 @@ AC_DEFUN([gl_STDINT_BITSIZEOF],
     eval BITSIZEOF_${GLTYPE}=\$result
   done
   m4_foreach_w([gltype], [$1],
-    [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+    [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
 ])
 
 dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
@@ -347,7 +347,7 @@ AC_DEFUN([gl_CHECK_TYPES_SIGNED],
   dnl   config.h.in,
   dnl - extra AC_SUBST calls, so that the right substitutions are made.
   m4_foreach_w([gltype], [$1],
-    [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+    [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
        [Define to 1 if ']gltype[' is a signed integer type.])])
   for gltype in $1 ; do
     AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
@@ -367,7 +367,7 @@ AC_DEFUN([gl_CHECK_TYPES_SIGNED],
     fi
   done
   m4_foreach_w([gltype], [$1],
-    [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+    [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
 ])
 
 dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
@@ -380,7 +380,7 @@ AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
   dnl   config.h.in,
   dnl - extra AC_SUBST calls, so that the right substitutions are made.
   m4_foreach_w([gltype], [$1],
-    [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+    [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
        [Define to l, ll, u, ul, ull, etc., as suitable for
         constants of type ']gltype['.])])
   for gltype in $1 ; do
@@ -419,7 +419,7 @@ AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
     AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
   done
   m4_foreach_w([gltype], [$1],
-    [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+    [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
 ])
 
 dnl gl_STDINT_INCLUDES
index b8e3c6cc711f17ab409131b9411ea51fe23d8d01..670c0cc2bff9c1edbab5da3ebb53bc9ee90749f8 100644 (file)
@@ -1,4 +1,4 @@
-# stdint_h.m4 serial 8
+# stdint_h.m4 serial 9
 dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -12,12 +12,13 @@ dnl From Paul Eggert.
 AC_DEFUN([gl_AC_HEADER_STDINT_H],
 [
   AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
-  [AC_TRY_COMPILE(
-    [#include <sys/types.h>
-#include <stdint.h>],
-    [uintmax_t i = (uintmax_t) -1; return !i;],
-    [gl_cv_header_stdint_h=yes],
-    [gl_cv_header_stdint_h=no])])
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+            #include <stdint.h>]],
+          [[uintmax_t i = (uintmax_t) -1; return !i;]])],
+       [gl_cv_header_stdint_h=yes],
+       [gl_cv_header_stdint_h=no])])
   if test $gl_cv_header_stdint_h = yes; then
     AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
       [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
index 681fd8b8506db3e0757aa4cddc42ec1104f6c077..f5650cdeabc6a2f4dcabfe515c4077c398aa587a 100644 (file)
@@ -1,4 +1,4 @@
-# stdio_h.m4 serial 26
+# stdio_h.m4 serial 31
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -8,6 +8,7 @@ AC_DEFUN([gl_STDIO_H],
 [
   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
   AC_REQUIRE([AC_C_INLINE])
+  AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
   gl_CHECK_NEXT_HEADERS([stdio.h])
   dnl No need to create extra modules for these functions. Everyone who uses
   dnl <stdio.h> likely needs them.
@@ -37,16 +38,16 @@ AC_DEFUN([gl_STDIO_H],
   dnl guaranteed by C89.
   gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
     ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
-    snprintf vdprintf vsnprintf])
+    snprintf tmpfile vdprintf vsnprintf])
 ])
 
 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_STDIO_H_DEFAULTS],
@@ -83,6 +84,7 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
   GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
   GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
   GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
+  GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
   GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
   GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
   GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
@@ -99,6 +101,8 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
   HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
   HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
   HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
+  HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
+  HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
   HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
   HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
   HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
@@ -125,6 +129,7 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
   REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
   REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
   REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
+  REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
   REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
   REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
   REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
index 77344bda860c4d50ebfc1db5687c27384b354e5a..e4697ce213caa3b0874979390b37bf39052928a6 100644 (file)
@@ -1,4 +1,4 @@
-# stdlib_h.m4 serial 23
+# stdlib_h.m4 serial 31
 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -33,33 +33,37 @@ AC_DEFUN([gl_STDLIB_H],
 #if HAVE_RANDOM_H
 # include <random.h>
 #endif
-    ]], [atoll canonicalize_file_name getloadavg getsubopt mkdtemp
-    mkostemp mkostemps mkstemp mkstemps random_r initstat_r srandom_r
-    setstate_r realpath rpmatch setenv strtod strtoll strtoull unsetenv])
+    ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt mkdtemp
+    mkostemp mkostemps mkstemp mkstemps ptsname random_r initstat_r srandom_r
+    setstate_r realpath rpmatch setenv strtod strtoll strtoull unlockpt
+    unsetenv])
 ])
 
 AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_STDLIB_H_DEFAULTS],
 [
+  GNULIB__EXIT=0;         AC_SUBST([GNULIB__EXIT])
   GNULIB_ATOLL=0;         AC_SUBST([GNULIB_ATOLL])
   GNULIB_CALLOC_POSIX=0;  AC_SUBST([GNULIB_CALLOC_POSIX])
   GNULIB_CANONICALIZE_FILE_NAME=0;  AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
   GNULIB_GETLOADAVG=0;    AC_SUBST([GNULIB_GETLOADAVG])
   GNULIB_GETSUBOPT=0;     AC_SUBST([GNULIB_GETSUBOPT])
+  GNULIB_GRANTPT=0;       AC_SUBST([GNULIB_GRANTPT])
   GNULIB_MALLOC_POSIX=0;  AC_SUBST([GNULIB_MALLOC_POSIX])
   GNULIB_MKDTEMP=0;       AC_SUBST([GNULIB_MKDTEMP])
   GNULIB_MKOSTEMP=0;      AC_SUBST([GNULIB_MKOSTEMP])
   GNULIB_MKOSTEMPS=0;     AC_SUBST([GNULIB_MKOSTEMPS])
   GNULIB_MKSTEMP=0;       AC_SUBST([GNULIB_MKSTEMP])
   GNULIB_MKSTEMPS=0;      AC_SUBST([GNULIB_MKSTEMPS])
+  GNULIB_PTSNAME=0;       AC_SUBST([GNULIB_PTSNAME])
   GNULIB_PUTENV=0;        AC_SUBST([GNULIB_PUTENV])
   GNULIB_RANDOM_R=0;      AC_SUBST([GNULIB_RANDOM_R])
   GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
@@ -69,20 +73,23 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
   GNULIB_STRTOLL=0;       AC_SUBST([GNULIB_STRTOLL])
   GNULIB_STRTOULL=0;      AC_SUBST([GNULIB_STRTOULL])
+  GNULIB_SYSTEM_POSIX=0;  AC_SUBST([GNULIB_SYSTEM_POSIX])
+  GNULIB_UNLOCKPT=0;      AC_SUBST([GNULIB_UNLOCKPT])
   GNULIB_UNSETENV=0;      AC_SUBST([GNULIB_UNSETENV])
   dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE__EXIT=1;              AC_SUBST([HAVE__EXIT])
   HAVE_ATOLL=1;              AC_SUBST([HAVE_ATOLL])
-  HAVE_CALLOC_POSIX=1;       AC_SUBST([HAVE_CALLOC_POSIX])
   HAVE_CANONICALIZE_FILE_NAME=1;  AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
   HAVE_DECL_GETLOADAVG=1;    AC_SUBST([HAVE_DECL_GETLOADAVG])
   HAVE_GETSUBOPT=1;          AC_SUBST([HAVE_GETSUBOPT])
-  HAVE_MALLOC_POSIX=1;       AC_SUBST([HAVE_MALLOC_POSIX])
+  HAVE_GRANTPT=1;            AC_SUBST([HAVE_GRANTPT])
   HAVE_MKDTEMP=1;            AC_SUBST([HAVE_MKDTEMP])
   HAVE_MKOSTEMP=1;           AC_SUBST([HAVE_MKOSTEMP])
   HAVE_MKOSTEMPS=1;          AC_SUBST([HAVE_MKOSTEMPS])
+  HAVE_MKSTEMP=1;            AC_SUBST([HAVE_MKSTEMP])
   HAVE_MKSTEMPS=1;           AC_SUBST([HAVE_MKSTEMPS])
+  HAVE_PTSNAME=1;            AC_SUBST([HAVE_PTSNAME])
   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
-  HAVE_REALLOC_POSIX=1;      AC_SUBST([HAVE_REALLOC_POSIX])
   HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
   HAVE_RPMATCH=1;            AC_SUBST([HAVE_RPMATCH])
   HAVE_SETENV=1;             AC_SUBST([HAVE_SETENV])
@@ -91,10 +98,14 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   HAVE_STRTOULL=1;           AC_SUBST([HAVE_STRTOULL])
   HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
   HAVE_SYS_LOADAVG_H=0;      AC_SUBST([HAVE_SYS_LOADAVG_H])
+  HAVE_UNLOCKPT=1;           AC_SUBST([HAVE_UNLOCKPT])
   HAVE_UNSETENV=1;           AC_SUBST([HAVE_UNSETENV])
+  REPLACE_CALLOC=0;          AC_SUBST([REPLACE_CALLOC])
   REPLACE_CANONICALIZE_FILE_NAME=0;  AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
+  REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
+  REPLACE_REALLOC=0;         AC_SUBST([REPLACE_REALLOC])
   REPLACE_REALPATH=0;        AC_SUBST([REPLACE_REALPATH])
   REPLACE_SETENV=0;          AC_SUBST([REPLACE_SETENV])
   REPLACE_STRTOD=0;          AC_SUBST([REPLACE_STRTOD])
index 3a3b07dd5d290dcb6104336b455163b92f48c581..ce40c2152771ca340e8a39d3865260504e721b50 100644 (file)
@@ -1,4 +1,4 @@
-# strdup.m4 serial 11
+# strdup.m4 serial 12
 
 dnl Copyright (C) 2002-2010 Free Software Foundation, Inc.
 
@@ -9,29 +9,36 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_STRDUP],
 [
   AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  AC_REPLACE_FUNCS([strdup])
+  AC_CHECK_FUNCS_ONCE([strdup])
+  if test $ac_cv_func_strdup != yes; then
+    AC_LIBOBJ([strdup])
+    gl_PREREQ_STRDUP
+  fi
   AC_CHECK_DECLS_ONCE([strdup])
   if test $ac_cv_have_decl_strdup = no; then
     HAVE_DECL_STRDUP=0
   fi
-  gl_PREREQ_STRDUP
 ])
 
 AC_DEFUN([gl_FUNC_STRDUP_POSIX],
 [
   AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
   AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
-  if test $gl_cv_func_malloc_posix != yes; then
-    REPLACE_STRDUP=1
-    AC_LIBOBJ([strdup])
+  AC_CHECK_FUNCS_ONCE([strdup])
+  if test $ac_cv_func_strdup = yes; then
+    if test $gl_cv_func_malloc_posix != yes; then
+      REPLACE_STRDUP=1
+      AC_LIBOBJ([strdup])
+      gl_PREREQ_STRDUP
+    fi
   else
-    AC_REPLACE_FUNCS([strdup])
+    AC_LIBOBJ([strdup])
+    gl_PREREQ_STRDUP
   fi
   AC_CHECK_DECLS_ONCE([strdup])
   if test $ac_cv_have_decl_strdup = no; then
     HAVE_DECL_STRDUP=0
   fi
-  gl_PREREQ_STRDUP
 ])
 
 # Prerequisites of lib/strdup.c.
index a8a366c70292b76eddb90c5aca552c910508cbde..1977aecf91578210581a7cfa28d7b6173801114d 100644 (file)
@@ -5,7 +5,7 @@
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 12
+# serial 17
 
 # Written by Paul Eggert.
 
@@ -26,17 +26,19 @@ AC_DEFUN([gl_HEADER_STRING_H_BODY],
   dnl corresponding gnulib module is not in use, and which is not
   dnl guaranteed by C89.
   gl_WARN_ON_USE_PREPARE([[#include <string.h>
-    ]], [memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup
-    strndup strnlen strpbrk strsep strcasestr strtok_r strsignal strverscmp])
+    ]],
+    [memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup
+     strncat strndup strnlen strpbrk strsep strcasestr strtok_r strsignal
+     strverscmp])
 ])
 
 AC_DEFUN([gl_STRING_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
@@ -50,6 +52,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
   GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
   GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
   GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
+  GNULIB_STRNCAT=0;     AC_SUBST([GNULIB_STRNCAT])
   GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
   GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
   GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
@@ -76,6 +79,7 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
   GNULIB_STRVERSCMP=0;  AC_SUBST([GNULIB_STRVERSCMP])
   HAVE_MBSLEN=0;        AC_SUBST([HAVE_MBSLEN])
   dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_MEMCHR=1;                AC_SUBST([HAVE_MEMCHR])
   HAVE_DECL_MEMMEM=1;           AC_SUBST([HAVE_DECL_MEMMEM])
   HAVE_MEMPCPY=1;               AC_SUBST([HAVE_MEMPCPY])
   HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
@@ -90,16 +94,18 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
   HAVE_STRSEP=1;                AC_SUBST([HAVE_STRSEP])
   HAVE_STRCASESTR=1;            AC_SUBST([HAVE_STRCASESTR])
   HAVE_DECL_STRTOK_R=1;         AC_SUBST([HAVE_DECL_STRTOK_R])
-  HAVE_DECL_STRERROR=1;         AC_SUBST([HAVE_DECL_STRERROR])
   HAVE_DECL_STRSIGNAL=1;        AC_SUBST([HAVE_DECL_STRSIGNAL])
   HAVE_STRVERSCMP=1;            AC_SUBST([HAVE_STRVERSCMP])
   REPLACE_MEMCHR=0;             AC_SUBST([REPLACE_MEMCHR])
   REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
+  REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
   REPLACE_STRDUP=0;             AC_SUBST([REPLACE_STRDUP])
   REPLACE_STRSTR=0;             AC_SUBST([REPLACE_STRSTR])
   REPLACE_STRCASESTR=0;         AC_SUBST([REPLACE_STRCASESTR])
   REPLACE_STRERROR=0;           AC_SUBST([REPLACE_STRERROR])
+  REPLACE_STRNCAT=0;            AC_SUBST([REPLACE_STRNCAT])
   REPLACE_STRNDUP=0;            AC_SUBST([REPLACE_STRNDUP])
+  REPLACE_STRNLEN=0;            AC_SUBST([REPLACE_STRNLEN])
   REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
   REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
   UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
index 26aa1f782ac1a1c775ca44277cbbfe6f03185491..4374c7cbe31a12a7fb458651452fab3079b2f4b9 100644 (file)
@@ -1,7 +1,7 @@
 # Configure a replacement for <string.h>.
-# serial 2
+# serial 3
 
-# Copyright (C) 2007, 20092010 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -28,7 +28,7 @@ AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
 ])
 
 AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS],
index 810313cd12478d9ba60c0f607093eadcdf20a004..b3567d89812fb75e7315274453940f177aa9d571 100644 (file)
@@ -1,4 +1,4 @@
-# strndup.m4 serial 17
+# strndup.m4 serial 18
 dnl Copyright (C) 2002-2003, 2005-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -33,10 +33,14 @@ AC_DEFUN([gl_FUNC_STRNDUP],
   return s[13] != '\0';]])],
          [gl_cv_func_strndup_works=yes],
          [gl_cv_func_strndup_works=no],
-         [case $host_os in
-            aix*) gl_cv_func_strndup_works="guessing no";;
-            *) gl_cv_func_strndup_works="guessing yes";;
-          esac])])
+         [
+changequote(,)dnl
+          case $host_os in
+            aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";;
+            *)               gl_cv_func_strndup_works="guessing yes";;
+          esac
+changequote([,])dnl
+         ])])
     case $gl_cv_func_strndup_works in
       *no)
         REPLACE_STRNDUP=1
index cd48948f68808f330642cc39e80734433704f421..52bb838f96b9eac3f2f782dbc6b1b918d85b5cdf 100644 (file)
@@ -1,4 +1,4 @@
-# strnlen.m4 serial 10
+# strnlen.m4 serial 12
 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -7,23 +7,23 @@ dnl with or without modifications, as long as this notice is preserved.
 
 AC_DEFUN([gl_FUNC_STRNLEN],
 [
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+
   dnl Persuade glibc <string.h> to declare strnlen().
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
   AC_CHECK_DECLS_ONCE([strnlen])
   if test $ac_cv_have_decl_strnlen = no; then
     HAVE_DECL_STRNLEN=0
+  else
+    AC_FUNC_STRNLEN
+    dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]).
+    if test $ac_cv_func_strnlen_working = no; then
+      REPLACE_STRNLEN=1
+    fi
   fi
-
-  AC_FUNC_STRNLEN
-  if test $ac_cv_func_strnlen_working = no; then
-    # This is necessary because automake-1.6.1 doesn't understand
-    # that the above use of AC_FUNC_STRNLEN means we may have to use
-    # lib/strnlen.c.
-    #AC_LIBOBJ([strnlen])
-    AC_DEFINE([strnlen], [rpl_strnlen],
-      [Define to rpl_strnlen if the replacement function should be used.])
+  if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
+    AC_LIBOBJ([strnlen])
     gl_PREREQ_STRNLEN
   fi
 ])
diff --git a/m4/symlink.m4 b/m4/symlink.m4
new file mode 100644 (file)
index 0000000..fb61984
--- /dev/null
@@ -0,0 +1,38 @@
+# serial 3
+# See if we need to provide symlink replacement.
+
+dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_SYMLINK],
+[
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([symlink])
+  dnl The best we can do on mingw is provide a dummy that always fails, so
+  dnl that compilation can proceed with fewer ifdefs.  On FreeBSD 7.2, AIX 7.1,
+  dnl and Solaris 9, we want to fix a bug with trailing slash handling.
+  if test $ac_cv_func_symlink = no; then
+    HAVE_SYMLINK=0
+    AC_LIBOBJ([symlink])
+  else
+    AC_CACHE_CHECK([whether symlink handles trailing slash correctly],
+      [gl_cv_func_symlink_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+           [[#include <unistd.h>
+]], [[if (!symlink ("a", "conftest.link/")) return 1;
+      if (symlink ("conftest.f", "conftest.lnk2")) return 2;
+      if (!symlink ("a", "conftest.lnk2/")) return 3;]])],
+         [gl_cv_func_symlink_works=yes], [gl_cv_func_symlink_works=no],
+         [gl_cv_func_symlink_works="guessing no"])
+      rm -f conftest.f conftest.link conftest.lnk2])
+    if test "$gl_cv_func_symlink_works" != yes; then
+      REPLACE_SYMLINK=1
+      AC_LIBOBJ([symlink])
+    fi
+  fi
+])
diff --git a/m4/symlinkat.m4 b/m4/symlinkat.m4
new file mode 100644 (file)
index 0000000..ed8bb87
--- /dev/null
@@ -0,0 +1,21 @@
+# serial 4
+# See if we need to provide symlinkat replacement.
+
+dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_SYMLINKAT],
+[
+  AC_REQUIRE([gl_FUNC_OPENAT])
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([symlinkat])
+  if test $ac_cv_func_symlinkat = no; then
+    HAVE_SYMLINKAT=0
+    AC_LIBOBJ([symlinkat])
+  fi
+])
index 54d74caa91892f29b90d7021718658c0cfb6cc14..7181c253b966229a96c8e033669eb60583266441 100644 (file)
@@ -1,4 +1,4 @@
-# sys_stat_h.m4 serial 23   -*- Autoconf -*-
+# sys_stat_h.m4 serial 24   -*- Autoconf -*-
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -38,9 +38,9 @@ AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_SYS_STAT_H_DEFAULTS],
index 2835a40c266639c6db1c75bda9513b1309676571..da5752716344679a9343b7c14b62a5e771a6d582 100644 (file)
@@ -1,5 +1,5 @@
 # Configure a replacement for <sys/time.h>.
-# serial 5
+# serial 6
 
 # Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
@@ -56,9 +56,9 @@ AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS],
index ba2e194608c072b6c0d947d9c6fc537606382626..a45a10a9eec587288f8d1398aeee7004e8fed565 100644 (file)
@@ -2,6 +2,8 @@
 
 # Copyright (C) 2000-2001, 2003-2007, 2009-2010 Free Software Foundation, Inc.
 
+# serial 2
+
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -24,7 +26,7 @@ AC_DEFUN([gl_HEADER_TIME_H_BODY],
 ])
 
 dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared
-dnl in time.h or sys/time.h.
+dnl in time.h, sys/time.h, or pthread.h.
 
 AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
 [
@@ -41,6 +43,7 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
 
   TIME_H_DEFINES_STRUCT_TIMESPEC=0
   SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+  PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
   if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
     TIME_H_DEFINES_STRUCT_TIMESPEC=1
   else
@@ -55,19 +58,33 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
          [gl_cv_sys_struct_timespec_in_sys_time_h=no])])
     if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
       SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+    else
+      AC_CACHE_CHECK([for struct timespec in <pthread.h>],
+        [gl_cv_sys_struct_timespec_in_pthread_h],
+        [AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM(
+              [[#include <pthread.h>
+              ]],
+              [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+           [gl_cv_sys_struct_timespec_in_pthread_h=yes],
+           [gl_cv_sys_struct_timespec_in_pthread_h=no])])
+      if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
+        PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+      fi
     fi
   fi
   AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
   AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+  AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
 ])
 
 AC_DEFUN([gl_TIME_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
-  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
@@ -76,12 +93,17 @@ AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
   GNULIB_NANOSLEEP=0;                    AC_SUBST([GNULIB_NANOSLEEP])
   GNULIB_STRPTIME=0;                     AC_SUBST([GNULIB_STRPTIME])
   GNULIB_TIMEGM=0;                       AC_SUBST([GNULIB_TIMEGM])
+  GNULIB_TIME_R=0;                       AC_SUBST([GNULIB_TIME_R])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_LOCALTIME_R=1;                    AC_SUBST([HAVE_LOCALTIME_R])
+  HAVE_NANOSLEEP=1;                      AC_SUBST([HAVE_NANOSLEEP])
+  HAVE_STRPTIME=1;                       AC_SUBST([HAVE_STRPTIME])
+  HAVE_TIMEGM=1;                         AC_SUBST([HAVE_TIMEGM])
   dnl If another module says to replace or to not replace, do that.
   dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
   dnl this lets maintainers check for portability.
   REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;  AC_SUBST([REPLACE_LOCALTIME_R])
   REPLACE_MKTIME=GNULIB_PORTCHECK;       AC_SUBST([REPLACE_MKTIME])
   REPLACE_NANOSLEEP=GNULIB_PORTCHECK;    AC_SUBST([REPLACE_NANOSLEEP])
-  REPLACE_STRPTIME=GNULIB_PORTCHECK;     AC_SUBST([REPLACE_STRPTIME])
   REPLACE_TIMEGM=GNULIB_PORTCHECK;       AC_SUBST([REPLACE_TIMEGM])
 ])
index b5938e79638a846153d3ac660a33bb24abb063f5..9e82d39ffbdfe2c86d33a8d66f3c41aae9c7c46d 100644 (file)
@@ -1,7 +1,6 @@
-dnl Reentrant time functions like localtime_r.
+dnl Reentrant time functions: localtime_r, gmtime_r.
 
-dnl Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2003, 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -10,29 +9,40 @@ dnl Written by Paul Eggert.
 
 AC_DEFUN([gl_TIME_R],
 [
- dnl Persuade glibc and Solaris <time.h> to declare localtime_r.
 dnl Persuade glibc and Solaris <time.h> to declare localtime_r.
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
 
   AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
   AC_REQUIRE([AC_C_RESTRICT])
 
-  AC_CACHE_CHECK([whether localtime_r is compatible with its POSIX signature],
-    [gl_cv_time_r_posix],
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-         [[#include <time.h>]],
-         [[/* We don't need to append 'restrict's to the argument types,
-              even though the POSIX signature has the 'restrict's,
-              since C99 says they can't affect type compatibility.  */
-           struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
-           if (ptr) return 0;
-           /* Check the return type is a pointer.  On HP-UX 10 it is 'int'.  */
-           *localtime_r (0, 0);]])],
-       [gl_cv_time_r_posix=yes],
-       [gl_cv_time_r_posix=no])])
-  if test $gl_cv_time_r_posix = yes; then
-    REPLACE_LOCALTIME_R=0
+  AC_CHECK_FUNCS_ONCE([localtime_r])
+  if test $ac_cv_func_localtime_r = yes; then
+    AC_CACHE_CHECK([whether localtime_r is compatible with its POSIX signature],
+      [gl_cv_time_r_posix],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[#include <time.h>]],
+            [[/* We don't need to append 'restrict's to the argument types,
+                 even though the POSIX signature has the 'restrict's,
+                 since C99 says they can't affect type compatibility.  */
+              struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
+              if (ptr) return 0;
+              /* Check the return type is a pointer.
+                 On HP-UX 10 it is 'int'.  */
+              *localtime_r (0, 0);]])
+         ],
+         [gl_cv_time_r_posix=yes],
+         [gl_cv_time_r_posix=no])
+      ])
+    if test $gl_cv_time_r_posix = yes; then
+      REPLACE_LOCALTIME_R=0
+    else
+      REPLACE_LOCALTIME_R=1
+    fi
   else
-    REPLACE_LOCALTIME_R=1
+    HAVE_LOCALTIME_R=0
+  fi
+  if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then
     AC_LIBOBJ([time_r])
     gl_PREREQ_TIME_R
   fi
index f6c35d2a761423e26cb745435822e03feca7a78a..48d06c7426aa7b455d2ac001f6f8d66ffb287565 100644 (file)
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 40
+# unistd_h.m4 serial 46
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -38,17 +38,18 @@ AC_DEFUN([gl_UNISTD_H],
     ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat
     fsync ftruncate getcwd getdomainname getdtablesize getgroups
     gethostname getlogin getlogin_r getpagesize getusershell setusershell
-    endusershell lchown link linkat lseek pipe2 pread readlink readlinkat
-    rmdir sleep symlink symlinkat unlink unlinkat usleep])
+    endusershell lchown link linkat lseek pipe2 pread pwrite readlink
+    readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat
+    usleep])
 ])
 
 AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_UNISTD_H_DEFAULTS],
@@ -79,12 +80,14 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   GNULIB_LSEEK=0;            AC_SUBST([GNULIB_LSEEK])
   GNULIB_PIPE2=0;            AC_SUBST([GNULIB_PIPE2])
   GNULIB_PREAD=0;            AC_SUBST([GNULIB_PREAD])
+  GNULIB_PWRITE=0;           AC_SUBST([GNULIB_PWRITE])
   GNULIB_READLINK=0;         AC_SUBST([GNULIB_READLINK])
   GNULIB_READLINKAT=0;       AC_SUBST([GNULIB_READLINKAT])
   GNULIB_RMDIR=0;            AC_SUBST([GNULIB_RMDIR])
   GNULIB_SLEEP=0;            AC_SUBST([GNULIB_SLEEP])
   GNULIB_SYMLINK=0;          AC_SUBST([GNULIB_SYMLINK])
   GNULIB_SYMLINKAT=0;        AC_SUBST([GNULIB_SYMLINKAT])
+  GNULIB_TTYNAME_R=0;        AC_SUBST([GNULIB_TTYNAME_R])
   GNULIB_UNISTD_H_GETOPT=0;  AC_SUBST([GNULIB_UNISTD_H_GETOPT])
   GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
   GNULIB_UNLINK=0;           AC_SUBST([GNULIB_UNLINK])
@@ -97,6 +100,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   HAVE_DUP3=1;            AC_SUBST([HAVE_DUP3])
   HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
   HAVE_FACCESSAT=1;       AC_SUBST([HAVE_FACCESSAT])
+  HAVE_FCHDIR=1;          AC_SUBST([HAVE_FCHDIR])
   HAVE_FCHOWNAT=1;        AC_SUBST([HAVE_FCHOWNAT])
   HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
   HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
@@ -106,28 +110,30 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
   HAVE_GETLOGIN=1;        AC_SUBST([HAVE_GETLOGIN])
   HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
-  HAVE_GETUSERSHELL=1;    AC_SUBST([HAVE_GETUSERSHELL])
   HAVE_LCHOWN=1;          AC_SUBST([HAVE_LCHOWN])
   HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
   HAVE_LINKAT=1;          AC_SUBST([HAVE_LINKAT])
   HAVE_PIPE2=1;           AC_SUBST([HAVE_PIPE2])
   HAVE_PREAD=1;           AC_SUBST([HAVE_PREAD])
+  HAVE_PWRITE=1;          AC_SUBST([HAVE_PWRITE])
   HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
   HAVE_READLINKAT=1;      AC_SUBST([HAVE_READLINKAT])
   HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
   HAVE_SYMLINK=1;         AC_SUBST([HAVE_SYMLINK])
   HAVE_SYMLINKAT=1;       AC_SUBST([HAVE_SYMLINKAT])
+  HAVE_TTYNAME_R=1;       AC_SUBST([HAVE_TTYNAME_R])
+  HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
+  HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
   HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
   HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+  HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
+  HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
   HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
   HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
-  HAVE_UNLINKAT=1;        AC_SUBST([HAVE_UNLINKAT])
-  HAVE_USLEEP=1;          AC_SUBST([HAVE_USLEEP])
   REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
   REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
   REPLACE_DUP=0;          AC_SUBST([REPLACE_DUP])
   REPLACE_DUP2=0;         AC_SUBST([REPLACE_DUP2])
-  REPLACE_FCHDIR=0;       AC_SUBST([REPLACE_FCHDIR])
   REPLACE_FCHOWNAT=0;     AC_SUBST([REPLACE_FCHOWNAT])
   REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
   REPLACE_GETGROUPS=0;    AC_SUBST([REPLACE_GETGROUPS])
@@ -137,10 +143,12 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
   REPLACE_LINKAT=0;       AC_SUBST([REPLACE_LINKAT])
   REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
   REPLACE_PREAD=0;        AC_SUBST([REPLACE_PREAD])
+  REPLACE_PWRITE=0;       AC_SUBST([REPLACE_PWRITE])
   REPLACE_READLINK=0;     AC_SUBST([REPLACE_READLINK])
   REPLACE_RMDIR=0;        AC_SUBST([REPLACE_RMDIR])
   REPLACE_SLEEP=0;        AC_SUBST([REPLACE_SLEEP])
   REPLACE_SYMLINK=0;      AC_SUBST([REPLACE_SYMLINK])
+  REPLACE_TTYNAME_R=0;    AC_SUBST([REPLACE_TTYNAME_R])
   REPLACE_UNLINK=0;       AC_SUBST([REPLACE_UNLINK])
   REPLACE_UNLINKAT=0;     AC_SUBST([REPLACE_UNLINKAT])
   REPLACE_USLEEP=0;       AC_SUBST([REPLACE_USLEEP])
index c01d8482854ddc4deded932edfd4865da2fa6429..b20af63ed4d9599346abcd45f8c922936307b214 100644 (file)
@@ -1,4 +1,4 @@
-# unlink.m4 serial 3
+# unlink.m4 serial 5
 dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -8,9 +8,10 @@ AC_DEFUN([gl_FUNC_UNLINK],
 [
   AC_REQUIRE([gl_AC_DOS])
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  dnl Detect Solaris 9 and FreeBSD 7.2 bug.
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  dnl Detect FreeBSD 7.2, AIX 7.1, Solaris 9 bug.
   AC_CACHE_CHECK([whether unlink honors trailing slashes],
-    [gl_cv_func_unlink_works],
+    [gl_cv_func_unlink_honors_slashes],
     [touch conftest.file
      # Assume that if we have lstat, we can also check symlinks.
      if test $ac_cv_func_lstat = yes; then
@@ -25,10 +26,76 @@ AC_DEFUN([gl_FUNC_UNLINK],
       if (!unlink ("conftest.lnk/") || errno != ENOTDIR) return 2;
 #endif
       ]])],
-      [gl_cv_func_unlink_works=yes], [gl_cv_func_unlink_works=no],
-      [gl_cv_func_unlink_works="guessing no"])
+      [gl_cv_func_unlink_honors_slashes=yes],
+      [gl_cv_func_unlink_honors_slashes=no],
+      [gl_cv_func_unlink_honors_slashes="guessing no"])
      rm -f conftest.file conftest.lnk])
-  if test x"$gl_cv_func_unlink_works" != xyes; then
+  dnl Detect MacOS X 10.5.6 bug: On read-write HFS mounts, unlink("..") or
+  dnl unlink("../..") succeeds without doing anything.
+  AC_CACHE_CHECK([whether unlink of a parent directory fails is it should],
+    [gl_cv_func_unlink_parent_fails],
+    [case "$host_os" in
+       darwin*)
+         dnl Try to unlink a subdirectory of /tmp, because /tmp is usually on a
+         dnl HFS mount on MacOS X. Use a subdirectory, owned by the current
+         dnl user, because otherwise unlink() may fail due to permissions
+         dnl reasons, and because when running as root we don't want to risk
+         dnl destroying the entire /tmp.
+         if {
+              # Use the mktemp program if available. If not available, hide the error
+              # message.
+              tmp=`(umask 077 && mktemp -d /tmp/gtXXXXXX) 2>/dev/null` &&
+              test -n "$tmp" && test -d "$tmp"
+            } ||
+            {
+              # Use a simple mkdir command. It is guaranteed to fail if the directory
+              # already exists.  $RANDOM is bash specific and expands to empty in shells
+              # other than bash, ksh and zsh.  Its use does not increase security;
+              # rather, it minimizes the probability of failure in a very cluttered /tmp
+              # directory.
+              tmp=/tmp/gt$$-$RANDOM
+              (umask 077 && mkdir "$tmp")
+            }; then
+           mkdir "$tmp/subdir"
+           GL_SUBDIR_FOR_UNLINK="$tmp/subdir"
+           export GL_SUBDIR_FOR_UNLINK
+           AC_RUN_IFELSE(
+             [AC_LANG_SOURCE([[
+                #include <stdlib.h>
+                #include <unistd.h>
+                int main ()
+                {
+                  if (chdir (getenv ("GL_SUBDIR_FOR_UNLINK")) != 0)
+                    return 1;
+                  return unlink ("..") == 0;
+                }
+              ]])],
+             [gl_cv_func_unlink_parent_fails=yes],
+             [gl_cv_func_unlink_parent_fails=no],
+             [gl_cv_func_unlink_parent_fails="guessing no"])
+           unset GL_SUBDIR_FOR_UNLINK
+           rm -rf "$tmp"
+         else
+           gl_cv_func_unlink_parent_fails="guessing no"
+         fi
+         ;;
+       *)
+         gl_cv_func_unlink_parent_fails="guessing yes"
+         ;;
+     esac
+    ])
+  case "$gl_cv_func_unlink_parent_fails" in
+    *no)
+      AC_DEFINE([UNLINK_PARENT_BUG], [1],
+        [Define to 1 if unlink() on a parent directory may succeed])
+      ;;
+  esac
+  if test "$gl_cv_func_unlink_honors_slashes" != yes \
+     || { case "$gl_cv_func_unlink_parent_fails" in
+            *yes) false;;
+            *no) true;;
+          esac
+        }; then
     REPLACE_UNLINK=1
     AC_LIBOBJ([unlink])
   fi
diff --git a/m4/utimensat.m4 b/m4/utimensat.m4
new file mode 100644 (file)
index 0000000..1110e07
--- /dev/null
@@ -0,0 +1,56 @@
+# serial 3
+# See if we need to provide utimensat replacement.
+
+dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_UTIMENSAT],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([utimensat])
+  if test $ac_cv_func_utimensat = no; then
+    HAVE_UTIMENSAT=0
+    AC_LIBOBJ([utimensat])
+  else
+    AC_CACHE_CHECK([whether utimensat works],
+      [gl_cv_func_utimensat_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+]], [[struct timespec ts[2] = { { 1, UTIME_OMIT }, { 1, UTIME_NOW } };
+      struct stat st;
+      const char *f = "conftest.file";
+      if (close (creat (f, 0600))) return 1;
+      if (utimensat (AT_FDCWD, f, NULL, AT_SYMLINK_NOFOLLOW)) return 2;
+      if (utimensat (AT_FDCWD, f, ts, 0)) return 3;
+      sleep (1);
+      ts[0].tv_nsec = UTIME_NOW;
+      ts[1].tv_nsec = UTIME_OMIT;
+      if (utimensat (AT_FDCWD, f, ts, 0)) return 4;
+      if (stat (f, &st)) return 5;
+      if (st.st_ctime < st.st_atime) return 6;]])],
+dnl FIXME: simplify this in 2012, when file system bugs are no longer common
+         [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef __linux__
+/* The Linux kernel added utimensat in 2.6.22, but has bugs with UTIME_OMIT
+   in several file systems as recently as 2.6.32.  Always replace utimensat
+   to support older kernels.  */
+choke me
+#endif
+      ]])],
+           [gl_cv_func_utimensat_works=yes],
+           [gl_cv_func_utimensat_works="needs runtime check"])],
+         [gl_cv_func_utimensat_works=no],
+         [gl_cv_func_utimensat_works="guessing no"])])
+    if test "$gl_cv_func_utimensat_works" != yes; then
+      REPLACE_UTIMENSAT=1
+      AC_LIBOBJ([utimensat])
+    fi
+  fi
+])
index 50a20cca2346803576a53ad8e39d5950cc3fbc33..ebe3c52cde6f5b745f77da016e967642620d2fa0 100644 (file)
@@ -1,4 +1,4 @@
-# vasnprintf.m4 serial 29
+# vasnprintf.m4 serial 31
 dnl Copyright (C) 2002-2004, 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -54,6 +54,7 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
 # Prerequisites of lib/vasnprintf.c.
 AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
 [
+  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_FUNC_ALLOCA])
   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
   AC_REQUIRE([gt_TYPE_WCHAR_T])
@@ -62,6 +63,17 @@ AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
   dnl Use the _snprintf function only if it is declared (because on NetBSD it
   dnl is defined as a weak alias of snprintf; we prefer to use the latter).
   AC_CHECK_DECLS([_snprintf], , , [#include <stdio.h>])
+  dnl We can avoid a lot of code by assuming that snprintf's return value
+  dnl conforms to ISO C99. So check that.
+  AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
+  case "$gl_cv_func_snprintf_retval_c99" in
+    *yes)
+      AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
+        [Define if the return value of the snprintf function is the number of
+         of bytes (excluding the terminating NUL) that would have been produced
+         if the buffer had been large enough.])
+      ;;
+  esac
 ])
 
 # Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
index 0bce51c6bbe181d79c782747a0175f4758782757..8cae82dd0b92a8baf0ca095efe5eb41d3d82ac35 100644 (file)
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
 
 dnl Written by Eric Blake.
 
-# wchar_h.m4 serial 32
+# wchar_h.m4 serial 33
 
 AC_DEFUN([gl_WCHAR_H],
 [
@@ -107,9 +107,9 @@ AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
 [
   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
   AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
-  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
   dnl Define it also as a C macro, for the benefit of the unit tests.
-  gl_MODULE_INDICATOR([$1])
+  gl_MODULE_INDICATOR_FOR_TESTS([$1])
 ])
 
 AC_DEFUN([gl_WCHAR_H_DEFAULTS],
index ed804e664ba7933d42051ff3f240e82f9d787998..a133e6ad5868f04247375563e72273e8e43512ab 100644 (file)
@@ -1,4 +1,4 @@
-# wchar_t.m4 serial 3 (gettext-0.18)
+# wchar_t.m4 serial 4 (gettext-0.18.2)
 dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -11,9 +11,13 @@ dnl Prerequisite: AC_PROG_CC
 AC_DEFUN([gt_TYPE_WCHAR_T],
 [
   AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
-    [AC_TRY_COMPILE([#include <stddef.h>
-       wchar_t foo = (wchar_t)'\0';], ,
-       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <stddef.h>
+            wchar_t foo = (wchar_t)'\0';]],
+          [[]])],
+       [gt_cv_c_wchar_t=yes],
+       [gt_cv_c_wchar_t=no])])
   if test $gt_cv_c_wchar_t = yes; then
     AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
   fi
index 19c0c5fe90ea035578b3511746d050e437f5574f..0de262e61200903d6c166b7c82c91b8c2037307f 100644 (file)
@@ -1,4 +1,4 @@
-# wcrtomb.m4 serial 4
+# wcrtomb.m4 serial 6
 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -10,37 +10,38 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
 
   AC_REQUIRE([AC_TYPE_MBSTATE_T])
   gl_MBSTATE_T_BROKEN
-  if test $REPLACE_MBSTATE_T = 1; then
-    REPLACE_WCRTOMB=1
-  fi
+
   AC_CHECK_FUNCS_ONCE([wcrtomb])
   if test $ac_cv_func_wcrtomb = no; then
     HAVE_WCRTOMB=0
-  fi
-  if test $HAVE_WCRTOMB != 0 && test $REPLACE_WCRTOMB != 1; then
-    dnl On AIX 4.3, OSF/1 5.1 and Solaris 10, wcrtomb (NULL, 0, NULL) sometimes
-    dnl returns 0 instead of 1.
-    AC_REQUIRE([AC_PROG_CC])
-    AC_REQUIRE([gt_LOCALE_FR])
-    AC_REQUIRE([gt_LOCALE_FR_UTF8])
-    AC_REQUIRE([gt_LOCALE_JA])
-    AC_REQUIRE([gt_LOCALE_ZH_CN])
-    AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-    AC_CACHE_CHECK([whether wcrtomb return value is correct],
-      [gl_cv_func_wcrtomb_retval],
-      [
-        dnl Initial guess, used when cross-compiling or when no suitable locale
-        dnl is present.
+  else
+    if test $REPLACE_MBSTATE_T = 1; then
+      REPLACE_WCRTOMB=1
+    else
+      dnl On AIX 4.3, OSF/1 5.1 and Solaris 10, wcrtomb (NULL, 0, NULL) sometimes
+      dnl returns 0 instead of 1.
+      AC_REQUIRE([AC_PROG_CC])
+      AC_REQUIRE([gt_LOCALE_FR])
+      AC_REQUIRE([gt_LOCALE_FR_UTF8])
+      AC_REQUIRE([gt_LOCALE_JA])
+      AC_REQUIRE([gt_LOCALE_ZH_CN])
+      AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+      AC_CACHE_CHECK([whether wcrtomb return value is correct],
+        [gl_cv_func_wcrtomb_retval],
+        [
+          dnl Initial guess, used when cross-compiling or when no suitable locale
+          dnl is present.
 changequote(,)dnl
-        case "$host_os" in
-                                   # Guess no on AIX 4, OSF/1 and Solaris.
-          aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
-                                   # Guess yes otherwise.
-          *)                       gl_cv_func_wcrtomb_retval="guessing yes" ;;
-        esac
+          case "$host_os" in
+                                     # Guess no on AIX 4, OSF/1 and Solaris.
+            aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
+                                     # Guess yes otherwise.
+            *)                       gl_cv_func_wcrtomb_retval="guessing yes" ;;
+          esac
 changequote([,])dnl
-        if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
-          AC_TRY_RUN([
+          if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
+            AC_RUN_IFELSE(
+              [AC_LANG_SOURCE([[
 #include <locale.h>
 #include <stdio.h>
 #include <string.h>
@@ -68,16 +69,17 @@ int main ()
         return 1;
     }
   return 0;
-}],
-            [gl_cv_func_wcrtomb_retval=yes],
-            [gl_cv_func_wcrtomb_retval=no],
-            [:])
-        fi
-      ])
-    case "$gl_cv_func_wcrtomb_retval" in
-      *yes) ;;
-      *) REPLACE_WCRTOMB=1 ;;
-    esac
+}]])],
+              [gl_cv_func_wcrtomb_retval=yes],
+              [gl_cv_func_wcrtomb_retval=no],
+              [:])
+          fi
+        ])
+      case "$gl_cv_func_wcrtomb_retval" in
+        *yes) ;;
+        *) REPLACE_WCRTOMB=1 ;;
+      esac
+    fi
   fi
   if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then
     gl_REPLACE_WCHAR_H
index 83daffc9c71110a7d2fe77cd6d40f69999676a4a..bc6b6e791438c81de55e934b305bdd51dbe0e44c 100644 (file)
@@ -1,4 +1,4 @@
-# wctype_h.m4 serial 5
+# wctype_h.m4 serial 8
 
 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
 
@@ -20,6 +20,22 @@ AC_DEFUN([gl_WCTYPE_H],
     HAVE_ISWCNTRL=0
   fi
   AC_SUBST([HAVE_ISWCNTRL])
+  AC_CHECK_FUNCS_ONCE([iswblank])
+  AC_CHECK_DECLS_ONCE([iswblank])
+  if test $ac_cv_func_iswblank = yes; then
+    HAVE_ISWBLANK=1
+    REPLACE_ISWBLANK=0
+  else
+    HAVE_ISWBLANK=0
+    if test $ac_cv_have_decl_iswblank = yes; then
+      REPLACE_ISWBLANK=1
+    else
+      REPLACE_ISWBLANK=0
+    fi
+  fi
+  AC_SUBST([HAVE_ISWBLANK])
+  AC_SUBST([REPLACE_ISWBLANK])
+
   AC_CHECK_HEADERS_ONCE([wctype.h])
   AC_REQUIRE([AC_C_INLINE])
 
index ef5404eab99703b9df2b7a36c30eee8be5a3f493..ac357f372ece5a6474895d9795ba9b592ba33bb5 100644 (file)
@@ -1,4 +1,4 @@
-# wcwidth.m4 serial 15
+# wcwidth.m4 serial 17
 dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -34,16 +34,15 @@ AC_DEFUN([gl_FUNC_WCWIDTH],
     HAVE_DECL_WCWIDTH=0
   fi
 
-  if test $ac_cv_func_wcwidth = no; then
-    REPLACE_WCWIDTH=1
-  else
+  if test $ac_cv_func_wcwidth = yes; then
     dnl On MacOS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
     dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1.
     dnl This leads to bugs in 'ls' (coreutils).
     AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales],
       [gl_cv_func_wcwidth_works],
       [
-        AC_TRY_RUN([
+        AC_RUN_IFELSE(
+          [AC_LANG_SOURCE([[
 #include <locale.h>
 /* AIX 3.2.5 declares wcwidth in <string.h>. */
 #include <string.h>
@@ -68,13 +67,15 @@ int main ()
     if (wcwidth (0x0301) > 0 || wcwidth (0x200B) > 0)
       return 1;
   return 0;
-}], [gl_cv_func_wcwidth_works=yes], [gl_cv_func_wcwidth_works=no],
+}]])],
+          [gl_cv_func_wcwidth_works=yes],
+          [gl_cv_func_wcwidth_works=no],
           [
 changequote(,)dnl
            case "$host_os" in
-                     # Guess yes on glibc systems.
-             *-gnu*) gl_cv_func_wcwidth_works="guessing yes";;
-             *)      gl_cv_func_wcwidth_works="guessing no";;
+                     # Guess yes on glibc and AIX 7 systems.
+             *-gnu* | aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";;
+             *)                  gl_cv_func_wcwidth_works="guessing no";;
            esac
 changequote([,])dnl
           ])
@@ -84,11 +85,13 @@ changequote([,])dnl
       *no) REPLACE_WCWIDTH=1 ;;
     esac
   fi
-  if test $REPLACE_WCWIDTH = 1; then
+  if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1; then
     AC_LIBOBJ([wcwidth])
   fi
-
-  if test $REPLACE_WCWIDTH = 1 || test $HAVE_DECL_WCWIDTH = 0; then
+  if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1 \
+     || test $HAVE_DECL_WCWIDTH = 0; then
     gl_REPLACE_WCHAR_H
   fi
+  dnl We don't substitute HAVE_WCWIDTH. We assume that if the system does not
+  dnl have the wcwidth function, then it does not declare it.
 ])
index a6c7d15cb50a60c46df73caef95f0fd1a0034809..58ef865565f09db7ccc09ddeaf69568d03755b0d 100644 (file)
@@ -1,4 +1,4 @@
-# wint_t.m4 serial 4 (gettext-0.18)
+# wint_t.m4 serial 5 (gettext-0.18.2)
 dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -11,7 +11,9 @@ dnl Prerequisite: AC_PROG_CC
 AC_DEFUN([gt_TYPE_WINT_T],
 [
   AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
-    [AC_TRY_COMPILE([
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
 /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
    <wchar.h>.
    BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
@@ -20,8 +22,10 @@ AC_DEFUN([gt_TYPE_WINT_T],
 #include <stdio.h>
 #include <time.h>
 #include <wchar.h>
-       wint_t foo = (wchar_t)'\0';], ,
-       [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
+            wint_t foo = (wchar_t)'\0';]],
+          [[]])],
+       [gt_cv_c_wint_t=yes],
+       [gt_cv_c_wint_t=no])])
   if test $gt_cv_c_wint_t = yes; then
     AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
   fi
index fc16c2c2c8498758e779756ba3d70455b2e12d3a..b846e7a0554e8c25d805a9a19625ab63a0b883d2 100644 (file)
@@ -1,4 +1,5 @@
 bg
+ca
 cs
 da
 de
index b459793b6963f4d3025447ed33829d6743d11c00..6694b1cd096c872d50f56f063d1ee73057dfd48c 100644 (file)
@@ -11,7 +11,7 @@ top_builddir = ..
 
 # These options get passed to xgettext.
 XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \
-         \
+          \
  --flag=_:1:pass-c-format\
  --flag=N_:1:pass-c-format\
  --flag=error:3:c-format --flag=error_at_line:5:c-format\
index a156b003e844e376608c928f2181f6e11ee42975..25b55fdff828625b790762ff654b6fa7942eea75 100644 (file)
Binary files a/po/bg.gmo and b/po/bg.gmo differ
index fc61453d8e2437f87dcd1bc12810eda65534b0f0..1018f1ee67e1f281b9beddb2f2a86d7b1a024685 100644 (file)
--- a/po/bg.po
+++ b/po/bg.po
@@ -9,14 +9,16 @@
 # This file should be sent to translation@iro.umontreal.ca with the
 # following subject line: TP-Robot tar-1.16.bg.po 
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.16\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2006-11-23 22:40+0200\n"
 "Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"Language: bg\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -94,7 +96,7 @@ msgstr ""
 "Съобщавайте за програмни грешки на %s.\n"
 "За грешки в българския превод на <dict@fsa-bg.org>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Непозната системна грешка"
 
@@ -106,8 +108,8 @@ msgstr "показва тази справка"
 msgid "give a short usage message"
 msgstr "показва кратко съобщение за използването"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "ИМЕ"
 
@@ -145,56 +147,61 @@ msgstr "(ДЕФЕКТ В ПРОГРАМАТА) Опцията би трябва
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: опцията „%s“ е двусмислена\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: опцията „--%s“ не допуска аргумент\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: опцията „%c%s“ не допуска аргумент\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: опцията „%s“ изисква аргумент\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: непозната опция „--%s“\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: непозната опция „%c%s“\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: неправилна опция -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: опцията изисква аргумент -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: опцията „-W %s“ е двусмислена\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: опцията „-W %s“ не допуска аргумент\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: опцията „%s“ изисква аргумент\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "паметта е изчерпана"
@@ -522,190 +529,190 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Не може да се стартира отдалечена командна обвивка"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Посоката за отместване е недопустима"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "На опция е подаден неправилен режим"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Неправилен размер: %s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Мястото за позициониране е извън допустимия диапазон"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Неправилна дължина на лента"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Мястото за позициониране е извън допустимия диапазон"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Преждевременен край (eof)\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Вид основно действие:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Неочакван EOF"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "N"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "Не може да се отвори „%s“"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "твърде много аргументи"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Непозната команда"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Това не прилича на tar-архив"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Общо записани байтове"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Общо прочетени байтове"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Общо изтрити байтове: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(канал)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Неправилна стойност на record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Не е посочено име на архив"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Не може да се проверяват архиви на стандартните вход/изход"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Архивът е компресиран.  Използвайте опцията %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Не може да се актуализират компресирани архиви"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "В началото на лентата, край на изпълнението"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Твърде много грешки, край на изпълнението"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Размер на записа = %lu блок"
 msgstr[1] "Размер на записа = %lu блока"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Неподравнен блок (%lu байт) в архива"
 msgstr[1] "Неподравнен блок (%lu байта) в архива"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Невъзможно е връщане назад в архивния файл; той може да е нечитаем без опция "
 "-i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek не завърши при граница на запис"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: съдържа неправилен номер на том"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Препълване на номера на том"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Подгответе том №%d за %s и натиснете return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF, когато се очакваше отговор от потребителя"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ВНИМАНИЕ: Архивът е незавършен"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -717,66 +724,66 @@ msgstr ""
 " q             Прекратява tar\n"
 " y или return  Продължава изпълнението\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Поражда вторична командна обвивка\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Извежда този списък\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Няма повече томове; изход.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Не е посочено име на файл.  Опитайте отново.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Неправилна команда.  Използвайте ? за справка.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "командата %s не успя"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s вероятно продължава в този том: заглавният запис съдържа отрязано име"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s не продължава с този том"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s е грешен размер (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Този том е извън поредицата"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Архивът не е етикетиран да отговаря на %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Томът %s не съответства на %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -784,7 +791,7 @@ msgstr ""
 "%s: името на файла е твърде дълго, за да се побере в заглавен запис на "
 "многотомен ГНУ-архив и бе съкратено"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "EOF на архив %s не е на границата на блок"
@@ -796,20 +803,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Само %lu от %lu байт можаха да се прочетат"
 msgstr[1] "Само %lu от %lu байта можаха да се прочетат"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Съдържанието се различава"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Неочакван знак за край (EOF) в архива"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Файловите типове се различават"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Режимите за достъп се различават"
 
@@ -825,146 +832,146 @@ msgstr "Групите се различават"
 msgid "Mod time differs"
 msgstr "Времената на промяна се различават"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Размерите се различават"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Не е свързан с %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Символните връзки се различават"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Номерата на устройство се различават"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Проверка"
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Непознат файлов тип „%c“, сравнява се като обикновен файл"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Архивът съдържа файлови имена, с отстранени префикси."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Проверката може и да не открие оригиналните файлове."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "НЕУСПЕШНА ПРОВЕРКА: открита е %d неправилен заглавен запис"
 msgstr[1] "НЕУСПЕШНА ПРОВЕРКА: открити са %d неправилни заглавни записа"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Изолиран блок от нули при %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, fuzzy, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: каталогът е обозначен като кеш; не се архивира"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 "стойността на %s е извън границите %s на диапазона %s..%s; замества се с %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "стойността %s е извън границите %s на диапазона %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Генерират се отрицателни осмични заглавни записи"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: файловото име е твърде дълго (максимум %d); не е архивирано"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: файловото име е твърде дълго (не може да се раздели); не е архивирано"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: името на символната връзка е твърде дълго; не е архивирано"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Файлът намаля с %s байт; допълва се с нула"
 msgstr[1] "%s: Файлът намаля с %s байта; допълва се с нули"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: файлът е в друга файлова система; не се архивира"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Непознат файлов тип; файлът се пренебрегва"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Неархивирани връзки с %s.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: файлът не е променен; не се архивира"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: файлът е архив; не се архивира"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 #, fuzzy
 msgid "directory not dumped"
 msgstr "%s: каталогът е обозначен като кеш; не се архивира"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: файлът бе изменен по време на четене"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: гнездото се пренебрегва"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: пренебрегва се специалният файл тип door"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Пропуска се до следващия заглавен запис"
 
@@ -972,75 +979,75 @@ msgstr "Пропуска се до следващия заглавен запи
 msgid "Deleting non-header from archive"
 msgstr "Изтрива се незаглавен запис от архива"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: записано е невероятно старо време %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: записано е време %s, което е %s сек. в бъдещето"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Неочаквана несъгласуваност при създаване на каталог"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 "%s: каталогът бе преименуван преди да може да се извлече състоянието му"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Продължаващи файлове се извличат като обикновени файлове"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Опитва се извличането на символни връзки като твърди"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Не може да се извлича -- файлът продължава с друг том"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Неочаквано дълъг заглавен запис"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Непознат файлов тип „%c“, извлича се като обикновен файл"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Текущият %s е по-нов или със същата възраст"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Не можа да се направи резервно копие на този файл"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Бе невъзможно %s да се преименува на %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Каталогът бе преименуват от %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Каталогът бе преименуван"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Каталогът е нов"
@@ -1150,35 +1157,35 @@ msgstr "%s: Изтрива се %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Не може да се изтрие"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Пропуска се"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "блок %s: ** Блок от знаци NUL **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "блок %s: ** Край на файла **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "блок %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Интервали в заглавен запис вместо числова стойност на %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1186,141 +1193,143 @@ msgstr ""
 "е допълнение до две"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Осмичната стойност %.*s в архива е извън диапазона за %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Архивът съдържа архаични заглавни записи по модул 64 (6 битови)"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 "Архивът е подписан с низ по модул 64 %s, който е е извън диапазона за %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Стойността по модул 256 в архива е извън диапазона %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Архивът съдържа %.*s, вместо това се очаква числова стойност на %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Стойността %s в архива е извън допустимия диапазон за %s (%s..%s)"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " връзка към %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " непознат файлов тип %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Дълга връзка--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Дълго име--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Заглавен запис на тома--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Продължава при байт %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Създава се каталог:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Не може да се смени работният каталог"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Преименува се %s на %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Не може да се преименува на %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Преименува се %s обратно на %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Не може да се запази работният каталог"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Не може да се смени работният каталог"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Файлът бе изтрит преди да бъде прочетен"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Файлът бе изтрит преди да бъде прочетен"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "породен процес"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "междупроцесен канал"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "Във файловите имена са използвани „*“ и „?“.  Моля,"
 
-#: src/names.c:603
+#: src/names.c:596
 #, fuzzy
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr "използвайте --wildcards, за да позволите съпоставяне с образци,"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Не е открит в архива"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Необходимо срещане не е открито в архива"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Архивът не е етикетиран да отговаря на %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1346,7 +1355,7 @@ msgstr ""
 "Непознат начин за извеждане на спец. знаци „%s“. Използвайте „%s --quoting-"
 "style=help“, за да получите списък."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1365,7 +1374,7 @@ msgstr ""
 "tar\n"
 "  tar -xf архив.tar            # Извлича от архив.tar всички файлове\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1387,79 +1396,79 @@ msgstr ""
 "иначе\n"
 "  never, simple   винаги да се правят прости резервни копия\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Вид основно действие:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "изрежда съдържанието на архив"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "извлича файлове от архива"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "създава нов архив"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "намира разликите между архива и файловата система"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "добавя файлове в края на архив"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "добавя само файлове, по-нови от копието в архива"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "прибавя tar-файлове към архива"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "трие файлове от архива (не при магнитни ленти!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "проверява етикета на тома и завършва"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Модификатори на действието:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "работи ефективно с разредени файлове"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "ГОЛЯМ[.МАЛЪК]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "определя версията на формата разредени файлове (влече --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "със стар формат ГНУ за инкрементално архивиране"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "с новия формат на ГНУ за инкрем. архивиране"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "при нечитаеми файлове не завършва с грешка"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1471,122 +1480,122 @@ msgstr ""
 "list и когато списъкът от файлове е зададен или на командния ред, или с "
 "опция -T.  Ако не е посочен N, се подразбира 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "архивът е с произволен достъп"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "архивът е с произволен достъп"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Регулиране заместването на файлове:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "след записа опитва да провери архива"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "изтрива файловете след като ги добави в архива"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "при извличане не замества съществуващи файлове"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "не замества съществуващи файлове, ако са по-нови от копията им в архива"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "при извличане замества съществуващи файлове"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "изтрива всеки файл преди да извлича върху него"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "изпразва йерархията преди извличане на каталог"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "запазва метаданните на съществуващи каталози"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "при извличане замества метаданните на съществуващи каталози (подразбира се)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Избор на изходен поток:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "извлича файловете на стандартния изход"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "КОМАНДА"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "подава с канал всеки извлечен файл към КОМАНДА"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "игнорира кода на завършване на породени процеси"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "счита за грешка всеки ненулев код на завършване на породен процес"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Подход спрямо файловите атрибути:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "прави ИМЕ да е собственик на добавените файлове"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "прави ИМЕ да бъде групата на добавените файлове"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "ДАТА-ИЛИ-ФАЙЛ"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "прави времето на промяна на добавяни файлове като ДАТА-ИЛИ-ФАЙЛ"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ПРОМЕНИ"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "модифицира режима за достъп на добавени файлове"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "МЕТОД"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1596,33 +1605,33 @@ msgstr ""
 "времената след четене (при МЕТОД=„replace“, подразбира се), или не променя "
 "имената изобщо (МЕТОД=„system“)"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "не извлича времето на промяна на файловете"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "опитва да възстановява собствеността на файловете"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "извлича файловете от ваше име"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "използва числа вместо имена за потребител и група"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "възстановява точно (без umask) режима на достъп (подразбира се при "
 "привилегирован потребител)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1630,15 +1639,15 @@ msgstr ""
 "прилага umask на потребителя при извличане на файлове (подразбира се при "
 "обикновен потребител)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "файловете за извличане са сортирани според архива"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "същото като едновременно -p и -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1646,139 +1655,139 @@ msgstr ""
 "забавя настройката на времето на промяна и режима за достъп на извличаните "
 "каталози докато извличането завърши"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "отменя ефекта на --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Избор на устройство и смяна:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "АРХИВ"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "използва архивния файл или устройство АРХИВ"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "архивният файл е локален дори при двуеточие"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "използва посочената КОМАНДА вместо rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "използва посочената КОМАНДА вместо rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "посочва устройство и гъстота"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "създава/извежда/извлича многотомен архив"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "смяна на лентата след запис на 1024 x N байта"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "изпълнява скрипт в края на всяка лента (влече -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "ползва от и обновява във ФАЙЛ номера на тома"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Блокуване на устройството:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "БЛОКОВЕ"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "БЛОКОВЕ x 512 байта в секунда"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "прави N-байтови записи, кратно на 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "пренебрегва блоковете от нули и продължава"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "преформира при четене блоковете (канали 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Избор на архивен формат:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "ФОРМАТ"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "създава архив с посочения формат"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "ФОРМАТ е някой от следните:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "стар формат tar, V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "формат на ГНУ при tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "формат на версия 1.13.x на tar на ГНУ"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "формат POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "формат POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "същото като pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "същото като --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "същото като --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "ключдума[[:]=стойност][,ключдума[[:]=стойност]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "управляващи ключови думи за pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "ТЕКСТ"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1786,176 +1795,176 @@ msgstr ""
 "създава архив с име на том ТЕКСТ; при извеждане или извличане сравнява името "
 "на тома с ТЕКСТ"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Противоречащи си опции за компресиране"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "Не може да се пише към компресиращата програма"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "Не може да се пише към компресиращата програма"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "ПРОГ"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "прекарва архива през ПРОГ (трябва да приема -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Избор на локален файл:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "добавя посочения ФАЙЛ към архива (полезно е, ако името му започва с минус)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "КАТ"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "работи в каталога КАТ"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "взема имената за извличане или създаване от ФАЙЛ"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T чете имена, завършващи с нулев байт"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "декодира „\\“ във файловите имена на -T (подразб.)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "не декодира „\\“ във файловите имена на -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "ОБРАЗЕЦ"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "без файловете, отговарящи на ОБРАЗЕЦ"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "пропуска файловете, отговарящи на образци в ФАЙЛ"
 
-#: src/tar.c:657
+#: src/tar.c:658
 #, fuzzy
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "без каталози, обозначени като кеширащи"
 
-#: src/tar.c:660
+#: src/tar.c:661
 #, fuzzy
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "без каталози, обозначени като кеширащи"
 
-#: src/tar.c:663
+#: src/tar.c:664
 #, fuzzy
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "без каталози, обозначени като кеширащи"
 
-#: src/tar.c:665
+#: src/tar.c:666
 #, fuzzy
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "без каталози, обозначени като кеширащи"
 
-#: src/tar.c:668
+#: src/tar.c:669
 #, fuzzy
 msgid "exclude everything under directories containing FILE"
 msgstr "без каталози, обозначени като кеширащи"
 
-#: src/tar.c:670
+#: src/tar.c:671
 #, fuzzy
 msgid "exclude directories containing FILE"
 msgstr "без каталози, обозначени като кеширащи"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "без автоматично влизане в подкаталозите"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "работи в рамките на локалната файлова система"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "влиза рекурсивно в подкаталозите (подразбира се)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "не маха „/“ в началото на файлови имена"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "следва симв. връзки; архивира сочените файлове"
 
-#: src/tar.c:686
+#: src/tar.c:687
 #, fuzzy
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "следва симв. връзки; архивира сочените файлове"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "ЧЛЕН-ИМЕ"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "започва от файл с име ЧЛЕН-ИМЕ в архива"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "съхранява само файлове, по-нови от ДАТА-ИЛИ-ФАЙЛ"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "ДАТА"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "сравнява времето само ако данните са променени"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "МЕТОД"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "резервно копира съществуващи файлове с МЕТОД"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "НИЗ"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1964,98 +1973,98 @@ msgstr ""
 "освен ако не е бил сменен с променливата от обкръжението "
 "SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Промени на файловите имена:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "при извличане маха N начални каталози от файловите пътеки"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "ИЗРАЗ"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 "преобразува файловите имена, използвайки посочения ИЗРАЗ за замяна на sed"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Съпоставяне с файлови имена (влияе и на включващи, и на изключващи образци):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "пренебрегва разликата между големи/малки букви"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "съпоставянето с образците започва от началото на файловото име"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "съпоставянето започва след кой да е „/“ (подразбира се при изключване)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "отчита се разликата между малки и големи букви (подразбира се)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "ползва „*“ и „?“ (подразбира се за изключване)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "дословно низово сравнение"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "„/“ не пасва с „*“ и „?“"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "„/“ пасва с „*“ и „?“ (подразб. за изключване)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Извеждане на информация:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "подробно изрежда обработените файлове"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "Регулиране заместването на файлове:"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "извежда напредъка след всеки N-ти запис (подразбира се 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "съобщава, ако не всички твърди връзки са включени"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "СИГНАЛ"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2066,27 +2075,32 @@ msgstr ""
 "извежда текущите байтове при получаване на СИГНАЛ.  Допустими СИГНАЛи са "
 "SIGHUP, SIGQUIT, SIGINT, SIGUSR1 и SIGUSR2; имената без SIG също са позволени"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "извежда времената по Гринуич"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "изпраща подробния изход във ФАЙЛ"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "показва номера на блок в архива с всяко съобщение"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "изисква потвърждение за всяко действие"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "показва подразбираното от tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2094,32 +2108,32 @@ msgstr ""
 "при извеждане или извличане изрежда всеки каталог, който се пропуска по "
 "някаква причина"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "показва преобразуваните файлови имена в архива"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "НАЧИН"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "начин за цитиране на специални знаци; вж. по-долу за стойностите на НАЧИН"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "работи и със знаците от НИЗ като със специални"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "не работи със знаците от НИЗ като със специални"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Опции за съвместимост:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2127,64 +2141,64 @@ msgstr ""
 "при създаване е същото като --old-archive; при извличане е същото като --no-"
 "same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Други опции:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "забранява някои потенциално опасни опции"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Не може да се използва повече от една опция „-Acdtrux“"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Противоречащи си опции за компресиране"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Непознато име на сигнал: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Не е открит еталлонният файл за дата"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Използва се %s вместо непознатия файлов формат за дата %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Опция %s: Датата „%s“ се разглежда като %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: файловият списък вече е прочетен"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: файловото име съдържа нулев байт"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "прекарва архива през gzip"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Правилни аргументи за опциите --quoting-style са:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2192,170 +2206,170 @@ msgstr ""
 "\n"
 "*Този* tar подразбира следното:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Неправилен фактор за блокуване"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Неправилна дължина на лента"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "Грешен инкрементален файлов формат"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Повече от една ограничителна дата"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Неправилна версия на формат разредени файлове"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' не се поддържа на тази платформа"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "стойността на --checkpoint не е цяло число"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Неправилна група"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "На опция е подаден неправилен режим"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Неправилно число"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Неправилен собственик"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Неправилен размер на запис"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Размерът на запис трябва да е кратен на %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Неправилен брой елементи"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Позволява се само една опция --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Лошо образуван аргумент за гъстота: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Непозната гъстота: „%c“"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Опциите „-[0-7][lmh]“ не се поддържат от *този* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[ФАЙЛ]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Старата опция „%c“ изисква аргумент."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "без списък файлове опцията --occurrence е безсмислена"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "не може да се използва --occurrence при пожелания начин на работа"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Използването на много архивни файлове изисква опция „-M“"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Не може да се съчетават --listed-incremental с --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "без списък файлове опцията --occurrence е безсмислена"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Етикетът на тома е твърде дълъг (не повече от %lu байт)"
 msgstr[1] "%s: Етикетът на тома е твърде дълъг (не повече от %lu байта)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Не може да се проверяват многотомни архиви"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Не може да се проверяват компресирани архиви"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Не може да се използват многотомни компресирани архиви"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Не може да се съединяват компресирани архиви"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 "опцията --pax-option може да се използва само при архиви във формат POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Страхлив отказ да се създава празен архив"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Опциите „-Aru“ са несъвместими с „-f -“"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Трябва да посочите поне една от опциите „-Acdtrux“"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2367,88 +2381,88 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Файлът намаля с %s байт"
 msgstr[1] "%s: Файлът намаля с %s байта"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Ключовата дума %s е непозната или все още не е реализирана"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Записано е време извън допустимия диапазон"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Образецът %s не може да се използва"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Ключовата дума %s не може да се отмени"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Лошо формиран разширен заглавен запис: не е посочена дължина"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Дължината на разширен заглавен запис е извън допустимия диапазон"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Дължината %*s на разширен заглавен запис е извън допустимия диапазон"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Лошо формиран разширен заглавен запис: липсва интервал след дължината"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Лошо формиран разширен заглавен запис: липсва знак за равенство"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Лошо формиран разширен заглавен запис: липсва знак за нов ред"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 "Пренебрегва се непознатата ключова дума „%s“ за разширен заглавен запис"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
-"Генерираната двойка <ключова дума, стойност> е твърде дълга (ключова дума=%"
-"s, дължина=%s)"
+"Генерираната двойка <ключова дума, стойност> е твърде дълга (ключова дума="
+"%s, дължина=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Разширеният заглавен запис %s=%s е извън диапазона %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Неправилно формиран разширен заглавен запис: неправилен %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Неправилно формиран разширен заглавен запис: прекомерен %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Лошо формиран разширен заглавен запис: неправилен %s; очаква се разделител %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2490,7 +2504,7 @@ msgstr "Контролна точка при запис %u"
 msgid "Read checkpoint %u"
 msgstr "Контролна точка при четене %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2498,73 +2512,73 @@ msgstr ""
 "genfile борави с файловете с данни за тестовия пакет GNU paxutils.\n"
 "ОПЦИИТЕ са:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Опции за създаването на файл:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "РАЗМЕР"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Създава файл с посочения РАЗМЕР"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Запис във файл ИМЕ вместо на стандартния изход"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Чете файловите имена от ФАЙЛ"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T чете имена, завършващи с нулев байт"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Попълва файла с посочения ОБРАЗЕЦ. ОБРАЗЕЦ може да бъде „default“ или „zeros“"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Размер на блок за разреден файл"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Генерира разреден файл. Останалата част от командния ред дава карта на файла."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 #, fuzzy
 msgid "Seek to the given offset before writing data"
 msgstr "след записа опитва да провери архива"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Опции за файлови статистики:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Извежда съдържанието на структурата stat за всеки файл. По подразбиране "
 "ФОРМАТ е: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Опции за синхронизирано изпълнение:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [ОПЦИЯ...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 #, fuzzy
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
@@ -2573,21 +2587,21 @@ msgstr ""
 "Изпълнява посочената КОМАНДА. Полезно с --checkpoint и някоя от --cut, --"
 "append, --touch"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Изпълнява посоченото действие (вж. по-долу) до достигането на контролна "
 "точка N"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Посочва дата за следващата опция --touch"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Извежда изпълнените контролни точки и кода на завършване на КОМАНДА"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2595,7 +2609,7 @@ msgstr ""
 "Синхронизирано изпълнение на действията. Те се изпълняват когато се достигне "
 "контролната точка с номер, посочен с --checkpoint."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2603,149 +2617,163 @@ msgstr ""
 "Отсича ФАЙЛ до размера, определен с предхождаща опция --length (подразбира "
 "се 0)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Добавя РАЗМЕР байтове към ФАЙЛ. РАЗМЕРът се определя от предхождаща опция --"
 "length."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Обновява времето на достъп и промяна на FILE"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Изпълнява КОМАНДА"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Неправилен размер: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Номер извън допустимия диапазон: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Отрицателен размер: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "не успя stat(%s)"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Грешка при анализа на число до „%s“"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Непознат формат за дата"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[АРГУМ...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "Не може да се отвори „%s“"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Не може да се изпълни %s"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "името на файла съдържа нулев байт"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "не може да се създават разредени файлове на стандартния изход, използвайте "
 "опцията --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "неправилна маска (до „%s“)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Непознато поле „%s“"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "не може да се смени времето на „%s“"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "Не може да се отвори „%s“"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Командата завърши успешно\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Командата завърши с код %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Командата бе прекратена със сигнал %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Командата бе спряна със сигнал %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Командата генерира core\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Командата бе прекратена\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat изисква файлови имена"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Не може да се запази работният каталог"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "Бе невъзможно %s да се преименува на %s"
+
+#~ msgid "suppress this warning."
+#~ msgstr "или --no-wildcards, за да не се извежда това предупреждение."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: неправилна опция -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Чете се %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2753,15 +2781,6 @@ msgstr "--stat изисква файлови имена"
 #~ "\n"
 #~ "Съобщавайте за програмни грешки на <%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Чете се %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Грешката е непоправима: край на изпълнението"
-
-#~ msgid "suppress this warning."
-#~ msgstr "или --no-wildcards, за да не се извежда това предупреждение."
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "прекарва архива през bzip2"
 
@@ -2813,6 +2832,9 @@ msgstr "--stat изисква файлови имена"
 #~ msgid "Premature end of file"
 #~ msgstr "Преждевременен край на файла"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Грешката е непоправима: край на изпълнението"
+
 #~ msgid "block size"
 #~ msgstr "блоковият размер"
 
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644 (file)
index 0000000..dc89434
Binary files /dev/null and b/po/ca.gmo differ
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..bc30fa8
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,2767 @@
+# Catalan translation for tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the tar package.
+# Àngel Mompó <mecatxis@gmail.com>, 2010.
+#: src/create.c:1550
+msgid ""
+msgstr ""
+"Project-Id-Version: tar-1.23.90\n"
+"Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-18 20:14+0200\n"
+"Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: gnu/argmatch.c:135
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "el paràmetre %s no és vàlid per %s"
+
+#: gnu/argmatch.c:136
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "el paràmetre %s és ambigu per %s"
+
+#: gnu/argmatch.c:155
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Els paràmetres vàlids són:"
+
+#: gnu/argp-help.c:149
+#, c-format
+msgid "ARGP_HELP_FMT: %s value is less than or equal to %s"
+msgstr "ARGP_HELP_FMT: el valor de %s és més petit o igual que %s"
+
+#: gnu/argp-help.c:222
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr "%.*s: El paràmetre ARGP_HELP_FMT necessita un valor"
+
+#: gnu/argp-help.c:228
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter must be positive"
+msgstr "%.*s: El paràmetre ARGP_HELP_FMT ha de ser positiu"
+
+#: gnu/argp-help.c:237
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr "%.*s: Paràmetre ARGP_HELP_FMT desconegut"
+
+#: gnu/argp-help.c:249
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr "Hi ha brossa a ARGP_HELP_FMT: %s"
+
+#: gnu/argp-help.c:1246
+msgid ""
+"Mandatory or optional arguments to long options are also mandatory or "
+"optional for any corresponding short options."
+msgstr ""
+"Els paràmetres obligatoris o opcionals per les opcions llargues també ho són "
+"per les corresponents opcions curtes."
+
+#: gnu/argp-help.c:1639
+msgid "Usage:"
+msgstr "Ús:"
+
+#: gnu/argp-help.c:1643
+msgid "  or: "
+msgstr "  o: "
+
+#: gnu/argp-help.c:1655
+msgid " [OPTION...]"
+msgstr " [OPCIÓ...]"
+
+#: gnu/argp-help.c:1682
+#, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr "Proveu «%s --help» o «%s --usage» per més informació.\n"
+
+#: gnu/argp-help.c:1710
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Informeu dels errors de programació a %s.\n"
+
+#: gnu/argp-help.c:1929 gnu/error.c:183
+msgid "Unknown system error"
+msgstr "Error de sistema desconegut"
+
+#: gnu/argp-parse.c:83
+msgid "give this help list"
+msgstr "dóna aquesta llista d'ajuda"
+
+#: gnu/argp-parse.c:84
+msgid "give a short usage message"
+msgstr "dóna un missatge curt sobre utilització"
+
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
+msgid "NAME"
+msgstr "NOM"
+
+#: gnu/argp-parse.c:85
+msgid "set the program name"
+msgstr "definiu el nom del programa"
+
+#: gnu/argp-parse.c:86
+msgid "SECS"
+msgstr "SEGS"
+
+#: gnu/argp-parse.c:87
+msgid "hang for SECS seconds (default 3600)"
+msgstr "es penja durant SECS segons (per defecte 3600)"
+
+#: gnu/argp-parse.c:144
+msgid "print program version"
+msgstr "mostra la versió del programa"
+
+#: gnu/argp-parse.c:160
+#, c-format
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr "(ERROR DE PROGRAMA) Versió desconeguda!?"
+
+#: gnu/argp-parse.c:613
+#, c-format
+msgid "%s: Too many arguments\n"
+msgstr "%s: Massa paràmetres\n"
+
+#: gnu/argp-parse.c:756
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr "(ERROR DE PROGRAMA) Hauria de conèixer l'opció!?"
+
+#: gnu/closeout.c:114
+msgid "write error"
+msgstr "error d'escriptura"
+
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: l'opció «%s» és ambigua\n"
+
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: l'opció «--%s» no permet cap paràmetre\n"
+
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opció «%c%s» no permet cap paràmetre\n"
+
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: l'opció «--%s» necessita un paràmetre\n"
+
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: opció no reconeguda «--%s»\n"
+
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: opció no reconeguda «%c%s»\n"
+
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: opció invàlida -- «%c»\n"
+
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: l'opció necessita un paràmetre -- «%c»\n"
+
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: l'opció «-W %s» és ambigua\n"
+
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opció «-W %s» no permet cap paràmetre\n"
+
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: l'opció «-W %s» necessita un paràmetre\n"
+
+#: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
+msgid "memory exhausted"
+msgstr "memòria exhaurida"
+
+#: gnu/openat-die.c:36
+#, c-format
+msgid "unable to record current working directory"
+msgstr "No es pot desar el directori de treball actual"
+
+#: gnu/openat-die.c:54
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "No es pot tornar al directori de treball inicial"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK).  A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK)
+#. and U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: gnu/quotearg.c:274
+msgid "`"
+msgstr "«"
+
+#: gnu/quotearg.c:275
+msgid "'"
+msgstr "»"
+
+#. TRANSLATORS: A regular expression testing for an affirmative answer
+#. (english: "yes").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^yesexpr='
+#: gnu/rpmatch.c:149
+msgid "^[yY]"
+msgstr "^[sS]"
+
+#. TRANSLATORS: A regular expression testing for a negative answer
+#. (english: "no").  Testing the first character may be sufficient.
+#. Take care to consider upper and lower case.
+#. To enquire the regular expression that your system uses for this
+#. purpose, you can use the command
+#. locale -k LC_MESSAGES | grep '^noexpr='
+#: gnu/rpmatch.c:162
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: gnu/version-etc.c:76
+#, c-format
+msgid "Packaged by %s (%s)\n"
+msgstr "Empaquetat per %s (%s)\n"
+
+#: gnu/version-etc.c:79
+#, c-format
+msgid "Packaged by %s\n"
+msgstr "Empaquetat per %s\n"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.
+#: gnu/version-etc.c:86
+msgid "(C)"
+msgstr "(C)"
+
+#: gnu/version-etc.c:88
+msgid ""
+"\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>.\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Llicència GPLV3+: GNU GPL versió 3 o posterior <http://gnu.org/licenses/gpl."
+"html>\n"
+"Això és programari lliure: podeu modificar-lo i redistribuir-lo si voleu.\n"
+"No hi ha CAP GARANTIA, en la mesura que ho permeti la llei.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: gnu/version-etc.c:104
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrit per %s. \n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: gnu/version-etc.c:108
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrit per %s i %s. \n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: gnu/version-etc.c:112
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrit per %s, %s, i %s. \n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:119
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:126
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:133
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:141
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, %s, i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:149
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:158
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrit per %s,·%s,·%s \n"
+"%s,·%s,·%s,·%s,\n"
+"%s,·and·%s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: gnu/version-etc.c:169
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrit per %s,·%s,·%s,\n"
+"%s,·%s,·%s,·%s,\n"
+"%s,·%s,·i d'altres.\n"
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address
+#. for this package.  Please add _another line_ saying
+#. "Report translation bugs to <...>\n" with the address for translation
+#. bugs (typically your translation team's web or email address).
+#: gnu/version-etc.c:247
+#, c-format
+msgid ""
+"\n"
+"Report bugs to: %s\n"
+msgstr ""
+"\n"
+"Informeu dels errors a <%s>.\n"
+
+#: gnu/version-etc.c:249
+#, c-format
+msgid "Report %s bugs to: %s\n"
+msgstr "Informeu %s errors a: %s\n"
+
+#: gnu/version-etc.c:253
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s pàgina inicial <%s>\n"
+
+#: gnu/version-etc.c:255
+#, c-format
+msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
+msgstr "%s pàgina inicial: <http://www.gnu.org/software/%s/>\n"
+
+#: gnu/version-etc.c:258
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"Ajuda general per quan es fa servir programari de GNU: <http://www.gnu.org/"
+"gethelp/>\n"
+
+#. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
+#. Directly translating this to another language will not work, first because
+#. %s itself is not translated.
+#. Translate it as `%s: Function %s failed'.
+#: lib/paxerror.c:58 lib/paxerror.c:71
+#, c-format
+msgid "%s: Cannot %s"
+msgstr "%s: No es pot %s"
+
+#. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
+#. Directly translating this to another language will not work, first because
+#. %s itself is not translated.
+#. Translate it as `%s: Function %s failed'.
+#: lib/paxerror.c:84
+#, c-format
+msgid "%s: Warning: Cannot %s"
+msgstr "%s: Avís: No es pot %s"
+
+#: lib/paxerror.c:93
+#, c-format
+msgid "%s: Cannot change mode to %s"
+msgstr "%s: No es pot canviar el mode a %s"
+
+#: lib/paxerror.c:101
+#, c-format
+msgid "%s: Cannot change ownership to uid %lu, gid %lu"
+msgstr "%s: No es pot canviar la titularitat a uid %lu, gid %lu"
+
+#: lib/paxerror.c:127
+#, c-format
+msgid "%s: Cannot hard link to %s"
+msgstr "%s: No es pot crear l'enllaç dur amb %s"
+
+#: lib/paxerror.c:179 lib/paxerror.c:211
+#, c-format
+msgid "%s: Read error at byte %s, while reading %lu byte"
+msgid_plural "%s: Read error at byte %s, while reading %lu bytes"
+msgstr[0] "%s: Error de lectura al byte %s, quan s'estava llegint %lu byte"
+msgstr[1] "%s: Error de lectura al byte %s, quan s'estaven llegint %lu bytes"
+
+#: lib/paxerror.c:192
+#, c-format
+msgid "%s: Warning: Read error at byte %s, while reading %lu byte"
+msgid_plural "%s: Warning: Read error at byte %s, while reading %lu bytes"
+msgstr[0] ""
+"%s: Avís: Error de lectura al byte %s, quan s'estava llegint %lu byte"
+msgstr[1] "%s: Error de lectura al byte %s, quan s'estaven llegint %lu bytes"
+
+#: lib/paxerror.c:259
+#, c-format
+msgid "%s: Cannot seek to %s"
+msgstr "%s: No es pot buscar a %s"
+
+#: lib/paxerror.c:275
+#, c-format
+msgid "%s: Warning: Cannot seek to %s"
+msgstr "%s: Avís: No es pot buscar a %s"
+
+#: lib/paxerror.c:284
+#, c-format
+msgid "%s: Cannot create symlink to %s"
+msgstr "%s: No es pot crear l'enllaç simbòlic a %s"
+
+#: lib/paxerror.c:349
+#, c-format
+msgid "%s: Wrote only %lu of %lu byte"
+msgid_plural "%s: Wrote only %lu of %lu bytes"
+msgstr[0] "%s: S'ha escrit només %lu de %lu byte"
+msgstr[1] "%s: S'han escrit només %lu de %lu bytes"
+
+#: lib/paxnames.c:155
+#, c-format
+msgid "Removing leading `%s' from member names"
+msgstr "Es treuen les primeres «%s» dels noms dels membres"
+
+#: lib/paxnames.c:156
+#, c-format
+msgid "Removing leading `%s' from hard link targets"
+msgstr "Es treuen les primeres «%s» dels objectius dels enllaços durs"
+
+#: lib/paxnames.c:169
+msgid "Substituting `.' for empty member name"
+msgstr "Se substitueixen «.» per noms buits de membres"
+
+#: lib/paxnames.c:170
+msgid "Substituting `.' for empty hard link target"
+msgstr "Se substitueixen «.» per objectius buits d'enllaços durs"
+
+#: lib/rtapelib.c:299
+#, c-format
+msgid "exec/tcp: Service not available"
+msgstr "exec/tcp: El servei no està disponible"
+
+#: lib/rtapelib.c:303
+#, c-format
+msgid "stdin"
+msgstr "stdin"
+
+#: lib/rtapelib.c:306
+#, c-format
+msgid "stdout"
+msgstr "stdout"
+
+#: lib/rtapelib.c:429
+#, c-format
+msgid "Cannot connect to %s: resolve failed"
+msgstr "No es pot connectar amb %s: no s'ha pogut resoldre"
+
+#: lib/rtapelib.c:515
+#, c-format
+msgid "Cannot execute remote shell"
+msgstr "No es pot executar un interpret d'ordres remot"
+
+#: rmt/rmt.c:432
+msgid "Seek direction out of range"
+msgstr "La direcció de cerca està fora de rang"
+
+#: rmt/rmt.c:438
+msgid "Invalid seek direction"
+msgstr "La direcció de cerca no és vàlida"
+
+#: rmt/rmt.c:446
+msgid "Invalid seek offset"
+msgstr "L'òfset de cerca no és vàlid"
+
+#: rmt/rmt.c:452
+msgid "Seek offset out of range"
+msgstr "L'òfset de cerca està fora de rang"
+
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
+msgid "Invalid byte count"
+msgstr "La mida en bytes no és vàlida"
+
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
+msgid "Byte count out of range"
+msgstr "La mida en bytes està fora de rang"
+
+#: rmt/rmt.c:558
+msgid "Premature eof"
+msgstr "Final del fitxer prematur"
+
+#: rmt/rmt.c:601
+msgid "Invalid operation code"
+msgstr "El codi de l'operació no és vàlid"
+
+#: rmt/rmt.c:636 rmt/rmt.c:680
+msgid "Operation not supported"
+msgstr "No se suporta la operació"
+
+#: rmt/rmt.c:664
+msgid "Unexpected arguments"
+msgstr "Arguments inesperats"
+
+#: rmt/rmt.c:689
+msgid "Manipulate a tape drive, accepting commands from a remote process"
+msgstr "Manipula una unitat de cinta, acceptant comandes d'un procés remot"
+
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
+msgid "NUMBER"
+msgstr "NÚMERO"
+
+#: rmt/rmt.c:697
+msgid "set debug level"
+msgstr "estableix el nivell de depuració"
+
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
+msgid "FILE"
+msgstr "FITXER"
+
+#: rmt/rmt.c:699
+msgid "set debug output file name"
+msgstr "estableix el nom del fitxer de sortida de la depuració"
+
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
+msgid "cannot open %s"
+msgstr "no es pot obrir %s"
+
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
+#, c-format
+msgid "too many arguments"
+msgstr "massa arguments"
+
+#: rmt/rmt.c:822
+msgid "Garbage command"
+msgstr "Ordre escombraria"
+
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
+msgid "This does not look like a tar archive"
+msgstr "No sembla un arxiu tar"
+
+#: src/buffer.c:450 src/buffer.c:459
+msgid "Total bytes written"
+msgstr "Bytes totals escrits"
+
+#: src/buffer.c:457 src/buffer.c:471
+msgid "Total bytes read"
+msgstr "Bytes totals llegits"
+
+#: src/buffer.c:461
+#, c-format
+msgid "Total bytes deleted: %s\n"
+msgstr "Bytes totals esborrats: %s\n"
+
+#: src/buffer.c:550
+msgid "(pipe)"
+msgstr "(conducte)"
+
+#: src/buffer.c:573
+msgid "Invalid value for record_size"
+msgstr "El valor de record_size no és vàlid"
+
+#: src/buffer.c:576
+msgid "No archive name given"
+msgstr "No s'ha donat el nom de l'arxiu"
+
+#: src/buffer.c:618
+msgid "Cannot verify stdin/stdout archive"
+msgstr "No es pot verificar l'arxiu stdin/stdout"
+
+#: src/buffer.c:632
+#, c-format
+msgid "Archive is compressed. Use %s option"
+msgstr "L'arxiu està comprimit. Feu servir l'opció %s"
+
+#: src/buffer.c:689 src/tar.c:2448
+msgid "Cannot update compressed archives"
+msgstr "No es poden actualitzar els arxius comprimits"
+
+#: src/buffer.c:782
+msgid "At beginning of tape, quitting now"
+msgstr "Al principi de la cinta, se surt"
+
+#: src/buffer.c:788
+msgid "Too many errors, quitting"
+msgstr "Massa errors, se surt"
+
+#: src/buffer.c:821
+#, c-format
+msgid "Record size = %lu block"
+msgid_plural "Record size = %lu blocks"
+msgstr[0] "Mida del registre = %lu bloc"
+msgstr[1] "Mida del registre = %lu blocs"
+
+#: src/buffer.c:842
+#, c-format
+msgid "Unaligned block (%lu byte) in archive"
+msgid_plural "Unaligned block (%lu bytes) in archive"
+msgstr[0] "Bloc desalineat(byte %lu) a l'arxiu"
+msgstr[1] "Bloc desalineat(bytes %lu) a l'arxiu"
+
+#: src/buffer.c:919
+msgid "Cannot backspace archive file; it may be unreadable without -i"
+msgstr ""
+"No es pot tornar enrere al fitxer d'arxiu; potser no es pot llegir sense -i"
+
+#: src/buffer.c:951
+msgid "rmtlseek not stopped at a record boundary"
+msgstr "rmtlseek no s'ha aturat als límits d'un registre "
+
+#: src/buffer.c:1002
+#, c-format
+msgid "%s: contains invalid volume number"
+msgstr "%s: conté un número de volum invàlid"
+
+#: src/buffer.c:1037
+msgid "Volume number overflow"
+msgstr "Desbordament del número de volum"
+
+#: src/buffer.c:1052
+#, c-format
+msgid "Prepare volume #%d for %s and hit return: "
+msgstr "Prepareu el volum #%d per %s i premeu retorn: "
+
+#: src/buffer.c:1058
+msgid "EOF where user reply was expected"
+msgstr "Final del fitxer on s'esperava una resposta de l'usuari"
+
+#: src/buffer.c:1063 src/buffer.c:1095
+msgid "WARNING: Archive is incomplete"
+msgstr "AVÍS: L'arxiu és incomplet"
+
+#: src/buffer.c:1077
+#, c-format
+msgid ""
+" n name        Give a new file name for the next (and subsequent) volume(s)\n"
+" q             Abort tar\n"
+" y or newline  Continue operation\n"
+msgstr ""
+"  n nom        Dona el nom d'un fitxer nou pel següents (i següents) volum"
+"(s)\n"
+" q            Interromp tar\n"
+" y            Continua l'operació\n"
+
+#: src/buffer.c:1082
+#, c-format
+msgid " !             Spawn a subshell\n"
+msgstr " !             Engendra un interpret d'ordres\n"
+
+#: src/buffer.c:1083
+#, c-format
+msgid " ?             Print this list\n"
+msgstr " ?             Mostra aquesta ajuda\n"
+
+#: src/buffer.c:1090
+msgid "No new volume; exiting.\n"
+msgstr "No hi ha cap volum nou; se surt.\n"
+
+#: src/buffer.c:1123
+msgid "File name not specified. Try again.\n"
+msgstr "No s'ha especificat cap nom de fitxer. Torneu-ho a provar.\n"
+
+#: src/buffer.c:1136
+#, c-format
+msgid "Invalid input. Type ? for help.\n"
+msgstr "Entrada invàlida. Tecleja ? per mostrar l'ajuda.\n"
+
+#: src/buffer.c:1187
+#, c-format
+msgid "%s command failed"
+msgstr "L'ordre %s ha fallat"
+
+#: src/buffer.c:1368
+#, c-format
+msgid "%s is possibly continued on this volume: header contains truncated name"
+msgstr ""
+"%s possiblement continua en aquest volum: la capçalera conté un nom truncat"
+
+#: src/buffer.c:1372
+#, c-format
+msgid "%s is not continued on this volume"
+msgstr "%s no continua a aquest volum"
+
+#: src/buffer.c:1386
+#, c-format
+msgid "%s is the wrong size (%s != %s + %s)"
+msgstr "%s té una mida equivocada (%s != %s + %s)"
+
+#: src/buffer.c:1401
+#, c-format
+msgid "This volume is out of sequence (%s - %s != %s)"
+msgstr "Aquest volum és fora de la seqüència (%s - %s != %s)"
+
+#: src/buffer.c:1479 src/buffer.c:1505
+#, c-format
+msgid "Archive not labeled to match %s"
+msgstr "L'arxiu no està etiquetat per coincidir amb %s"
+
+#: src/buffer.c:1509
+#, c-format
+msgid "Volume %s does not match %s"
+msgstr "El Volum %s no coincideix amb %s"
+
+#: src/buffer.c:1603
+#, c-format
+msgid ""
+"%s: file name too long to be stored in a GNU multivolume header, truncated"
+msgstr ""
+"%s: El nom del fitxer és massa llarg per ser desat en una capçalera "
+"multivolum GNU. S'ha truncat"
+
+#: src/buffer.c:1794
+msgid "write did not end on a block boundary"
+msgstr "l'escriptura no ha acabat al límit d'un bloc"
+
+#: src/compare.c:95
+#, c-format
+msgid "Could only read %lu of %lu byte"
+msgid_plural "Could only read %lu of %lu bytes"
+msgstr[0] "Només es pot llegir %lu de %lu byte"
+msgstr[1] "Només es poden llegir %lu de %lu bytes"
+
+#: src/compare.c:105 src/compare.c:382
+msgid "Contents differ"
+msgstr "El contingut no coincideix"
+
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
+msgid "Unexpected EOF in archive"
+msgstr "Final de l'arxiu inesperat"
+
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
+msgid "File type differs"
+msgstr "El tipus de fitxer no coincideix"
+
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
+msgid "Mode differs"
+msgstr "El mode no coincideix"
+
+#: src/compare.c:205
+msgid "Uid differs"
+msgstr "L'identificador d'usuari no coincideix"
+
+#: src/compare.c:207
+msgid "Gid differs"
+msgstr "L'identificador de grup d'usuaris no coincideix"
+
+#: src/compare.c:211
+msgid "Mod time differs"
+msgstr "La data de modificació no coincideix"
+
+#: src/compare.c:215 src/compare.c:414
+msgid "Size differs"
+msgstr "La mida no coincideix"
+
+#: src/compare.c:263
+#, c-format
+msgid "Not linked to %s"
+msgstr "No s'ha enllaçat amb %s"
+
+#: src/compare.c:287
+msgid "Symlink differs"
+msgstr "L'enllaç tou no coincideix"
+
+#: src/compare.c:316
+msgid "Device number differs"
+msgstr "El número de dispositiu no coincideix"
+
+#: src/compare.c:456
+#, c-format
+msgid "Verify "
+msgstr "Verifiqueu "
+
+#: src/compare.c:463
+#, c-format
+msgid "%s: Unknown file type `%c', diffed as normal file"
+msgstr ""
+"%s: Tipus de fitxer desconegut `%c', s'usa diff com si es tractés d'un "
+"fitxer normal"
+
+#: src/compare.c:518
+msgid "Archive contains file names with leading prefixes removed."
+msgstr "L'arxiu conté noms de fitxers amb els prefixes inicials esborrats."
+
+#: src/compare.c:520
+msgid "Verification may fail to locate original files."
+msgstr "Pot ser que la verificació no pugui trobar els fitxers originals."
+
+#: src/compare.c:593
+#, c-format
+msgid "VERIFY FAILURE: %d invalid header detected"
+msgid_plural "VERIFY FAILURE: %d invalid headers detected"
+msgstr[0] "HA FALLAT LA VERIFICACIÓ: %d s'ha detectat una capçalera invàlida"
+msgstr[1] "HA FALLAT LA VERIFICACIÓ: %d s'han detectat capçaleres invàlides"
+
+#: src/compare.c:611 src/list.c:161
+#, c-format
+msgid "A lone zero block at %s"
+msgstr "Un sol bloc zero a %s"
+
+#: src/create.c:72
+#, c-format
+msgid "%s: contains a cache directory tag %s; %s"
+msgstr "%s: conté una etiqueta de directori de memòria cau %s; %s"
+
+#: src/create.c:261
+#, c-format
+msgid "value %s out of %s range %s..%s; substituting %s"
+msgstr "el valor %s està fora del rang%s %s..%s; es substitueix per %s"
+
+#: src/create.c:267
+#, c-format
+msgid "value %s out of %s range %s..%s"
+msgstr "el valor %s està fora del rang %s %s..%s"
+
+#: src/create.c:327
+msgid "Generating negative octal headers"
+msgstr "S'estan generant les capçaleres octals negatives"
+
+#: src/create.c:611 src/create.c:674
+#, c-format
+msgid "%s: file name is too long (max %d); not dumped"
+msgstr "%s: el nom del fitxer és massa llarg (màx %d); no s'aboca"
+
+#: src/create.c:621
+#, c-format
+msgid "%s: file name is too long (cannot be split); not dumped"
+msgstr "%s: el nom del fitxer és massa llarg (no es pot dividir); no s'aboca"
+
+#: src/create.c:648
+#, c-format
+msgid "%s: link name is too long; not dumped"
+msgstr "%s: el nom de l'enllaç és massa llarg; no s'aboca"
+
+#: src/create.c:1062
+#, c-format
+msgid "%s: File shrank by %s byte; padding with zeros"
+msgid_plural "%s: File shrank by %s bytes; padding with zeros"
+msgstr[0] "%s: El fitxer s'encongeix %s byte; s'omple amb zero"
+msgstr[1] "%s: El fitxer s'encongeix %s bytes; s'omple amb zeros"
+
+#: src/create.c:1158
+#, c-format
+msgid "%s: file is on a different filesystem; not dumped"
+msgstr "%s: el fitxer es troba a un sistema de fitxers diferent; no s'aboca"
+
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
+msgid "contents not dumped"
+msgstr "els continguts no s'aboquen"
+
+#: src/create.c:1416
+#, c-format
+msgid "%s: Unknown file type; file ignored"
+msgstr "%s: Tipus de fitxer desconegut; el fitxer s'ignora"
+
+#: src/create.c:1527
+#, c-format
+msgid "Missing links to %s."
+msgstr "Falten els enllaços a %s."
+
+#: src/create.c:1688
+#, c-format
+msgid "%s: file is unchanged; not dumped"
+msgstr "%s: el fitxer no ha canviat; no s'aboca"
+
+#: src/create.c:1697
+#, c-format
+msgid "%s: file is the archive; not dumped"
+msgstr "%s: el fitxer és l'arxiu; no s'aboca"
+
+#: src/create.c:1721 src/incremen.c:575
+msgid "directory not dumped"
+msgstr "el directori no s'aboca"
+
+#: src/create.c:1793
+#, c-format
+msgid "%s: file changed as we read it"
+msgstr "%s: el fitxer ha canviat mentre es llegia"
+
+#: src/create.c:1855
+#, c-format
+msgid "%s: socket ignored"
+msgstr "%s: sòcol ignorat"
+
+#: src/create.c:1861
+#, c-format
+msgid "%s: door ignored"
+msgstr "%s: porta ignorada"
+
+#: src/delete.c:217 src/list.c:198 src/update.c:203
+msgid "Skipping to next header"
+msgstr "Es salta fins a la propera capçalera"
+
+#: src/delete.c:283
+msgid "Deleting non-header from archive"
+msgstr "S'esborra la no-capçalera de l'arxiu"
+
+#: src/extract.c:277
+#, c-format
+msgid "%s: implausibly old time stamp %s"
+msgstr "%s: marca horària inversemblantment antiga %s"
+
+#: src/extract.c:295
+#, c-format
+msgid "%s: time stamp %s is %s s in the future"
+msgstr "%s: la marca horària %s pertany %s s al futur"
+
+#: src/extract.c:475
+#, c-format
+msgid "%s: Unexpected inconsistency when making directory"
+msgstr "%s: Inconsistència inesperada en crear el directori"
+
+#: src/extract.c:709
+#, c-format
+msgid "%s: Directory renamed before its status could be extracted"
+msgstr ""
+"%s: S'ha canviat el nom del directori abans de poder extreure'n l'estat"
+
+#: src/extract.c:863
+msgid "Extracting contiguous files as regular files"
+msgstr "Els fitxers contigus s'extreuen com fitxers normals"
+
+#: src/extract.c:1183
+msgid "Attempting extraction of symbolic links as hard links"
+msgstr "Es prova d'extreure els enllaços simbòlics com enllaços durs"
+
+#: src/extract.c:1339
+#, c-format
+msgid "%s: Cannot extract -- file is continued from another volume"
+msgstr "%s: No espot extreure -- el fitxer continua des d'un altre volum"
+
+#: src/extract.c:1346 src/list.c:1117
+msgid "Unexpected long name header"
+msgstr "Nom de la capçalera inesperadament llarg"
+
+#: src/extract.c:1353
+#, c-format
+msgid "%s: Unknown file type `%c', extracted as normal file"
+msgstr "%s: Tipus de fitxer «%c» desconegut, s'extreu com un fitxer normal"
+
+#: src/extract.c:1379
+#, c-format
+msgid "Current %s is newer or same age"
+msgstr "L'actual %s és igual d'antic o més nou"
+
+#: src/extract.c:1431
+#, c-format
+msgid "%s: Was unable to backup this file"
+msgstr "%s: No es pot fer la còpia de seguretat d'aquest fitxer"
+
+#: src/extract.c:1568
+#, c-format
+msgid "Cannot rename %s to %s"
+msgstr "No es pot canviar el nom de %s a %s"
+
+#: src/incremen.c:474 src/incremen.c:518
+#, c-format
+msgid "%s: Directory has been renamed from %s"
+msgstr "%s: El directori ha canviat de nom a partir de %s"
+
+#: src/incremen.c:486
+#, c-format
+msgid "%s: Directory has been renamed"
+msgstr "%s: El directori ha canviat de nom"
+
+#: src/incremen.c:531
+#, c-format
+msgid "%s: Directory is new"
+msgstr "%s: El directori és nou"
+
+#: src/incremen.c:956 src/incremen.c:973
+msgid "Invalid time stamp"
+msgstr "Marca horària invàlida"
+
+#: src/incremen.c:1012
+msgid "Invalid modification time (seconds)"
+msgstr "Modificació invalida del temps (segons)"
+
+#: src/incremen.c:1027
+msgid "Invalid modification time (nanoseconds)"
+msgstr "Modificació invàlida del temps (nanosegons)"
+
+#: src/incremen.c:1047
+msgid "Invalid device number"
+msgstr "Número de dispositiu invàlid"
+
+#: src/incremen.c:1062
+msgid "Invalid inode number"
+msgstr "Número de node d'identificació invàlid"
+
+#: src/incremen.c:1113 src/incremen.c:1150
+msgid "Field too long while reading snapshot file"
+msgstr "Camp massa llarg en llegir el fitxer d'instantània"
+
+#: src/incremen.c:1120 src/incremen.c:1158
+msgid "Read error in snapshot file"
+msgstr "Error de lectura del fitxer d'instantània"
+
+#: src/incremen.c:1122 src/incremen.c:1162 src/incremen.c:1214
+#: src/incremen.c:1272
+msgid "Unexpected EOF in snapshot file"
+msgstr "Final de l'arxiu d'instantània inesperat"
+
+#: src/incremen.c:1129 src/incremen.c:1169
+msgid "Unexpected field value in snapshot file"
+msgstr "Valor de camp inesperat del fitxer d'instantània"
+
+#: src/incremen.c:1264
+msgid "Missing record terminator"
+msgstr "Falta el terminador del registre"
+
+#: src/incremen.c:1325 src/incremen.c:1328
+msgid "Bad incremental file format"
+msgstr "Format del fitxer incremental erroni"
+
+#: src/incremen.c:1347
+#, c-format
+msgid "Unsupported incremental format version: %<PRIuMAX>"
+msgstr "No se suporta la versió del format incremental: %<PRIuMAX>"
+
+#: src/incremen.c:1502
+#, c-format
+msgid "Malformed dumpdir: expected '%c' but found %#3o"
+msgstr "Directori d'abocament mal format: s'esperava «%c» i s'ha trobat %#3o"
+
+#: src/incremen.c:1512
+msgid "Malformed dumpdir: 'X' duplicated"
+msgstr "Directori d'abocament mal format: «X» duplicada"
+
+#: src/incremen.c:1525
+msgid "Malformed dumpdir: empty name in 'R'"
+msgstr "Directori d'abocament mal format: nom buit a «R»"
+
+#: src/incremen.c:1538
+msgid "Malformed dumpdir: 'T' not preceeded by 'R'"
+msgstr "Directori d'abocament mal format: «T» no està  precedit de «R»"
+
+#: src/incremen.c:1544
+msgid "Malformed dumpdir: empty name in 'T'"
+msgstr "Directori d'abocament mal format: nom buit a «T»"
+
+#: src/incremen.c:1564
+#, c-format
+msgid "Malformed dumpdir: expected '%c' but found end of data"
+msgstr ""
+"Directori d'abocament mal format: s'esperava «%c» però s'ha trobat el final "
+"de les dades"
+
+#: src/incremen.c:1571
+msgid "Malformed dumpdir: 'X' never used"
+msgstr "Directori d'abocament mal format: no s'ha fet servir «X»"
+
+#: src/incremen.c:1615
+#, c-format
+msgid "Cannot create temporary directory using template %s"
+msgstr "No es pot crear el directori temporal fent servir la plantilla %s"
+
+#: src/incremen.c:1677
+#, c-format
+msgid "%s: Not purging directory: unable to stat"
+msgstr "%s: No es purga el directori: no se'n pot saber l'estat"
+
+#: src/incremen.c:1690
+#, c-format
+msgid "%s: directory is on a different device: not purging"
+msgstr "%s: el directori és en un dispositiu diferent: no es purga"
+
+#: src/incremen.c:1698
+#, c-format
+msgid "%s: Deleting %s\n"
+msgstr "%s: S'elimina %s\n"
+
+#: src/incremen.c:1703
+#, c-format
+msgid "%s: Cannot remove"
+msgstr "%s: No es pot esborrar"
+
+#: src/list.c:130
+#, c-format
+msgid "%s: Omitting"
+msgstr "%s: S'ometen"
+
+#: src/list.c:146
+#, c-format
+msgid "block %s: ** Block of NULs **\n"
+msgstr "bloc %s: ** Bloc de NULs **\n"
+
+#: src/list.c:172
+#, c-format
+msgid "block %s: ** End of File **\n"
+msgstr "bloc %s: ** Final del Fitxer **\n"
+
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
+#, c-format
+msgid "block %s: "
+msgstr "bloc %s: "
+
+#. TRANSLATORS: %s is type of the value (gid_t, uid_t,
+#. etc.)
+#: src/list.c:704
+#, c-format
+msgid "Blanks in header where numeric %s value expected"
+msgstr "Capçalera amb blancs on hi hauria d'haver un valor numèric %s"
+
+#. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
+#: src/list.c:759
+#, c-format
+msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
+msgstr ""
+"El valor octal de l'arxiu %.*s està fora del rang %s; s'assumeix el "
+"complement a dos"
+
+#. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
+#: src/list.c:770
+#, c-format
+msgid "Archive octal value %.*s is out of %s range"
+msgstr "El valor octal de l'arxiu %.*s està fora del rang %s"
+
+#: src/list.c:791
+msgid "Archive contains obsolescent base-64 headers"
+msgstr "L'arxiu conté capçaleres amb base 64 que estan esdevenint obsoletes"
+
+#: src/list.c:805
+#, c-format
+msgid "Archive signed base-64 string %s is out of %s range"
+msgstr "La cadena de signatura %s amb base 64 de l'arxiu està fora del rang %s"
+
+#: src/list.c:836
+#, c-format
+msgid "Archive base-256 value is out of %s range"
+msgstr "El valor amb base 256 de l'arxiu està fora del rang %s "
+
+#. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
+#: src/list.c:865
+#, c-format
+msgid "Archive contains %.*s where numeric %s value expected"
+msgstr "L'arxiu conté %.*s on hi hauria d'haver un valor numèric de tipus %s"
+
+#. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
+#: src/list.c:887
+#, c-format
+msgid "Archive value %s is out of %s range %s..%s"
+msgstr "El valor %s de l'arxiu està fora del rang %s %s..%s"
+
+#: src/list.c:1253
+#, c-format
+msgid " link to %s\n"
+msgstr " enllaç cap a %s\n"
+
+#: src/list.c:1261
+#, c-format
+msgid " unknown file type %s\n"
+msgstr " tipus de fitxer desconegut %s\n"
+
+#: src/list.c:1279
+#, c-format
+msgid "--Long Link--\n"
+msgstr "--Enllaç llarg--\n"
+
+#: src/list.c:1283
+#, c-format
+msgid "--Long Name--\n"
+msgstr "--Nom Llarg--\n"
+
+#: src/list.c:1287
+#, c-format
+msgid "--Volume Header--\n"
+msgstr "--Capçalera del volum--\n"
+
+#: src/list.c:1295
+#, c-format
+msgid "--Continued at byte %s--\n"
+msgstr "--Continua al byte %s--\n"
+
+#: src/list.c:1357
+msgid "Creating directory:"
+msgstr "Es crea el directori:"
+
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "No es pot canviar el directori de treball"
+
+#: src/misc.c:571
+#, c-format
+msgid "Renaming %s to %s\n"
+msgstr "Es canvia el nom %s per %s\n"
+
+#: src/misc.c:580 src/misc.c:599
+#, c-format
+msgid "%s: Cannot rename to %s"
+msgstr "%s: No es pot canviar el nom a %s"
+
+#: src/misc.c:604
+#, c-format
+msgid "Renaming %s back to %s\n"
+msgstr "Es torna a canviar el nom %s a %s\n"
+
+#: src/misc.c:851
+#, c-format
+msgid "%s: File removed before we read it"
+msgstr "%s: El fitxer s'ha esborrat abans de poder-lo llegir"
+
+#: src/misc.c:866
+#, c-format
+msgid "%s: Directory removed before we read it"
+msgstr "%s: El directori s'ha esborrat abans de poder-lo llegir"
+
+#: src/misc.c:887
+msgid "child process"
+msgstr "procés descendent"
+
+#: src/misc.c:896
+msgid "interprocess channel"
+msgstr "canal d'intercomunicació"
+
+#: src/names.c:594
+msgid "Pattern matching characters used in file names"
+msgstr ""
+"Caràcters de patró de coincidència que es fan servir en noms de fitxers"
+
+#: src/names.c:596
+msgid ""
+"Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
+"this warning"
+msgstr ""
+"Feu servir --wildcards per habilitar els patrons de coincidència, o --no-"
+"wildcars per eliminar aquest avís."
+
+#: src/names.c:614 src/names.c:630
+#, c-format
+msgid "%s: Not found in archive"
+msgstr "%s: No s'ha trobat a l'arxiu"
+
+#: src/names.c:615
+#, c-format
+msgid "%s: Required occurrence not found in archive"
+msgstr "%s: No s'ha trobat cap coincidència a l'arxiu"
+
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "L'etiqueta de l'arxiu no coincideix"
+
+#: src/names.c:953
+msgid ""
+"Using -C option inside file list is not allowed with --listed-incremental"
+msgstr ""
+"No podeu fer servir la opció -C als llistats de fitxer amb --listed-"
+"incremental"
+
+#: src/names.c:959
+msgid "Only one -C option is allowed with --listed-incremental"
+msgstr "Només podeu fer servit una opció -C amb --listed-incemental"
+
+#: src/tar.c:81
+#, c-format
+msgid "Options `-%s' and `-%s' both want standard input"
+msgstr "Ambdues opcions «-%s» i «-%s» necessiten la sortida estàndard"
+
+#: src/tar.c:158
+#, c-format
+msgid "%s: Invalid archive format"
+msgstr "%s: Format de fitxer invàlid"
+
+#: src/tar.c:182
+msgid "GNU features wanted on incompatible archive format"
+msgstr ""
+"El format de l'arxiu és incompatible perquè requereix característiques de GNU"
+
+#: src/tar.c:250
+#, c-format
+msgid ""
+"Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
+msgstr ""
+"Estil de citació desconegut «%s». Feu servir «%s --quoting-style=help» per "
+"obtenir-ne una llista."
+
+#: src/tar.c:348
+msgid ""
+"GNU `tar' saves many files together into a single tape or disk archive, and "
+"can restore individual files from the archive.\n"
+"\n"
+"Examples:\n"
+"  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.\n"
+"  tar -tvf archive.tar         # List all files in archive.tar verbosely.\n"
+"  tar -xf archive.tar          # Extract all files from archive.tar.\n"
+msgstr ""
+"GNU `tar' desa molts fitxers agrupats en un sol arxiu de cinta o de disc, i "
+"pot recuperar fitxers individuals de l'arxiu.\n"
+"\n"
+"Exemples:\n"
+"  tar -cf arxiu.tar foo bar  # Crea l'arxiu.tar dels fitxers foo i bar.\n"
+"  tar -tvf arxiu.tar         # Fa una llista detallada dels fitxers que hi "
+"ha a l'arxiu.tar.\n"
+"  tar -xf arxiu.tar          # Extreu tots els fitxers de l'arxiu.tar.\n"
+
+#: src/tar.c:357
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control may be set with --backup or VERSION_CONTROL, values "
+"are:\n"
+"\n"
+"  none, off       never make backups\n"
+"  t, numbered     make numbered backups\n"
+"  nil, existing   numbered if numbered backups exist, simple otherwise\n"
+"  never, simple   always make simple backups\n"
+msgstr ""
+"El sufix de les còpies de seguretat és «~», a no ser que s'especifiqui amb --"
+"suffix o SIMPLE_BACKUP_SUFFIX.\n"
+"El control de versions pot ser especificat amb --backup or VERSION_CONTROL, "
+"els valors possibles son:\n"
+"\n"
+"  none, off       no facis mai còpies de seguretat\n"
+"  t, numbered     fes còpies de seguretat numerades\n"
+"  nil, existing   numerades si existeixen còpies de seguretat numerades, si "
+"no simples\n"
+"  never, simple   fes sempre còpies de seguretat simples\n"
+
+#: src/tar.c:387
+msgid "Main operation mode:"
+msgstr "Mode d'operació principal:"
+
+#: src/tar.c:390
+msgid "list the contents of an archive"
+msgstr "Llista els continguts d'un arxiu"
+
+#: src/tar.c:392
+msgid "extract files from an archive"
+msgstr "extreu fitxers d'un arxiu"
+
+#: src/tar.c:395
+msgid "create a new archive"
+msgstr "crea un arxiu nou"
+
+#: src/tar.c:397
+msgid "find differences between archive and file system"
+msgstr "cerca diferències entre un arxiu i el sistema de fitxers"
+
+#: src/tar.c:400
+msgid "append files to the end of an archive"
+msgstr "afegeix fitxers al final d'un arxiu"
+
+#: src/tar.c:402
+msgid "only append files newer than copy in archive"
+msgstr "només afegeix els fitxers més nous que les còpies dins l'arxiu"
+
+#: src/tar.c:404
+msgid "append tar files to an archive"
+msgstr "afegeix fitxers tar a un arxiu"
+
+#: src/tar.c:407
+msgid "delete from the archive (not on mag tapes!)"
+msgstr "esborra de l'arxiu (excepte en cintes magnètiques!)"
+
+#: src/tar.c:409
+msgid "test the archive volume label and exit"
+msgstr "prova l'etiqueta de volum de l'arxiu i surt"
+
+#: src/tar.c:414
+msgid "Operation modifiers:"
+msgstr "Modificadors d'operació:"
+
+#: src/tar.c:417
+msgid "handle sparse files efficiently"
+msgstr "tracta fitxers dispersos de manera eficient"
+
+#: src/tar.c:418
+msgid "MAJOR[.MINOR]"
+msgstr "MAJOR[.MENOR]"
+
+#: src/tar.c:419
+msgid "set version of the sparse format to use (implies --sparse)"
+msgstr ""
+"estableix la versió del format de dispersió que cal fer servir (implica --"
+"sparse)"
+
+#: src/tar.c:421
+msgid "handle old GNU-format incremental backup"
+msgstr "tracta l'antic format incremental GNU de còpies de seguretat"
+
+#: src/tar.c:423
+msgid "handle new GNU-format incremental backup"
+msgstr "tracta el nou format de còpies de seguretat incrementals de GNU"
+
+#: src/tar.c:425
+msgid "dump level for created listed-incremental archive"
+msgstr "nivell de bolcat per l'arxiu llistat-incremental creat"
+
+#: src/tar.c:427
+msgid "do not exit with nonzero on unreadable files"
+msgstr ""
+"no surtis si l'estat és diferent de zero quan trobis fitxers il·legibles "
+
+#: src/tar.c:429
+msgid ""
+"process only the NUMBERth occurrence of each file in the archive; this "
+"option is valid only in conjunction with one of the subcommands --delete, --"
+"diff, --extract or --list and when a list of files is given either on the "
+"command line or via the -T option; NUMBER defaults to 1"
+msgstr ""
+"processa només la ENÈssima aparició de cada fitxer a l'arxiu; aquesta opció "
+"només és vàlid amb una de les següents subcomandes --delete, --diff, --"
+"extract o --list i quan es dona una llista de fitxers ja sigui a la línia de "
+"comandes com amb l'opció -T; ENA val 1 per defecte"
+
+#: src/tar.c:435
+msgid "archive is seekable"
+msgstr "l'arxiu pot buscar-se"
+
+#: src/tar.c:437
+msgid "archive is not seekable"
+msgstr "L'arxiu no pot buscar-se"
+
+#: src/tar.c:439
+msgid "do not check device numbers when creating incremental archives"
+msgstr "no comprovis el número de dispositiu quan creis arxius incrementals"
+
+#: src/tar.c:442
+msgid "check device numbers when creating incremental archives (default)"
+msgstr ""
+"comprova el número de dispositiu quan creis arxius incrementals (per defecte)"
+
+#: src/tar.c:448
+msgid "Overwrite control:"
+msgstr "Control de sobreescriptura:"
+
+#: src/tar.c:451
+msgid "attempt to verify the archive after writing it"
+msgstr "intenta verificar l'arxiu després d'escriure'l"
+
+#: src/tar.c:453
+msgid "remove files after adding them to the archive"
+msgstr "eliminar els fitxers després d'afegir-los a l'arxiu"
+
+#: src/tar.c:455
+msgid "don't replace existing files when extracting"
+msgstr "no reemplacis els fitxers existents quan els extreguis"
+
+#: src/tar.c:457
+msgid "don't replace existing files that are newer than their archive copies"
+msgstr ""
+"no reemplacis els fitxers existents que siguin més nous que les còpies de "
+"l'arxiu"
+
+#: src/tar.c:459
+msgid "overwrite existing files when extracting"
+msgstr "sobreescriu els fitxers existents quan els extreguis"
+
+#: src/tar.c:461
+msgid "remove each file prior to extracting over it"
+msgstr "elimina cada fitxer abans d'extreure-hi a sobre"
+
+#: src/tar.c:463
+msgid "empty hierarchies prior to extracting directory"
+msgstr "buida les jerarquies abans d'extreure el directori"
+
+#: src/tar.c:465
+msgid "preserve metadata of existing directories"
+msgstr "conserva les metadades dels directoris existents"
+
+#: src/tar.c:467
+msgid "overwrite metadata of existing directories when extracting (default)"
+msgstr ""
+"sobreescriu les metadades dels directoris existents quan s'extreguin (per "
+"defecte)"
+
+#: src/tar.c:473
+msgid "Select output stream:"
+msgstr "Selecciona la sortida del flux de dades:"
+
+#: src/tar.c:476
+msgid "extract files to standard output"
+msgstr "extreu els fitxers a la sortida estàndard"
+
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
+msgid "COMMAND"
+msgstr "COMANDA"
+
+#: src/tar.c:478
+msgid "pipe extracted files to another program"
+msgstr "condueix els fitxers extrets a un altre programa"
+
+#: src/tar.c:480
+msgid "ignore exit codes of children"
+msgstr "ignora els codis de sortida dels processos fill"
+
+#: src/tar.c:482
+msgid "treat non-zero exit codes of children as error"
+msgstr ""
+"tracta els codis de sortida dels processos fills diferents de zero com a "
+"error"
+
+#: src/tar.c:487
+msgid "Handling of file attributes:"
+msgstr "Gestió dels atributs del fitxer:"
+
+#: src/tar.c:490
+msgid "force NAME as owner for added files"
+msgstr "força NOM coma propietari dels fitxers afegits"
+
+#: src/tar.c:492
+msgid "force NAME as group for added files"
+msgstr "força NOM com a grup pels fitxers afegits"
+
+#: src/tar.c:493 src/tar.c:690
+msgid "DATE-OR-FILE"
+msgstr "DATA-O-FITXER"
+
+#: src/tar.c:494
+msgid "set mtime for added files from DATE-OR-FILE"
+msgstr "estableix mtime pels fitxers afegits des de DATA-O-FITXER"
+
+#: src/tar.c:495
+msgid "CHANGES"
+msgstr "CANVIS"
+
+#: src/tar.c:496
+msgid "force (symbolic) mode CHANGES for added files"
+msgstr "força CANVIS de mode (simbòlic) als fitxers que s'afegeixin"
+
+#: src/tar.c:498
+msgid "METHOD"
+msgstr "MÈTODE"
+
+#: src/tar.c:499
+msgid ""
+"preserve access times on dumped files, either by restoring the times after "
+"reading (METHOD='replace'; default) or by not setting the times in the first "
+"place (METHOD='system')"
+msgstr ""
+"conserva les hores d'accés dels fitxers bolcats, ja sigui restaurant les "
+"hores després de llegir-los (MÈTODE='replace'; per defecte) o no posant "
+"primer les hores(MÈTODE='system')"
+
+#: src/tar.c:503
+msgid "don't extract file modified time"
+msgstr "no extreguis la data de modificació dels fitxers"
+
+#: src/tar.c:505
+msgid ""
+"try extracting files with the same ownership as exists in the archive "
+"(default for superuser)"
+msgstr ""
+"intenta extreure els fitxers amb el mateix propietari que existeix a l'arxiu "
+"(per defecte pel superusuari)"
+
+#: src/tar.c:507
+msgid "extract files as yourself (default for ordinary users)"
+msgstr ""
+"extreu el fitxer com a tu mateix com a propietari (per defecte pels usuaris "
+"ordinaris"
+
+#: src/tar.c:509
+msgid "always use numbers for user/group names"
+msgstr "fes servir sempre números pels noms de usuari/grup"
+
+#: src/tar.c:511
+msgid "extract information about file permissions (default for superuser)"
+msgstr ""
+"extreu la informació dels permisos del fitxer (per defecte per al "
+"superusuari)"
+
+#: src/tar.c:515
+msgid ""
+"apply the user's umask when extracting permissions from the archive (default "
+"for ordinary users)"
+msgstr ""
+"fes servir els permisos especificats per l'usuari qua s'extreguin permisos "
+"de l'arxiu (per defecte per usuaris normals)"
+
+#: src/tar.c:517
+msgid "sort names to extract to match archive"
+msgstr "ordena els noms a extreure per que coincideixin amb els de l'arxiu"
+
+#: src/tar.c:520
+msgid "same as both -p and -s"
+msgstr "el mateix que per -p i -s"
+
+#: src/tar.c:522
+msgid ""
+"delay setting modification times and permissions of extracted directories "
+"until the end of extraction"
+msgstr ""
+"no modifiquis els temps i els permisos dels directoris extrets fins que "
+"s'acabi l'extracció"
+
+#: src/tar.c:525
+msgid "cancel the effect of --delay-directory-restore option"
+msgstr "cancel·la l'efecte de l'opció --delay-directory-restore"
+
+#: src/tar.c:530
+msgid "Device selection and switching:"
+msgstr "Selecció i canvi de dispositiu:"
+
+#: src/tar.c:532
+msgid "ARCHIVE"
+msgstr "ARXIU"
+
+#: src/tar.c:533
+msgid "use archive file or device ARCHIVE"
+msgstr "fes servir el fitxer o dispositiu ARXIU"
+
+#: src/tar.c:535
+msgid "archive file is local even if it has a colon"
+msgstr "l'arxiu és local encara que tingui dos punts"
+
+#: src/tar.c:537
+msgid "use given rmt COMMAND instead of rmt"
+msgstr "fes servir la COMANDA rmt en comtes de rmt"
+
+#: src/tar.c:539
+msgid "use remote COMMAND instead of rsh"
+msgstr "fes servir la COMANDA remota en comptes de rsh"
+
+#: src/tar.c:543
+msgid "specify drive and density"
+msgstr "especifica la unitat i la densitat"
+
+#: src/tar.c:557
+msgid "create/list/extract multi-volume archive"
+msgstr "crea/llista/extreu arxius de múltiples volums"
+
+#: src/tar.c:559
+msgid "change tape after writing NUMBER x 1024 bytes"
+msgstr "canvia la cinta després d'escriure NÚMERO x 1024 bytes"
+
+#: src/tar.c:561
+msgid "run script at end of each tape (implies -M)"
+msgstr "executa seqüència al final de cada cinta (implica -M)"
+
+#: src/tar.c:564
+msgid "use/update the volume number in FILE"
+msgstr "fes servir/actualitza el número de volum del FITXER"
+
+#: src/tar.c:569
+msgid "Device blocking:"
+msgstr "Blocs als dispositius:"
+
+#: src/tar.c:571
+msgid "BLOCKS"
+msgstr "BLOCS"
+
+#: src/tar.c:572
+msgid "BLOCKS x 512 bytes per record"
+msgstr "BLOCS x 512 bytes per registre"
+
+#: src/tar.c:574
+msgid "NUMBER of bytes per record, multiple of 512"
+msgstr "NÚMERO de bytes per registre, múltiple de 512"
+
+#: src/tar.c:576
+msgid "ignore zeroed blocks in archive (means EOF)"
+msgstr "ignora els blocs posats a zero de l'arxiu (volen dir fi del fitxer)"
+
+#: src/tar.c:578
+msgid "reblock as we read (for 4.2BSD pipes)"
+msgstr "refés els blocs mentre els llegeixes (per conductes de 4.2BSD)"
+
+#: src/tar.c:583
+msgid "Archive format selection:"
+msgstr "Selecció del format de l'arxiu: "
+
+#: src/tar.c:585 tests/genfile.c:153
+msgid "FORMAT"
+msgstr "FORMAT"
+
+#: src/tar.c:586
+msgid "create archive of the given format"
+msgstr "crea un arxiu del format especificat"
+
+#: src/tar.c:588
+msgid "FORMAT is one of the following:"
+msgstr "El FORMAT és un dels següents"
+
+#: src/tar.c:589
+msgid "old V7 tar format"
+msgstr "format tar de l'antiga versió 7"
+
+#: src/tar.c:592
+msgid "GNU format as per tar <= 1.12"
+msgstr "format GNU tar <= 1.12"
+
+#: src/tar.c:594
+msgid "GNU tar 1.13.x format"
+msgstr "format GNU tar 1.13.x"
+
+#: src/tar.c:596
+msgid "POSIX 1003.1-1988 (ustar) format"
+msgstr "format POSIX 1003.1-1988 (ustar)"
+
+#: src/tar.c:598
+msgid "POSIX 1003.1-2001 (pax) format"
+msgstr "format POSIX 1003.1-2001 (pax)"
+
+#: src/tar.c:599
+msgid "same as pax"
+msgstr "el mateix que pax"
+
+#: src/tar.c:602
+msgid "same as --format=v7"
+msgstr "el mateix que --format=v7"
+
+#: src/tar.c:605
+msgid "same as --format=posix"
+msgstr "el mateix que --format=posix"
+
+#: src/tar.c:606
+msgid "keyword[[:]=value][,keyword[[:]=value]]..."
+msgstr "paraula clau[[:]=valor][,paraula clau[[:]=valor]]..."
+
+#: src/tar.c:607
+msgid "control pax keywords"
+msgstr "controla les paraules clau de pax"
+
+#: src/tar.c:608
+msgid "TEXT"
+msgstr "TEXT"
+
+#: src/tar.c:609
+msgid ""
+"create archive with volume name TEXT; at list/extract time, use TEXT as a "
+"globbing pattern for volume name"
+msgstr ""
+"crea l'arxiu amb el nom de volum TEXT. Quan es llista/s'extreu, utilitza "
+"TEXT com a patró global de noms de volum"
+
+#: src/tar.c:614
+msgid "Compression options:"
+msgstr "Opcions de compressió:"
+
+#: src/tar.c:616
+msgid "use archive suffix to determine the compression program"
+msgstr "utilitza el sufix de l'arxiu per determinar el programa de compressió"
+
+#: src/tar.c:618
+msgid "do not use archive suffix to determine the compression program"
+msgstr ""
+"no fa servir el sufix de l'arxiu per determinar el programa de compressió"
+
+#: src/tar.c:620
+msgid "PROG"
+msgstr "PROGRAMA"
+
+#: src/tar.c:621
+msgid "filter through PROG (must accept -d)"
+msgstr "filtra mitjançant PROGRAMA (ha d'acceptar -d)"
+
+#: src/tar.c:637
+msgid "Local file selection:"
+msgstr "Selecció de fixter local:"
+
+#: src/tar.c:640
+msgid "add given FILE to the archive (useful if its name starts with a dash)"
+msgstr "afegeix el FITXER a l'arxiu (útil si el nom comença per un guió)"
+
+#: src/tar.c:641
+msgid "DIR"
+msgstr "DIRECTORI"
+
+#: src/tar.c:642
+msgid "change to directory DIR"
+msgstr "Canvia al directori DIRECTORI"
+
+#: src/tar.c:644
+msgid "get names to extract or create from FILE"
+msgstr "obté els noms que cal extreure u crear del FITXER"
+
+#: src/tar.c:646
+msgid "-T reads null-terminated names, disable -C"
+msgstr "-T llegeix els noms acabats en nul, desactivar-ho amb -C"
+
+#: src/tar.c:648
+msgid "disable the effect of the previous --null option"
+msgstr "deshabilita l'efecte del la opció --null prèvia"
+
+#: src/tar.c:650
+msgid "unquote filenames read with -T (default)"
+msgstr "treu les cometes dels noms dels fitxers llegits amb -T (per defecte)"
+
+#: src/tar.c:652
+msgid "do not unquote filenames read with -T"
+msgstr "no treguis les cometes dels noms dels fitxers llegits amb -T"
+
+#: src/tar.c:653 tests/genfile.c:136
+msgid "PATTERN"
+msgstr "PATRÓ"
+
+#: src/tar.c:654
+msgid "exclude files, given as a PATTERN"
+msgstr "exclou els fitxers que es donen com un PATRÓ"
+
+#: src/tar.c:656
+msgid "exclude patterns listed in FILE"
+msgstr "exclou els patrons que es llisten al FITXER"
+
+#: src/tar.c:658
+msgid ""
+"exclude contents of directories containing CACHEDIR.TAG, except for the tag "
+"file itself"
+msgstr ""
+"exclou el contingut dels directoris que continguin CACHEDIR.TAG, excepte el "
+"propi fitxer d'etiquetes"
+
+#: src/tar.c:661
+msgid "exclude everything under directories containing CACHEDIR.TAG"
+msgstr "exclou tot el que estigui als directoris que continguin CACHEDIR.TAG"
+
+#: src/tar.c:664
+msgid "exclude directories containing CACHEDIR.TAG"
+msgstr "exclou els directoris que continguin CACHEDIR.TAG "
+
+#: src/tar.c:666
+msgid "exclude contents of directories containing FILE, except for FILE itself"
+msgstr ""
+"exclou el contingut dels directoris que contenen el FITXER, excepte el "
+"FITXER mateix"
+
+#: src/tar.c:669
+msgid "exclude everything under directories containing FILE"
+msgstr "exclou tot el que hi hagi al directori que contingui el FITXER"
+
+#: src/tar.c:671
+msgid "exclude directories containing FILE"
+msgstr "exclou els directoris que continguin el FITXER"
+
+#: src/tar.c:673
+msgid "exclude version control system directories"
+msgstr "exclou els directoris del sistema de control de versions"
+
+#: src/tar.c:675
+msgid "exclude backup and lock files"
+msgstr "exclou els fitxers de còpia de seguretat i de blocat"
+
+#: src/tar.c:677
+msgid "avoid descending automatically in directories"
+msgstr "no baixa automàticament als directoris"
+
+#: src/tar.c:679
+msgid "stay in local file system when creating archive"
+msgstr "queda't al sistema de fitxers local quan creïs l'arxiu"
+
+#: src/tar.c:681
+msgid "recurse into directories (default)"
+msgstr "incloure els subdirectoris (per defecte)"
+
+#: src/tar.c:683
+msgid "don't strip leading `/'s from file names"
+msgstr "no treguis les primeres «/» dels noms dels fitxers"
+
+#: src/tar.c:685
+msgid "follow symlinks; archive and dump the files they point to"
+msgstr ""
+"segueix els enllaços simbòlics; arxiva i aboca els fitxers als quals apunten"
+
+#: src/tar.c:687
+msgid "follow hard links; archive and dump the files they refer to"
+msgstr ""
+"segueix els enllaços durs; arxiva i aboca els fitxers als quals es refereix"
+
+#: src/tar.c:688
+msgid "MEMBER-NAME"
+msgstr "NOM-DEL-MEMBRE"
+
+#: src/tar.c:689
+msgid "begin at member MEMBER-NAME in the archive"
+msgstr "comença al membre NOM-DEL MEMBRE de l'arxiu"
+
+#: src/tar.c:691
+msgid "only store files newer than DATE-OR-FILE"
+msgstr "desa només els fitxers més nous que DATA-O-FITXER"
+
+#: src/tar.c:693
+msgid "DATE"
+msgstr "DATA"
+
+#: src/tar.c:694
+msgid "compare date and time when data changed only"
+msgstr "compara la data i l'hora només quan les dades hagin canviat"
+
+#: src/tar.c:695
+msgid "CONTROL"
+msgstr "CONTROL"
+
+#: src/tar.c:696
+msgid "backup before removal, choose version CONTROL"
+msgstr ""
+"fes una còpia de seguretat abans d'esborrar, tria el CONTROL de versions"
+
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
+msgid "STRING"
+msgstr "CADENA"
+
+#: src/tar.c:698
+msgid ""
+"backup before removal, override usual suffix ('~' unless overridden by "
+"environment variable SIMPLE_BACKUP_SUFFIX)"
+msgstr ""
+"fa una còpia de seguretat abans d'esborrar, substitueix el sufix usual («~» "
+"si no s'ha definit la variable d'entorn SIMPLE_BACKUP_SUFFIX)"
+
+#: src/tar.c:703
+msgid "File name transformations:"
+msgstr "Transformacions del nom del fitxer:"
+
+#: src/tar.c:705
+msgid "strip NUMBER leading components from file names on extraction"
+msgstr ""
+"treu NÚMERO components de la capçalera dels noms dels fitxers quan extreu"
+
+#: src/tar.c:707
+msgid "EXPRESSION"
+msgstr "EXPRESSIÓ"
+
+#: src/tar.c:708
+msgid "use sed replace EXPRESSION to transform file names"
+msgstr ""
+"fes servir l'EXPRESSIÓ de substitució sed per transformar els noms dels "
+"fitxers"
+
+#: src/tar.c:714
+msgid "File name matching options (affect both exclude and include patterns):"
+msgstr ""
+"opcions de concordança de nom de fitxer (afecta tant als patrons de inclusió "
+"com als d'exclusió):"
+
+#: src/tar.c:717
+msgid "ignore case"
+msgstr "ignora diferències majúscules/minúscules"
+
+#: src/tar.c:719
+msgid "patterns match file name start"
+msgstr "comprova els patrons del començament del nom del fitxer"
+
+#: src/tar.c:721
+msgid "patterns match after any `/' (default for exclusion)"
+msgstr ""
+"comprova els patrons després de qualsevol «/» (per defecte a les exclusions) "
+
+#: src/tar.c:723
+msgid "case sensitive matching (default)"
+msgstr "comprova diferències majúscules/minúscules (per defecte)"
+
+#: src/tar.c:725
+msgid "use wildcards (default for exclusion)"
+msgstr "fa servir comodins (per defecte a les exclusions)"
+
+#: src/tar.c:727
+msgid "verbatim string matching"
+msgstr "concordància exacte a les cadenes"
+
+#: src/tar.c:729
+msgid "wildcards do not match `/'"
+msgstr "els comodins no han de concordar amb «/»"
+
+#: src/tar.c:731
+msgid "wildcards match `/' (default for exclusion)"
+msgstr "els comodins han de concordar amb «/» (per defecte a les exclusions)"
+
+#: src/tar.c:736
+msgid "Informative output:"
+msgstr "Sortida informativa:"
+
+#: src/tar.c:739
+msgid "verbosely list files processed"
+msgstr "llista els fitxers processats detalladament"
+
+#: src/tar.c:740
+msgid "KEYWORD"
+msgstr "PARAULA CLAU"
+
+#: src/tar.c:741
+msgid "warning control"
+msgstr "control d'avisos"
+
+#: src/tar.c:743
+msgid "display progress messages every NUMBERth record (default 10)"
+msgstr "mostra els missatges de progres cada NÚMERO registres (per defecte 10)"
+
+#: src/tar.c:745
+msgid "ACTION"
+msgstr "ACCIÓ"
+
+#: src/tar.c:746
+msgid "execute ACTION on each checkpoint"
+msgstr "executa ACCIÓ a cada punt de comprovació"
+
+#: src/tar.c:749
+msgid "print a message if not all links are dumped"
+msgstr "mostra un missatge si no s'aboquen tots els enllaços"
+
+#: src/tar.c:750
+msgid "SIGNAL"
+msgstr "SENYAL"
+
+#: src/tar.c:751
+msgid ""
+"print total bytes after processing the archive; with an argument - print "
+"total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
+"SIGQUIT, SIGINT, SIGUSR1 and SIGUSR2; the names without SIG prefix are also "
+"accepted"
+msgstr ""
+"mostra els bytes totals després de processar l'arxiu. Amb un argument - "
+"mostra els bytes totals quan es rep el SENYAL. Els senyals permesos són: "
+"SIGHUP, SIGQUIT, SIGINT, SIGUSR1 i SIGUSR2. També s'accepta els noms sense "
+"el prefix SIG"
+
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "mostra l'hora de modificació del fitxer en UTC"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "Mostra l'hora del fitxer amb alta precisió"
+
+#: src/tar.c:760
+msgid "send verbose output to FILE"
+msgstr "envia la sortida detallada al FITXER"
+
+#: src/tar.c:762
+msgid "show block number within archive with each message"
+msgstr "mostra el número de bloc de dins l'arxiu a cada missatge"
+
+#: src/tar.c:764
+msgid "ask for confirmation for every action"
+msgstr "demana la confirmació per cada acció"
+
+#: src/tar.c:767
+msgid "show tar defaults"
+msgstr "mostra els valors per defecte de tar"
+
+#: src/tar.c:769
+msgid ""
+"when listing or extracting, list each directory that does not match search "
+"criteria"
+msgstr ""
+"quan es llisti o s'extregui, llista tots els directoris que no es "
+"corresponguin amb el criteri de cerca"
+
+#: src/tar.c:771
+msgid "show file or archive names after transformation"
+msgstr "mostra el nom del fitxer o de l'arxiu després de la transformació"
+
+#: src/tar.c:774
+msgid "STYLE"
+msgstr "ESTIL"
+
+#: src/tar.c:775
+msgid "set name quoting style; see below for valid STYLE values"
+msgstr ""
+"estableix el nom de l'estil de citació; vegeu més avall una llista de valors "
+"vàlids per ESTIL"
+
+#: src/tar.c:777
+msgid "additionally quote characters from STRING"
+msgstr "més caràcters de cometes des de CADENA"
+
+#: src/tar.c:779
+msgid "disable quoting for characters from STRING"
+msgstr "deshabilita els caràcters de cometa de la CADENA"
+
+#: src/tar.c:784
+msgid "Compatibility options:"
+msgstr "Opcions de compatibilitat:"
+
+#: src/tar.c:787
+msgid ""
+"when creating, same as --old-archive; when extracting, same as --no-same-"
+"owner"
+msgstr ""
+"quan es crea, el mateix que --old-archive; quan s'extreu, el mateix que --no-"
+"same-owner"
+
+#: src/tar.c:792
+msgid "Other options:"
+msgstr "Altres opcions:"
+
+#: src/tar.c:795
+msgid "disable use of some potentially harmful options"
+msgstr "desactiva l'ús de certes opcions potencialment perjudicials"
+
+#: src/tar.c:930
+msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
+msgstr "No podeu especificar més d'un «-Acdtrux» o d'opció «--test-label»"
+
+#: src/tar.c:940
+msgid "Conflicting compression options"
+msgstr "Opcions de compressió conflictives"
+
+#: src/tar.c:996
+#, c-format
+msgid "Unknown signal name: %s"
+msgstr "Nom del senyal desconegut: %s"
+
+#: src/tar.c:1020
+msgid "Date sample file not found"
+msgstr "No s'ha trobat el fitxer de mostra de la data"
+
+#: src/tar.c:1028
+#, c-format
+msgid "Substituting %s for unknown date format %s"
+msgstr "S'està substituint %s pel format de data desconegut %s"
+
+#: src/tar.c:1057
+#, c-format
+msgid "Option %s: Treating date `%s' as %s"
+msgstr "Opció %s: S'està tractant la data «%s» com a %s"
+
+#: src/tar.c:1135
+#, c-format
+msgid "%s: file list already read"
+msgstr "%s: la llista de fitxers ja s'ha llegit"
+
+#: src/tar.c:1201
+#, c-format
+msgid "%s: file name read contains nul character"
+msgstr "%s: la lectura del nom del fixter conté un caràcter nul"
+
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
+msgid "filter the archive through %s"
+msgstr "filtra l'arxiu a mitjançant %s"
+
+#: src/tar.c:1296
+msgid "Valid arguments for the --quoting-style option are:"
+msgstr "Les opcions vàlides per la opció --quoting-style són:"
+
+#: src/tar.c:1300
+msgid ""
+"\n"
+"*This* tar defaults to:\n"
+msgstr ""
+"\n"
+"*Aquest* tar va per defecte en:\n"
+
+#: src/tar.c:1402
+msgid "Invalid blocking factor"
+msgstr "Factor de blocs invàlid"
+
+#: src/tar.c:1515
+msgid "Invalid tape length"
+msgstr "Longitud de la cinta invàlida"
+
+#: src/tar.c:1529
+msgid "Invalid incremental level value"
+msgstr "valor invàlid del nivell d'increment"
+
+#: src/tar.c:1575
+msgid "More than one threshold date"
+msgstr "Més d'una data del llindar"
+
+#: src/tar.c:1630 src/tar.c:1633
+msgid "Invalid sparse version value"
+msgstr "valor de la versió de la opció de dispersió invalid"
+
+#: src/tar.c:1718
+msgid "--atime-preserve='system' is not supported on this platform"
+msgstr "No es permet l'ús de --atime-preserve=«system» en aquesta plataforma"
+
+#: src/tar.c:1743
+msgid "--checkpoint value is not an integer"
+msgstr "El valor --checkpoint no és un enter"
+
+#: src/tar.c:1848
+msgid "Invalid group"
+msgstr "Grup invàlid"
+
+#: src/tar.c:1855
+msgid "Invalid mode given on option"
+msgstr "Mode invàlid donat a les opcions"
+
+#: src/tar.c:1912
+msgid "Invalid number"
+msgstr "Número invàlid"
+
+#: src/tar.c:1934
+msgid "Invalid owner"
+msgstr "Propietari invàlid"
+
+#: src/tar.c:1964
+msgid ""
+"The --preserve option is deprecated, use --preserve-permissions --preserve-"
+"order instead"
+msgstr ""
+"La opció --preserve es obsoleta, en comptes d'això feu servir --preserve-"
+"permissions --preserve-order"
+
+#: src/tar.c:1975
+msgid "Invalid record size"
+msgstr "Mida del registre invàlida"
+
+#: src/tar.c:1978
+#, c-format
+msgid "Record size must be a multiple of %d."
+msgstr "La mida del registre ha de ser múltiple de %d."
+
+#: src/tar.c:2019
+msgid "Invalid number of elements"
+msgstr "Nombre d'elements invàlid"
+
+#: src/tar.c:2039
+msgid "Only one --to-command option allowed"
+msgstr "Només es permet una opció --to-command"
+
+#: src/tar.c:2119
+#, c-format
+msgid "Malformed density argument: %s"
+msgstr "Argument de densitat mal format: %s"
+
+#: src/tar.c:2145
+#, c-format
+msgid "Unknown density: `%c'"
+msgstr "Densitat desconeguda: «%c»"
+
+#: src/tar.c:2162
+#, c-format
+msgid "Options `-[0-7][lmh]' not supported by *this* tar"
+msgstr "Opcions «-[0-7][lmh]» no suportades per *aquest* tar"
+
+#: src/tar.c:2175
+msgid "[FILE]..."
+msgstr "[FITXER]..."
+
+#: src/tar.c:2293
+#, c-format
+msgid "Old option `%c' requires an argument."
+msgstr "L'opció antiga «%c» requereix un argument."
+
+#: src/tar.c:2374
+msgid "--occurrence is meaningless without a file list"
+msgstr "--occurrence no te sentit sense una llista de fitxers"
+
+#: src/tar.c:2380
+msgid "--occurrence cannot be used in the requested operation mode"
+msgstr "--occurrence no es pot utilitzar en el mode d'operació que ha requerit"
+
+#: src/tar.c:2398
+msgid "Multiple archive files require `-M' option"
+msgstr "Per a múltiples arxius de fitxers es requereix l'opció «-M»"
+
+#: src/tar.c:2403
+msgid "Cannot combine --listed-incremental with --newer"
+msgstr "No es pot combinar --listed-incremental amb --newer"
+
+#: src/tar.c:2406
+msgid "--level is meaningless without --listed-incremental"
+msgstr "--level no té sentit sense --listed-incremental"
+
+#: src/tar.c:2423
+#, c-format
+msgid "%s: Volume label is too long (limit is %lu byte)"
+msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
+msgstr[0] "%s: l'etiqueta del volum és massa llarga (el limit és %lu byte)"
+msgstr[1] "%s: l'etiqueta del volum és massa llarga (el limit és %lu bytes)"
+
+#: src/tar.c:2436
+msgid "Cannot verify multi-volume archives"
+msgstr "No es poden verificar els arxius multi-volum"
+
+#: src/tar.c:2438
+msgid "Cannot verify compressed archives"
+msgstr "No es poden verificar els arxius comprimits"
+
+#: src/tar.c:2444
+msgid "Cannot use multi-volume compressed archives"
+msgstr "No es poden utilitzar arxius comprimits multi-volum"
+
+#: src/tar.c:2450
+msgid "Cannot concatenate compressed archives"
+msgstr "No es poden concatenar arxius comprimits"
+
+#: src/tar.c:2462
+msgid "--pax-option can be used only on POSIX archives"
+msgstr "--pax-option només es pot utilitzar en arxius POSIX"
+
+#: src/tar.c:2492
+msgid "Volume length cannot be less than record size"
+msgstr "La llargada del volum no pot ser inferior que la mida del registre"
+
+#: src/tar.c:2495
+msgid "--preserve-order is not compatible with --listed-incremental"
+msgstr "--preserve-order no és compatible amb --listed-incremental"
+
+#: src/tar.c:2506
+msgid "Cowardly refusing to create an empty archive"
+msgstr "S'està refusant covardament crear un arxiu buit"
+
+#: src/tar.c:2532
+msgid "Options `-Aru' are incompatible with `-f -'"
+msgstr "Les opcions «-Aru» son incompatibles amb «-f -»"
+
+#: src/tar.c:2621
+msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
+msgstr "Heu d'especificar una opció «-Acdtrux» o «--test-label»"
+
+#: src/tar.c:2675
+#, c-format
+msgid "Exiting with failure status due to previous errors"
+msgstr "Se surt amb estat de fallida degut a errors prèvis"
+
+#: src/update.c:86
+#, c-format
+msgid "%s: File shrank by %s byte"
+msgid_plural "%s: File shrank by %s bytes"
+msgstr[0] "%s: El fitxer s'encongeix %s byte"
+msgstr[1] "%s: El fitxer s'encongeix %s bytes"
+
+#: src/xheader.c:164
+#, c-format
+msgid "Keyword %s is unknown or not yet implemented"
+msgstr "La paraula clau %s és desconeguda o encara no s'ha implementat"
+
+#: src/xheader.c:174
+msgid "Time stamp is out of allowed range"
+msgstr "La marca horària està fora del rang permés"
+
+#: src/xheader.c:205
+#, c-format
+msgid "Pattern %s cannot be used"
+msgstr "No s'ha pogut utilitzar el patró %s "
+
+#: src/xheader.c:219
+#, c-format
+msgid "Keyword %s cannot be overridden"
+msgstr "No s'ha pogut sobreescriure la paraula clau %s"
+
+#: src/xheader.c:542
+msgid "Malformed extended header: missing length"
+msgstr "Capçalera estesa mal formada: falta la longitud"
+
+#: src/xheader.c:550
+msgid "Extended header length is out of allowed range"
+msgstr "Longitud de la capçalera estesa està fora del rang permès"
+
+#: src/xheader.c:557
+#, c-format
+msgid "Extended header length %*s is out of range"
+msgstr "La longitud de la capçalera estesa %*s està fora de rang"
+
+#: src/xheader.c:569
+msgid "Malformed extended header: missing blank after length"
+msgstr "Capçalera estesa mal formada: falta l'espai després de la longitud"
+
+#: src/xheader.c:577
+msgid "Malformed extended header: missing equal sign"
+msgstr "Capçalera estesa mal formada: falta el signe igual"
+
+#: src/xheader.c:583
+msgid "Malformed extended header: missing newline"
+msgstr "Capçalera estesa mal formada: falta el salt de línia"
+
+#: src/xheader.c:621
+#, c-format
+msgid "Ignoring unknown extended header keyword `%s'"
+msgstr "S'ignora la paraula clau desconeguda de la capçalera estesa «%s»"
+
+#: src/xheader.c:831
+#, c-format
+msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
+msgstr ""
+"La paraula clau/parella de valors generada és massa llarga (paraula clau=%s, "
+"longitud=%s)"
+
+#. TRANSLATORS: The first %s is the pax extended header keyword
+#. (atime, gid, etc.).
+#: src/xheader.c:863
+#, c-format
+msgid "Extended header %s=%s is out of range %s..%s"
+msgstr "La capçalera estesa %s=%s està fora del rang %s..%s"
+
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
+#, c-format
+msgid "Malformed extended header: invalid %s=%s"
+msgstr "Capçalera estesa mal formada: %s=%s invàlid"
+
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
+#, c-format
+msgid "Malformed extended header: excess %s=%s"
+msgstr "Capçalera estesa mal formada: excedeix %s=%s"
+
+#: src/xheader.c:1379
+#, c-format
+msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
+msgstr "Capçalera estesa mal formada: %s invàlid, delimitador %c inesperat"
+
+#: src/xheader.c:1389
+#, c-format
+msgid "Malformed extended header: invalid %s: odd number of values"
+msgstr "Capçalera estesa mal formada: %s invàlid: nombre de valors incorrecte"
+
+#: src/checkpoint.c:107
+#, c-format
+msgid "%s: not a valid timeout"
+msgstr "%s: no és un temps d'espera vàlid"
+
+#: src/checkpoint.c:112
+#, c-format
+msgid "%s: unknown checkpoint action"
+msgstr "%s: acció del punt de comprovació desconegut"
+
+#: src/checkpoint.c:132
+msgid "write"
+msgstr "escriu"
+
+#: src/checkpoint.c:132
+msgid "read"
+msgstr "llegeix"
+
+#. TRANSLATORS: This is a ``checkpoint of write operation'',
+#. *not* ``Writing a checkpoint''.
+#. E.g. in Spanish ``Punto de comprobaci@'on de escritura'',
+#. *not* ``Escribiendo un punto de comprobaci@'on''
+#: src/checkpoint.c:222
+#, c-format
+msgid "Write checkpoint %u"
+msgstr "Punt de comprovació d'escriptura %u"
+
+#. TRANSLATORS: This is a ``checkpoint of read operation'',
+#. *not* ``Reading a checkpoint''.
+#. E.g. in Spanish ``Punto de comprobaci@'on de lectura'',
+#. *not* ``Leyendo un punto de comprobaci@'on''
+#: src/checkpoint.c:228
+#, c-format
+msgid "Read checkpoint %u"
+msgstr "Punt de comprovació de lectura %u"
+
+#: tests/genfile.c:111
+msgid ""
+"genfile manipulates data files for GNU paxutils test suite.\n"
+"OPTIONS are:\n"
+msgstr ""
+"genfile manipula els fitxers de dades al conjunt de programes de proves GNU "
+"paxutils.\n"
+"Les OPCIONS són:\n"
+
+#: tests/genfile.c:127
+msgid "File creation options:"
+msgstr "Opcions de creació de fitxers:"
+
+#: tests/genfile.c:128 tests/genfile.c:139
+msgid "SIZE"
+msgstr "MIDA"
+
+#: tests/genfile.c:129
+msgid "Create file of the given SIZE"
+msgstr "Crea un fitxer de la MIDA indicada"
+
+#: tests/genfile.c:131
+msgid "Write to file NAME, instead of standard output"
+msgstr "Escriu al fitxer amb NOM, en comptes de la sortida estàndard"
+
+#: tests/genfile.c:133
+msgid "Read file names from FILE"
+msgstr "Llegeix els noms dels fitxers del FITXER"
+
+#: tests/genfile.c:135
+msgid "-T reads null-terminated names"
+msgstr "-T llegeix els noms acabats en nul"
+
+#: tests/genfile.c:137
+msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
+msgstr ""
+"Omple el fitxer amb el PATRÓ indicat. El PATRÓ és «per defecte» o «zeros»"
+
+#: tests/genfile.c:140
+msgid "Size of a block for sparse file"
+msgstr "Mida d'un bloc per fitxer dispers"
+
+#: tests/genfile.c:142
+msgid "Generate sparse file. Rest of the command line gives the file map."
+msgstr ""
+"Genera un fitxer dispers. La resta de la línia de comandes indica el mapa "
+"del fitxer"
+
+#: tests/genfile.c:144
+msgid "OFFSET"
+msgstr "ÒFSET"
+
+#: tests/genfile.c:145
+msgid "Seek to the given offset before writing data"
+msgstr "Cerca l'òfset donat abans d'escriure les dades"
+
+#: tests/genfile.c:151
+msgid "File statistics options:"
+msgstr "Opcions de les estadístiques dels fitxers:"
+
+#: tests/genfile.c:154
+msgid "Print contents of struct stat for each given file. Default FORMAT is: "
+msgstr ""
+"Mostra el contingut de l'estructura stat per cadascun dels fitxers indicats. "
+"El FORMAT per defecte és:"
+
+#: tests/genfile.c:161
+msgid "Synchronous execution options:"
+msgstr "Opcions d'execució sincrónica:"
+
+#: tests/genfile.c:163
+msgid "OPTION"
+msgstr "OPCIÓ"
+
+#: tests/genfile.c:164
+msgid ""
+"Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
+"--unlink"
+msgstr ""
+"Executa ARGS. Útil amb --checkpoint i i una entre --cut, --append, --touch, "
+"--unlink"
+
+#: tests/genfile.c:167
+msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
+msgstr ""
+"Realitzar les accions donades (mirar avall) quan s'arrivi al punt de "
+"comprovació NÚMERO"
+
+#: tests/genfile.c:170
+msgid "Set date for next --touch option"
+msgstr "Defineix la data per a la següent opció --touch"
+
+#: tests/genfile.c:173
+msgid "Display executed checkpoints and exit status of COMMAND"
+msgstr ""
+"Mostra els punts de comprovació executats i l'estat de sortida de la COMANDA"
+
+#: tests/genfile.c:178
+msgid ""
+"Synchronous execution actions. These are executed when checkpoint number "
+"given by --checkpoint option is reached."
+msgstr ""
+"Accions d'execució sincrónica. Aquestes son executades quan s'arriba al "
+"númerode punts de comprovació donat per --checkpoint"
+
+#: tests/genfile.c:181
+msgid ""
+"Truncate FILE to the size specified by previous --length option (or 0, if it "
+"is not given)"
+msgstr ""
+"Talla el FITXER a la mida especificada amb la opció --length prèvia (o 0, si "
+"no s'ha especificat)"
+
+#: tests/genfile.c:185
+msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
+msgstr ""
+"Afegeix MIDA bytes al FITXER. MIDA s'ha especificat amb la opció --length "
+"prèvia."
+
+#: tests/genfile.c:188
+msgid "Update the access and modification times of FILE"
+msgstr "Actualitza les hores d'accés i modificació del FITXER"
+
+#: tests/genfile.c:191
+msgid "Execute COMMAND"
+msgstr "Executa COMANDA"
+
+#: tests/genfile.c:194
+msgid "Unlink FILE"
+msgstr "Desfés l'enllaç del FITXER"
+
+#: tests/genfile.c:244
+#, c-format
+msgid "Invalid size: %s"
+msgstr "Mida invàlida: %s"
+
+#: tests/genfile.c:249
+#, c-format
+msgid "Number out of allowed range: %s"
+msgstr "Número fora de l'abast permés: %s"
+
+#: tests/genfile.c:252
+#, c-format
+msgid "Negative size: %s"
+msgstr "Mida negativa: %s"
+
+#: tests/genfile.c:265 tests/genfile.c:567
+#, c-format
+msgid "stat(%s) failed"
+msgstr "Ha fallat la petició d'stat(%s)"
+
+#: tests/genfile.c:268
+#, c-format
+msgid "requested file length %lu, actual %lu"
+msgstr "mida del fitxer sol·licitada %lu, actual %lu"
+
+#: tests/genfile.c:272
+#, c-format
+msgid "created file is not sparse"
+msgstr "el fitxer creat no és dispers"
+
+#: tests/genfile.c:361
+#, c-format
+msgid "Error parsing number near `%s'"
+msgstr "Error en analitzar el número prop de «%s»"
+
+#: tests/genfile.c:367
+#, c-format
+msgid "Unknown date format"
+msgstr "Format de data desconegut"
+
+#: tests/genfile.c:391
+msgid "[ARGS...]"
+msgstr "[ARGS...]"
+
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
+#, c-format
+msgid "cannot open `%s'"
+msgstr "no es pot obrir «%s»"
+
+#: tests/genfile.c:434
+msgid "cannot seek"
+msgstr "no es pot cercar"
+
+#: tests/genfile.c:451
+#, c-format
+msgid "file name contains null character"
+msgstr "el nom del fitxer conté un caràcter nul"
+
+#: tests/genfile.c:516
+#, c-format
+msgid "cannot generate sparse files on standard output, use --file option"
+msgstr ""
+"no es pot generar fitxers dispersos a la sortida estàndard, empreu la opció "
+"--file"
+
+#: tests/genfile.c:594
+#, c-format
+msgid "incorrect mask (near `%s')"
+msgstr "màscara incorrecta (prop de «%s»)"
+
+#: tests/genfile.c:600 tests/genfile.c:633
+#, c-format
+msgid "Unknown field `%s'"
+msgstr "Camp desconegut «%s»"
+
+#: tests/genfile.c:660
+#, c-format
+msgid "cannot set time on `%s'"
+msgstr "no es pot definir el temps de «%s»"
+
+#: tests/genfile.c:699
+#, c-format
+msgid "cannot unlink `%s'"
+msgstr "no es pot desfer l'enllaç «%s»"
+
+#: tests/genfile.c:825
+#, c-format
+msgid "Command exited successfully\n"
+msgstr "La comanda ha finalitzat amb èxit\n"
+
+#: tests/genfile.c:827
+#, c-format
+msgid "Command failed with status %d\n"
+msgstr "La comanda ha fallat amb estat %d\n"
+
+#: tests/genfile.c:831
+#, c-format
+msgid "Command terminated on signal %d\n"
+msgstr "La comanda ha finalitzat amb la senyal %d\n"
+
+#: tests/genfile.c:833
+#, c-format
+msgid "Command stopped on signal %d\n"
+msgstr "La comanda ha parat amb la senyal %d\n"
+
+#: tests/genfile.c:836
+#, c-format
+msgid "Command dumped core\n"
+msgstr "La comanda ha abocat l'ànima\n"
+
+#: tests/genfile.c:839
+#, c-format
+msgid "Command terminated\n"
+msgstr "Comanda finalitzada\n"
+
+#: tests/genfile.c:871
+#, c-format
+msgid "--stat requires file names"
+msgstr "--stat requereix noms de fitxers"
+
+#~ msgid "Cannot save working directory"
+#~ msgstr "No es pot desar al directori de treball"
index 37ef3696f88c8c960c0ffafd95a4a09c06105aa0..d971826821cda7f298975a0a3793c89d5fafacdd 100644 (file)
Binary files a/po/cs.gmo and b/po/cs.gmo differ
index c32f0a483babce0688d99ff6f50a38d009804020..7c0b796086e7b6cea14d3d364718da229e14c2b1 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
 # tape → páska (rod ženský, vzor žena; ne pásek)
 # seek offset → pozice posunu (pásky)
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-16 20:38+0100\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-12 20:02+0200\n"
 "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"Language: cs\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -97,7 +99,7 @@ msgstr ""
 "Chyby v programu oznamujte na adrese %s (anglicky), připomínky k překladu na "
 "adrese <translation-team-cs@lists.sourceforge.net> (česky).\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Neznámá systémová chyba"
 
@@ -110,8 +112,8 @@ msgid "give a short usage message"
 msgstr "vypíše stručný návod na použití"
 
 # JMÉNO jako v příslušné položce nápovědy
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "JMÉNO"
 
@@ -149,56 +151,61 @@ msgstr "(CHYBA PROGRAMU) Přepínač by měl být znám!?"
 msgid "write error"
 msgstr "chyba zápisu"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: přepínač „%s“ není jednoznačný\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: přepínač „--%s“ musí být zadán bez argumentu\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: přepínač „%c%s“ musí být zadán bez argumentu\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: přepínač „%s“ vyžaduje argument\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: přepínač „--%s“ vyžaduje argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: nerozpoznaný přepínač „--%s“\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: nerozpoznaný přepínač „%c%s“\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: neplatný přepínač -- „%c“\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: přepínač vyžaduje argument -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: přepínač „-W %s“ není jednoznačný\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: přepínač „-W %s“ musí být zadán bez argumentu\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: přepínač „-W %s“ vyžaduje argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "paměť vyčerpána"
@@ -550,144 +557,144 @@ msgstr "stdout"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "K %s se nelze připojit: selhal překlad"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Vzdálený shell není možné spustit"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Směr posunu je mimo rozsah"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Chybný směr posunu"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Neplatná pozice posunu"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Pozice posunu je je mimo rozsah"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Neplatný počet bajtů"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "Počet bajtů je mimo rozsah"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "Předčasný konec souboru"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Neplatní kód operace"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "Operace není podporována"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Neočekávané argumenty"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr "Ovládá páskovou jednotku přijímaje příkazy ze vzdáleného procesu"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "ČÍSLO"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "nastaví úroveň ladění"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "SOUBOR"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "nastaví název souboru pro výstup ladění"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "„%s“ nelze otevřít"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "příliš mnoho argumentů"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Neznámý příkaz"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Toto pravděpodobně není tar archiv"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Celkem zapsáno bajtů"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Celkem přečteno bajtů"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Celkem smazáno bajtů: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(roura)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Chybná hodnota pro velikost záznamu"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Název archivu nebyl zadán"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Stdin/Stdout archiv nelze ověřit"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Archiv je komprimován. Použijte přepínač %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Komprimovaný archiv nelze aktualizovat"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Páska na začátku, končím"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Příliš mnoho chyb, končím"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
@@ -695,7 +702,7 @@ msgstr[0] "Velikost záznamu = %'lu blok"
 msgstr[1] "Velikost záznamu = %'lu bloky"
 msgstr[2] "Velikost záznamu = %'lu bloků"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
@@ -703,37 +710,37 @@ msgstr[0] "Nezarovnaný blok (%'lu bajt) v archivu"
 msgstr[1] "Nezarovnaný blok (%'lu bajty) v archivu"
 msgstr[2] "Nezarovnaný blok (%'lu bajtů) v archivu"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "V archivu se nelze vrátit, bez -i může být nečitelný"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek se nezastavil na hranici záznamu"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: obsahuje neplatné číslo svazku"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "U čísla svazku nastalo přetečení"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Připravte svazek #%d pro archiv %s a stiskněte return:"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Místo uživatelské odpovědi byl zadán konec souboru"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "VAROVÁNÍ: Archiv je nekompletní"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -744,65 +751,65 @@ msgstr ""
 " q                   Ukončit program tar\n"
 " y nebo odřádkování  Pokračovat v operaci\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !                   Vytvořit podshell\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?                   Vypsat tuto nápovědu\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Není nový svazek; končím.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Název souboru nebyl zadán. Zkuste to znovu.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Neplatný vstup. Nápovědu obdržíte napsáním „?“ (otazníku).\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "příkaz %s selhal"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s možná pokračuje na tomto svazku: hlavička obsahuje zkrácený název"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s nepokračuje na tomto svazku"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s je špatné délky (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Tento svazek není je mimo pořadí (%s − %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Pro vyhodnocení vzorku %s musí být archiv pojmenován"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Svazek %s neodpovídá vzorku %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -810,7 +817,7 @@ msgstr ""
 "%s: název souboru je příliš dlouhý, aby byl uložen do vícesvazkové hlavičky "
 "GNU, bude zkrácen"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "zápis neskončil na konci hranice bloku"
 
@@ -822,20 +829,20 @@ msgstr[0] "Bylo možné načíst pouze %'lu z %'lu bajtu"
 msgstr[1] "Bylo možné načíst pouze %'lu z %'lu bajtů"
 msgstr[2] "Bylo možné načíst pouze %'lu z %'lu bajtů"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Obsahy se liší"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Neočekávaný konec archivu"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Typ souboru se liší"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Práva se liší"
 
@@ -851,42 +858,42 @@ msgstr "GID se liší"
 msgid "Mod time differs"
 msgstr "Čas poslední modifikace se liší"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Velikost se liší"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Není odkazem na %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symbolický odkaz se liší"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Číslo zařízení se liší"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Ověřuji "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Neznámý typ souboru „%c“, porovnáván jako normální soubor"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Archiv obsahuje názvy souborů, kterým byly odstraněny předpony."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Při kontrole může selhat nalezení původních souborů."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
@@ -894,46 +901,46 @@ msgstr[0] "SELHÁNÍ KONTROLY: zjištěna %d chybná hlavička"
 msgstr[1] "SELHÁNÍ KONTROLY: zjištěny %d chybné hlavičky"
 msgstr[2] "SELHÁNÍ KONTROLY: zjištěno %d chybných hlaviček"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Osiřelý nulový blok na pozici %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: obsahuje značku keše adresáře %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "hodnota %s typu %s je mimo rozsah %s..%s; nahrazuji za %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "hodnota %s typu %s je mimo rozsah %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Generuji záporné osmičkové hlavičky"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: název souboru je příliš dlouhý (max. %d); nezpracován"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: název souboru je příliš dlouhý (nelze jej rozdělit); nezpracován"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: název odkazu je příliš dlouhý; nezpracován"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -941,55 +948,55 @@ msgstr[0] "%s: Soubor je kratší o %s bajt; Doplňuji nulami."
 msgstr[1] "%s: Soubor je kratší o %s bajty; Doplňuji nulami."
 msgstr[2] "%s: Soubor je kratší o %s bajtů; Doplňuji nulami."
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: soubor je na jiném souborovém systému; nearchivován"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "obsah nezpracován"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Neznámý typ souboru; soubor ignorován"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "Chybí odkazy na %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: soubor není změněn; neaktualizován"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: soubor je archiv; nearchivován"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "adresář nezpracován"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: soubor byl během čtení změněn"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: soket ignorován"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: dveře ignorovány"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Přeskakuji na další hlavičku"
 
@@ -997,74 +1004,74 @@ msgstr "Přeskakuji na další hlavičku"
 msgid "Deleting non-header from archive"
 msgstr "Z archivu je mazáno to, co není hlavička"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: nemožně stará časová značka %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: časová značka %s je %s s v budoucnosti"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Neočekávaná inkonzistence, při vytváření adresáře"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Adresář byl přejmenován dříve, než bylo možné získat jeho stav"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Souvisle uložené soubory rozbaluji jako obyčejné soubory"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Zkouším rozbalit symbolické odkazy jako pevné odkazy"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Nelze rozbalit – soubor je pokračováním jiného svazku"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Neočekávaná hlavička dlouhého názvu"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Neznámý typ souboru „%c“, rozbalen jako normální soubor"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Současný soubor %s je novější nebo stejně starý"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Tento soubor nebylo možné zálohovat"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s nelze přejmenovat na %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Adresář byl přejmenován z %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Adresář byl přejmenován"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Adresář je nový"
@@ -1174,179 +1181,181 @@ msgstr "%s: Mažu %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Nelze smazat"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Vynechávám"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok NUL **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Konec souboru **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Mezery v hlavičce na místě, kde je očekávána číselná hodnota typu %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 "Osmičková hodnota %.*s typu %s je mimo rozsah; přiřazuji dvojkový complement"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Osmičková hodnota %.*s typu %s je mimo rozsah"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Archiv obsahuje zastaralé base-64 hlavičky"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Base-64 řetězec %s je mimo rozsah typu %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Hodnota base-256 je mimo rozsah typu %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Archiv obsahuje %.*s tam, kde je očekávána číselná hodnota typu %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Hodnota %s typu %s je mimo rozsah %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " odkaz na %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " neznámý souborový typ %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Dlouhý odkaz--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Dlouhý název--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Hlavička svazku--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Pokračováno od %s bajtu--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Vytvářím adresář:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Pracovní adresář nelze změnit"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Přejmenovávám %s na %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: nelze přejmenovat na %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Přejmenovávám %s zpět na %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Pracovní adresář nelze uchovat"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Pracovní adresář nelze změnit"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Soubor smazán dříve než mohl být přečten"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Adresář smazán dříve než mohl být přečten"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "potomek"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "meziprocesový kanál"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "V názvech souborů se nachází žolíkové znaky. Prosím,"
+msgstr "V názvech souborů se nachází žolíkové znaky"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "porovnávání proti žolíkových znaků zapněte pomocí --wildcards,"
+msgstr ""
+"Porovnávání proti žolíkových znaků zapněte pomocí --wildcards, nebo varování "
+"potlačte prostřednictvím --no-wildcards"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: V archivu nenalezen"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Požadovaný výskyt nebyl v archivu nalezen"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Název archivu se neodpovídá"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "Použití přepínače -C uvnitř seznamu souborů není spolu s --listed-"
 "incremental dovoleno"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr "S --listed-incremental je dovelen pouze jediný přepínač -C"
+msgstr "S --listed-incremental je dovolen pouze jediný přepínač -C"
 
 #: src/tar.c:81
 #, c-format
@@ -1370,7 +1379,7 @@ msgstr ""
 "Neznámý styl citování „%s“. Seznam stylů lze získat příkazem „%s --quoting-"
 "style=help“."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1389,7 +1398,7 @@ msgstr ""
 "tar.\n"
 "  tar -xf archiv.tar           # Rozbalí všechny soubory z archiv.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1411,79 +1420,79 @@ msgstr ""
 "                  existují, jinak tvoří jednoduché\n"
 "  never, simple   tvoří vždy jednoduché záložní kopie souborů\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Hlavní operační režim:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "vypíše obsah archivu"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "vybalí soubory z archivu"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "vytvoří nový archiv"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "hledá rozdíly mezi archivem a systémem souborů"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "připojí soubory na konec archivu"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "připojí jen takové soubory, které jsou novější nežli kopie v archivu"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "připojí k archivu tarové soubory"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "smaže z archivu (ne na magnetických páskách!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "otestuje jmenovku archivního svazku a skončí"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Operační modifikátory:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "zachází s řídkými soubory efektivně"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "HLAVNÍ[.VEDLEJŠÍ]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "nastaví verzi řídkého formátu (implikuje --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "zpracuje přírůstkové zálohy starého formátu GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "zpracuje přírůstkové zálohy nového formátu GNU"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "úroveň výpisu pro vytvářený archiv s přírůstkovým seznamem"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "neskoční nenulovým kódem při nečitelných souborech"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1495,121 +1504,121 @@ msgstr ""
 "--list a jen když je zadán seznam souborů na příkazovém řádku nebo přes "
 "přepínač -T; implicitní ČÍSLO je 1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "v archivu se lze posunovat"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "v archivu se lze posunovat"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "při vytváření přírůstkových archivů se nekontrolují čísla zařízení"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "při vytváření přírůstkových archivů se kontrolují čísla zařízení (implicitní)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Ovládání přepisování:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "pokusí se zkontrolovat archiv po té, co bude zapsán"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "odstraní soubory po té, co budou přidány do archivu"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "při rozbalovaní nenahrazuje existující soubory"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "nenahrazuje existující soubory, které jsou novější než jejich archivní kopie"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "při rozbalování existující soubory přepisuje"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "před vybalením každého souboru jej odstraní"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "před vybalením adresáře vytvoří prázdnou hierarchii"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "zachovává metadata existujících adresářů"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "při rozbalování přepisuje metadata existujících adresářů (implicitní)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Výběr výstupního proudu:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "soubory vybaluje na standardní výstup"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "PŘÍKAZ"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "vybalené soubory pošle rourou jinému programu"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "ignoruje návratový kód potomků"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "nenulový návratový kód potomků považuje za chybu"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Zacházení s atributy souborů:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "vynutí JMÉNO jako vlastníka vkládaných souborů"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "vynutí JMÉNO jako skupinu vkládaných souborů"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATUM_NEBO_SOUBOR"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "nastaví čas změny obsahu vkládaných souborů podle DATA_NEBO_SOUBORU"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ZMĚNY"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "vynutí (symbolický) mód ZMĚN (přístupová práva) vkládaným souborům"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METODA"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1619,11 +1628,11 @@ msgstr ""
 "(METODA=„REPLACE“; implicitní), nebo nenastavením časů v prvním pořadí "
 "(METODA=„system“)"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "nevybaluje čas změny obsahu souboru"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1631,19 +1640,19 @@ msgstr ""
 "pokusí se vybalit soubory se stejným vlastníkem jako je uveden v archivu "
 "(výchozí pro superuživatele)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "rozbaluje soubory pod vaší identitou (výchozí pro běžného uživatele)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "pro jména uživatel/skupin vždy použije čísla"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "vybaluje informace o právech souborů (implicitní pro superuživatele)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1651,15 +1660,15 @@ msgstr ""
 "při vybalování práv z archivu použije uživatelovu umask (implicitní pro "
 "běžné uživatele)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "při rozbalování seřadí názvy tak, aby odpovídaly pořadí v archivu"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "stejné jako -p -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1667,139 +1676,139 @@ msgstr ""
 "pozdrží nastavení časů modifikace a práv rozbalovaných adresářů až do "
 "dokončení rozbalování"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "zruší účinek přepínače --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Výběr a přepínání zařízení:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "pro archiv požije soubor zařízení ARCHIV"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "soubor archivu je místní, i když obsahuje dvojtečku"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "namísto příkazu rmt použije PŘÍKAZ"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "namísto rsh použije PŘÍKAZ"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "určuje mechaniku a hustotu"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "vytvoří/vypíše/rozbalí vícesvazkový archiv"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "po zapsaní ČÍSLO × 1024 bajtů vymění pásku"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "na konci každé pásky spustí skript (implikuje -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "použije/aktualizuje číslo svazku v SOUBORU"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Bloky zařízení:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKY"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOKŮ × 512 bajtů na záznam"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "ČÍSLO bajtů na záznam, násobek 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "v archivu ignoruje vynulované bloky (znamená EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "předělat bloky v průběhu čtení (pro roury na BSD 4.2)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Výběr formátu archivu:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMÁT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "vytvoří archiv daného formátu"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMÁT je jeden z následujících:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "starý formát taru V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "formát taru GNU <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "formát taru GNU 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "formát POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "formát POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "stejné jako pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "stejné jako --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "stejné jako --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "klíčové_slovo[[:]=hodnota][,klíčové_slovo[[:]=hodnota]]…"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "řídicí klíčová slova paxu"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXT"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1807,77 +1816,77 @@ msgstr ""
 "vytvoří archiv s názvem svazku TEXT; při výpisu/rozbalení použije TEXT jako "
 "vzor se zástupnými symboly pro název svazku"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Přepínače komprese:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "kompresní program určí podle přípony archivu"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "kompresní program neurčí podle přípony archivu"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROGRAM"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "archiv protáhne PROGRAMEM (musí znát -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Výběr místního souboru:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "zadaný SOUBOR přidá do archivu (užitečné, začíná-li jeho název spojovníkem)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "ADRESÁŘ"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "změní adresář na ADRESÁŘ"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "seznam jmen souborů na rozbalení nebo zabalení získá ze SOUBORU"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T čte názvy zakončené nulovým znakem, vypne -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "zruší účinek předchozího přepínače --null"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "odčiní citování (escapování) názvů souboru načtených přes -T (implicitní)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "nezruší citování (escapování) názvů souboru načtených přes -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "VZOR"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "vynechá soubory, které odpovídají VZORU"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "vynechá soubory vyjmenované v SOUBORU"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1885,95 +1894,95 @@ msgstr ""
 "vynechá obsah adresářů obsahujících CACHEADR.ZNAČKA, kromě souboru značky "
 "samotného"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "vynechá vše pod adresáři obsahujícími CACHEADR.ZNAČKA"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "vynechá adresáře obsahující CACHEADR.ZNAČKA"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "vynechá obsah adresářů obsahujících SOUBOR, vyjma SOUBORU samotného"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "vynechá vše pod adresáři obsahujícími SOUBOR"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "vynechá adresáře obsahující SOUBOR"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "vynechá adresáře systému správy verzí"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "vynechá soubory záloh a zámků"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "zabrání automatickému sestupu do adresářů"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "při tvorbě archivu se zdrží v místním systému souborů"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "sestupuje rekurzivně do adresářů (implicitní)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "neodstraní z názvů souborů úvodní „/“"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "následuje symbolické odkazy; archivuje a vybaluje soubory, na které je "
 "odkazováno"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "následuje pevné odkazy; archivuje a vybaluje soubory, na které je odkazováno"
 
 # část cesty (adresář)
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "SLOŽKA_NÁZVU"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "začne v archivu na složce SLOŽKA_NÁZVU"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "ukládá jen soubory novější než DATUM_NEBO_SOUBOR"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATUM"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "při změně dat porovná datum i čas"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "STRATEGIE"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "před odstraněním vytvoří záložní kopii za použití STRATEGIE"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "ŘETĚZEC"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1981,97 +1990,97 @@ msgstr ""
 "před odstraněním vytvoří záložní kopii, potlačí obvyklou příponu („~“, není-"
 "li uvedeno jinak v proměnné prostředí SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Transformace názvů souborů:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "při rozbalování odřízne ČÍSLO úvodních složek z názvů souborů"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "VÝRAZ"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "názvy souborů transformuje pomocí nahrazovacího VÝRAZU sedu"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Přepínače řídicí výběr souborů podle názvu (ovlivňuje vzory jak pro "
 "vyloučení, tak pro zahrnutí)"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "ignoruje velikost písmen"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "vzory se testují název souboru od začátku"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "vzory se testují po každém „/“ (implicitní u vyloučení)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "testování je citlivé na velikost (implicitní)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "použije žolíkové znaky (implicitní u vyloučení)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "testuje se přesný řetězec"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "žolíkové znaky nezahrnují „/“"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "žolíkové znaky zahrnují „/“ (implicitní u vyloučení)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informativní výstup:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "vypisuje zpracovávané soubory"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "KLÍČOVÉ_SLOVO"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "řídí varování"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "zobrazuje zprávy o postupu každých ČÍSLO. záznam (implicitně 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "AKCE"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "v každém kontrolním bodu vykoná AKCI"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "hlásí, že nebyly zpracovány všechny odkazy"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNÁL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2082,27 +2091,31 @@ msgstr ""
 "hlášení, až bude doručen SIGNÁL; Povolené signály jsou SIGHUP, SIGQUIT, "
 "SIGINT, SIGUSR1 a SIGUSR2; názvy bez předpony SIG jsou rovněž přípustné"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "časy změn obsahu souborů vypisuje v UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "časy souborů vypisuje v plném znění"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "informativní výstup pošle do SOUBORU"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "každou zprávu opatří číslem bloku uvnitř archivu"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "na každou akcí žádá potvrzení"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "zobrazí implicitní argumenty taru"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2110,31 +2123,31 @@ msgstr ""
 "při vypisování nebo rozbalování zobrazí každý adresář, který neodpovídá "
 "vyhledávacím podmínkám"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "zobrazuje názvy souborů a archivů po transformaci"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STYL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "nastaví styl citování názvů; platné hodnoty STYLŮ nalezte níže"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "cituje navíc znaky z ŘETĚZCE"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "zakáže citování znaků z ŘETĚZCE"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Přepínače pro kompatibilitu"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2142,63 +2155,63 @@ msgstr ""
 "při vytváření archivu má stejný význam jako --old-archive, při rozbalování "
 "jako --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Další přepínače:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "zakáže použití některých potenciálně nebezpečných přepínačů"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 "Nemůže být zadán více jak jeden přepínač z „-Acdtrux“ nebo „--test-label“"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Odporující si kompresní přepínače"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Neznámý název signálu: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Soubor, ze kterého se má vzít datum a čas, nebyl nalezen"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Datum neznámého formátu %2$s nahrazuji %1$s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Přepínač %s: S datem „%s“ bude zacházeno jako s %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: seznam souborů již načten"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: načtený název souboru obsahuje nulový znak"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "archiv protáhne skrze filtr %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Pro přepínač --quoting-style jsou platné argumenty:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2206,51 +2219,51 @@ msgstr ""
 "\n"
 "Implicitní přepínače *tohoto* taru:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Neplatný počet bajtů na záznam"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Neplatná délka pásky"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Chybná hodnota úrovně přírůstku"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Více než jedeno počáteční datum"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Neplatná hodnota verze řídkého formátu"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' není na této platformě podporován"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "hodnota --checkpoint není celé číslo"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Neplatná skupina"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Zadána chybná práva"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Neplatné číslo"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Neplatný vlastník"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2258,68 +2271,68 @@ msgstr ""
 "Přepínač --preserve je zastaralý, místo něj používejte --preserve-"
 "permissions --preserve-order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Chybná velikost záznamu"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Velikost záznamu musí být násobek %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Neplatný počet prvků"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Povolen je jen jeden přepínač --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Neplatný argument hustoty: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Neznámá hustota: „%c“"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Přepínače „-[0-7][lmh]“ nejsou *tímto* tarem podporovány"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[SOUBOR]…"
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Přepínač „%c“ vyžaduje argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "bez seznamu souborů nemá --occurrence smysl"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence nelze v požadovaném režimu operace použít"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Více archivačních souborů vyžaduje přepínač „-M“"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental a --newer nelze kombinovat"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--level bez --listed-incremental postrádá smysl"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2327,47 +2340,47 @@ msgstr[0] "%s: Název svazku je příliš dlouhý (limit je %'lu bajt)"
 msgstr[1] "%s: Název svazku je příliš dlouhý (limit je %'lu bajty)"
 msgstr[2] "%s: Název svazku je příliš dlouhý (limit je %'lu bajtů)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Vícesvazkový archiv není možné ověřit"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Komprimovaný archiv nelze ověřit"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Vícesvazkový komprimovaný archiv nelze vytvořit"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Komprimované archivy nelze zřetězit"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "Přepínač --pax-option lze použít jen na posixových archivech"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Délka svazku nemůže být kratší než délka záznamu"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order není slučitelný s --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Vytvoření prázdného archivu odmítnuto."
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Přepínače „-Aru“ jsou neslučitelné s přepínačem „-f -“"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Musíte zadat jeden z přepínačů „-Acdtrux“ nebo „--test-label“"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Končí se chybovým kódem, protože byly zaznamenány chyby"
@@ -2380,85 +2393,85 @@ msgstr[0] "%s: Soubor zkrácen o %s bajt"
 msgstr[1] "%s: Soubor zkrácen o %s bajty"
 msgstr[2] "%s: Soubor zkrácen o %s bajtů"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Klíčové slovo %s není známo nebo ještě nebylo implementováno"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Časový údaj je mimo povolený rozsah"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Vzor %s nelze použít"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Klíčové slovo %s nelze přebít"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Chybná rozšířená hlavička: chybí délka"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Délka rozšířené hlavičky je mimo povolený rozsah"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Délka rozšířené hlavičky %*s je mimo rozsah"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Chybná rozšířená hlavička: po délce chybí bílé místo"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Chybná rozšířená hlavička: chybí znak rovná se"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Chybná rozšířená hlavička: chybí odřádkování"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Ignoruje se neznámé klíčové slovo „%s“ rozšířené hlavičky"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
-"Utvořená dvojice klíčové slovo / hodnota je příliš dlouhá (klíčové slovo = %"
-"s, délka %s)"
+"Utvořená dvojice klíčové slovo / hodnota je příliš dlouhá (klíčové slovo = "
+"%s, délka %s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "%s=%s v rozšířené hlavičce je mimo rozsah %s–%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Chybná rozšířená hlavička: %s=%s není platné"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Chybná rozšířená hlavička: nadbytečná %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Chybná rozšířená hlavička: neplatný %s: neočekávaný oddělovač %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Chybná rozšířená hlavička: neplatný %s: lichý počet hodnot"
@@ -2499,7 +2512,7 @@ msgstr "Kontrolní bod zápisu %u"
 msgid "Read checkpoint %u"
 msgstr "Kontrolní bod čtení %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2507,69 +2520,69 @@ msgstr ""
 "genfile pracuje s datovými soubory testovacího balíku GNU paxutils.\n"
 "PŘEPÍNAČE jsou:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Přepínače tvorby souboru:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "VELIKOST"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Vytvoří soubor zadané VELIKOSTI"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Místo na standardní výstup píše do souboru JMÉNO"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Názvy souborů čte ze SOUBORU"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T čte názvy zakončené nulovými znaky"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Vyplní soubor zadaným VZOREM. VZOR je „default“ (výchozí) nebo „zeros“ (nuly)"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Velikost bloku pro řídké soubory"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Vytvoří řídký soubor. Zbytek příkazové řádku definuje mapu souboru."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "POZICE"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Před zápisem dat se přesune na zadanou POZICI"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Přepínače statistiky souboru:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "U každého zadaného souboru vypíše obsah struktury stat. Implicitní FORMÁT je:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Přepínače synchronního vykonávání:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "PŘEPÍNAČ"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2577,19 +2590,19 @@ msgstr ""
 "Provede ARGUMENTY. Užitečné s --checkpoint a jedním z --cut, --append, --"
 "touch, --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "Provede zadanou akci (vizte níže) při dosažení kontrolního bodu ČÍSLO"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Nastaví datum pro následující přepínač --touch"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Zobrazuje prováděné kontrolní body a návratové kódy PŘÍKAZU"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2597,7 +2610,7 @@ msgstr ""
 "Synchronní vykonávání akcí. Tyto budou provedeny, když bude dosaženo číslo "
 "kontrolního bodu zadaného přepínačem --checkpoint."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2605,144 +2618,147 @@ msgstr ""
 "Zkrátí SOUBOR na velikost zadanou předchozím přepínačem --length (nebo na 0, "
 "není-li uveden)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "K SOUBORU připojí VELIKOST bajtů. VELIKOST se zadává předcházejícím "
 "přepínačem --length."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Aktualizuje časy přístupu a změny obsahu SOUBORU"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Vykoná PŘÍKAZ"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "Smaže (unlink) SOUBOR"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Neplatná velikost: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Číslo je mimo povolený rozsah: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Záporná velikost: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) selhalo"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "požadovaná délka souboru %'lu, aktuální %'lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "vytvořený soubor není řídký"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Chyba při rozebírání čísla poblíž „%s“"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Neznámý formát data"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENT…]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "„%s“ nelze otevřít"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "v souboru se nelze pohybovat"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "název souboru obsahuje nulový znak"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "na standardní výstup nelze generovat řídké soubory, použijte přepínač --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "nesprávná maska (poblíž „%s“)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Neznámá položka „%s“"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "Souboru „%s“ nelze nastavit čas"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "„%s“ nelze odstranit (unlink)"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Příkaz skončil úspěšně\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Příkaz selhal s kódem %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Příkaz skončil signálem %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Příkaz pozastaven signálem %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Příkaz skončil výpisem obrazu paměti\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Příkaz ukončen\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat potřebuje název souboru"
 
+#~ msgid "Cannot save working directory"
+#~ msgstr "Pracovní adresář nelze uchovat"
+
 #~ msgid "Cannot resolve hostname %s"
 #~ msgstr "Název počítače %s nelze přeložit"
 
index d9befddb41ebb8d09552c8890fd239b56bdd9ff8..68547aaceb6b01b2a7a758f6010da7f1d0a69082 100644 (file)
Binary files a/po/da.gmo and b/po/da.gmo differ
index 1318e904fc0e77b97f64de55cd9b9add3a749c97..87d7e9d4b960c37830cfb9ca7c63945993a454c0 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -1,21 +1,25 @@
 # Danish messages for GNU tar.
 # Copyright (C) 1996 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
-# Claus Hindsgaul <claus_h@image.dk>, 2001.
-# Keld Jørn Simonsen <keld@dkuug.dk>, 2000-2001,2009.
 #
+# Claus Hindsgaul <claus_h@image.dk>, 2001.
+# Keld Jørn Simonsen <keld@keldix.com>, 2000-2001,2009,2010.
+# Keld Simonsen <keld@keldix.com>, 2010.
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU tar 1.22\n"
+"Project-Id-Version: GNU tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2009-05-26 13:57+0200\n"
-"Last-Translator: Keld Jørn Simonsen <keld@dkuug.dk>\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-09-26 09:18+0200\n"
+"Last-Translator: Keld Simonsen <keld@keldix.com>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.0\n"
 
 #: gnu/argmatch.c:135
 #, c-format
@@ -35,33 +39,35 @@ msgstr "Gyldige argumenter er:"
 #: gnu/argp-help.c:149
 #, c-format
 msgid "ARGP_HELP_FMT: %s value is less than or equal to %s"
-msgstr ""
+msgstr "ARGP_HELP_FMT: %s værdi er mindre eller lig med %s"
 
 #: gnu/argp-help.c:222
 #, c-format
 msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr ""
+msgstr "%.*s: Parameter for ARGP_HELP_FMT kræver en værdi"
 
 #: gnu/argp-help.c:228
 #, c-format
 msgid "%.*s: ARGP_HELP_FMT parameter must be positive"
-msgstr ""
+msgstr "%.*s: Parameter fra ARGP_HELP_FMT skal være positiv."
 
 #: gnu/argp-help.c:237
 #, c-format
 msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr ""
+msgstr "%.*s: Ukendt ARGP_HELP_FMT-parameter"
 
 #: gnu/argp-help.c:249
 #, c-format
 msgid "Garbage in ARGP_HELP_FMT: %s"
-msgstr ""
+msgstr "Skidt i ARGP_HELP_FMT: %s"
 
 #: gnu/argp-help.c:1246
 msgid ""
 "Mandatory or optional arguments to long options are also mandatory or "
 "optional for any corresponding short options."
 msgstr ""
+"Obligatoriske eller valgfri argumenter til lange flag er også obligatoriske "
+"eller valgfri for alle tilsvarende korte flag."
 
 #: gnu/argp-help.c:1639
 msgid "Usage:"
@@ -73,7 +79,7 @@ msgstr "  eller: "
 
 #: gnu/argp-help.c:1655
 msgid " [OPTION...]"
-msgstr " [FLAG...}"
+msgstr " [FLAG...]"
 
 #: gnu/argp-help.c:1682
 #, c-format
@@ -85,43 +91,43 @@ msgstr "Pr
 msgid "Report bugs to %s.\n"
 msgstr "Rapportér fejl til %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Ukendt systemfejl"
 
 #: gnu/argp-parse.c:83
 msgid "give this help list"
-msgstr ""
+msgstr "vis denne hjælpetekst"
 
 #: gnu/argp-parse.c:84
 msgid "give a short usage message"
-msgstr ""
+msgstr "vis en kort hjælpemeddelelse"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
-msgstr ""
+msgstr "NAVN"
 
 #: gnu/argp-parse.c:85
 msgid "set the program name"
-msgstr ""
+msgstr "angiv progravnavnet"
 
 #: gnu/argp-parse.c:86
 msgid "SECS"
-msgstr ""
+msgstr "SEK"
 
 #: gnu/argp-parse.c:87
 msgid "hang for SECS seconds (default 3600)"
-msgstr ""
+msgstr "vent i SEK sekunder (standardværdi 3600)"
 
 #: gnu/argp-parse.c:144
 msgid "print program version"
-msgstr ""
+msgstr "vis programversion"
 
 #: gnu/argp-parse.c:160
 #, c-format
 msgid "(PROGRAM ERROR) No version known!?"
-msgstr ""
+msgstr "(PROGRAMFEJL) Ingen version kendt!?"
 
 #: gnu/argp-parse.c:613
 #, c-format
@@ -130,75 +136,80 @@ msgstr "%s: For mange argumenter\n"
 
 #: gnu/argp-parse.c:756
 msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr ""
+msgstr "(PROGRAMFEJL) Flag burde være genkendt!?"
 
 #: gnu/closeout.c:114
 msgid "write error"
 msgstr "skrivefejl"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: flag '%s' er flertydigt\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: flag '%s' tillader ikke et argument\n"
+msgstr "%s: flag '--%s' tillader ikke et argument\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: flag '%c%s' tillader ikke et argument\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: flag '%s' kræver et argument\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: flag '--%s' kræver et argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: ukendt flag '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: ukendt flag '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: ugyldigt flag -- %c\n"
+msgstr "%s: ugyldigt flag -- '%c'\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: flag kræver et argument -- %c\n"
+msgstr "%s: flag kræver et argument -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: flag '-W %s' er flertydigt\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: flag '-W %s' tillader ikke et argument\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: flag '-W %s' kræver et argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "hovedlager opbrugt"
 
 #: gnu/openat-die.c:36
-#, fuzzy, c-format
+#, c-format
 msgid "unable to record current working directory"
-msgstr "Kan ikke ændre arbejdskatalog"
+msgstr "Kan ikke notere nuværende arbejdskatalog"
 
 #: gnu/openat-die.c:54
-#, fuzzy, c-format
+#, c-format
 msgid "failed to return to initial working directory"
-msgstr "Kan ikke gemme arbejdskatalog"
+msgstr "Kan ikke gå tilbage til oprindeligt arbejdskatalog"
 
 #. TRANSLATORS:
 #. Get translations for open and closing quotation marks.
@@ -250,19 +261,19 @@ msgstr "^[nN]"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Pakket af %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Pakket af %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
 #. locale.  Otherwise, do not translate "(C)"; leave it as-is.
 #: gnu/version-etc.c:86
 msgid "(C)"
-msgstr ""
+msgstr "©"
 
 #: gnu/version-etc.c:88
 msgid ""
@@ -273,24 +284,29 @@ msgid ""
 "There is NO WARRANTY, to the extent permitted by law.\n"
 "\n"
 msgstr ""
+"\n"
+"Licens GPLv3+: GNU GPL version 3 eller senere <http://gnu.org/licenses/gpl."
+"html>.\n"
+"Dette program er frit programmel. Du kan ændre og distribuere det.\n"
+"Der er ikke NOGEN SOM HELST GARANTI, i det omfang som lov tillader.\n"
 
 #. TRANSLATORS: %s denotes an author name.
 #: gnu/version-etc.c:104
-#, fuzzy, c-format
+#, c-format
 msgid "Written by %s.\n"
-msgstr "Skrevet af François Pinard <pinard@iro.umontreal.ca>"
+msgstr "Skrevet af %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #: gnu/version-etc.c:108
-#, fuzzy, c-format
+#, c-format
 msgid "Written by %s and %s.\n"
-msgstr "Skrevet af François Pinard <pinard@iro.umontreal.ca>"
+msgstr "Skrevet af %s og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #: gnu/version-etc.c:112
-#, fuzzy, c-format
+#, c-format
 msgid "Written by %s, %s, and %s.\n"
-msgstr "Skrevet af François Pinard <pinard@iro.umontreal.ca>"
+msgstr "Skrevet af %s, %s og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -301,6 +317,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "and %s.\n"
 msgstr ""
+"Skrevet af %s, %s, %s\n"
+"og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -311,6 +329,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, and %s.\n"
 msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -321,6 +341,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, %s, and %s.\n"
 msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -331,6 +353,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, %s, %s, and %s.\n"
 msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -342,6 +366,9 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "and %s.\n"
 msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -353,6 +380,9 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "%s, and %s.\n"
 msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s og %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -364,38 +394,42 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "%s, %s, and others.\n"
 msgstr ""
+"Skrevet af %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s og andre.\n"
 
 #. TRANSLATORS: The placeholder indicates the bug-reporting address
 #. for this package.  Please add _another line_ saying
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
-msgstr "Rapportér fejl til %s.\n"
+msgstr ""
+"\n"
+"Rapportér fejl til: %s\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
-msgstr ""
-"\n"
-"Rapportér fejl til <bugs-tar@gnu.org>.\n"
+msgstr "Rapportér %s fejl til: %s\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "%s hjemmeside: <%s>\n"
 
 #: gnu/version-etc.c:255
 #, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr ""
+msgstr "%s hjemmeside: <http://www.gnu.org/software/%s/>.\n"
 
 #: gnu/version-etc.c:258
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"Generel brugerhjælp for GNU-programmel: <http://www.gnu.org/gethelp/>.\n"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -404,7 +438,7 @@ msgstr ""
 #: lib/paxerror.c:58 lib/paxerror.c:71
 #, c-format
 msgid "%s: Cannot %s"
-msgstr "%s: Kan ikke %s"
+msgstr "%s: Funktionen %s fejlede"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -434,15 +468,15 @@ msgstr "%s: Kan ikke oprette l
 #, c-format
 msgid "%s: Read error at byte %s, while reading %lu byte"
 msgid_plural "%s: Read error at byte %s, while reading %lu bytes"
-msgstr[0] "%s: Læsefejl ved byte %s, ved læsning af %lu byte"
-msgstr[1] "%s: Læsefejl ved byte %s, ved læsning af %lu byte"
+msgstr[0] "%s: Læsefejl ved byte %s ved læsning af %lu byte"
+msgstr[1] "%s: Læsefejl ved byte %s ved læsning af %lu byte"
 
 #: lib/paxerror.c:192
 #, c-format
 msgid "%s: Warning: Read error at byte %s, while reading %lu byte"
 msgid_plural "%s: Warning: Read error at byte %s, while reading %lu bytes"
-msgstr[0] "%s: Advarsel: Læsefejl ved byte %s, ved læsning af %lu byte"
-msgstr[1] "%s: Advarsel: Læsefejl ved byte %s, ved læsning af %lu byte"
+msgstr[0] "%s: Advarsel: Læsefejl ved byte %s ved læsning af %lu byte"
+msgstr[1] "%s: Advarsel: Læsefejl ved byte %s ved læsning af %lu byte"
 
 #: lib/paxerror.c:259
 #, c-format
@@ -474,16 +508,15 @@ msgstr "Fjerner indledende '%s' fra medlemsnavne"
 #: lib/paxnames.c:156
 #, c-format
 msgid "Removing leading `%s' from hard link targets"
-msgstr "Fjerner indledende '%s' fra absolutte lænkemål"
+msgstr "Fjerner indledende '%s' fra hårde lænkemål"
 
 #: lib/paxnames.c:169
-#, fuzzy
 msgid "Substituting `.' for empty member name"
-msgstr "Fjerner indledende '%.*s' fra medlemsnavne"
+msgstr "Erstatter tomme navne i arkivet med \".\""
 
 #: lib/paxnames.c:170
 msgid "Substituting `.' for empty hard link target"
-msgstr ""
+msgstr "Erstatter tomt mål for hård lænke med \".\""
 
 #: lib/rtapelib.c:299
 #, c-format
@@ -503,296 +536,291 @@ msgstr "standard-ud"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Kan ikke opkoble til %s: navneopslag mislykkedes"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
-msgstr "Kan ikke eksekvere fjern skal"
+msgstr "Kan ikke eksekvere fjern skál"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
-msgstr "Søgeretning uden for område"
+msgstr "Søgeretning udenfor interval"
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Ugyldig modus angivet i flag"
+msgstr "Ugyldig søgeretning"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Ugyldigt tidsstempel"
+msgstr "Ugyldig positioneringsværdi"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
-msgstr "Søgeposition uden for område"
+msgstr "Søgeposition udenfor interval"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Ugyldig båndlængde"
+msgstr "Ugyldigt byteantal"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "Søgeposition uden for område"
+msgstr "Byteantal udenfor interval"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd: For tidlig filafslutning\n"
+msgstr "For tidlig filafslutning"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "%s: ugyldigt flag -- %c\n"
+msgstr "Ugyldig operationskode"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Operation understøttes ikke"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "Uventet filslutning i arkivet"
+msgstr "Uventede argumenter"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
-msgstr ""
+msgstr "Styr en båndstation via accept af kommandoer fra en fjernproces"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
-msgstr ""
+msgstr "NUMMER"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "sæt fejlsøgningsniveau"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
-msgstr ""
+msgstr "FIL"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "sæt fejlsøgningsfilnavn"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
-msgstr "kan ikke ændre ejer (chown) '%s'"
+msgstr "kan ikke åbne %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
-msgstr ""
+msgstr "for mange argumenter"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Ugyldig kommando"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Dette ligner ikke et tar-arkiv"
 
-#: src/buffer.c:385 src/buffer.c:394
-#, fuzzy
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
-msgstr "Totalt antal byte skrevet: %s (%sB, %sB/s)\n"
+msgstr "Totalt antal byte skrevet"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
-msgstr ""
+msgstr "Totalt antal byte læst"
 
-#: src/buffer.c:396
-#, fuzzy, c-format
+#: src/buffer.c:461
+#, c-format
 msgid "Total bytes deleted: %s\n"
-msgstr "Totalt antal byte skrevet: %s (%sB, %sB/s)\n"
+msgstr "Totalt antal byte slettet: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(datakanal)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Ugyldig værdi for record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Arkivnavn er ikke opgivet"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Kan ikke verificere standard-ind/standard-ud arkiver"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
-msgstr ""
+msgstr "Arkivet er komprimeret. Brug flaget %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Kan ikke opdatere komprimerede arkiver"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Ved begyndelsen af båndet, afslutter nu"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "For mange fejl, afslutter"
 
-#: src/buffer.c:744
-#, fuzzy, c-format
+#: src/buffer.c:821
+#, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
-msgstr[0] "Poststørrelse = %lu blokke"
+msgstr[0] "Poststørrelse = %lu blok"
 msgstr[1] "Poststørrelse = %lu blokke"
 
-#: src/buffer.c:765
-#, fuzzy, c-format
+#: src/buffer.c:842
+#, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Ikke-justeret blok (%lu byte) i arkiv"
-msgstr[1] "Ikke-justeret blok (%lu byte) i arkiv"
+msgstr[1] "Ikke-justerede blokke (%lu byte) i arkiv"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Kunne ikke gå tilbage i arkivfilen. Den kan være ulæselig uden -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
-msgstr ""
+msgstr "rmtlseek stoppede ikke på en postgrænse"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: indeholder ugyldigt delarkivs-nummer"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Overløb på delarkiv-nummer"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Klargør delarkiv nummer %d for %s og tryk retur: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Filafslutning hvor svar fra bruger var forventet"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ADVARSEL: Arkivet er ufuldstændigt"
 
-#: src/buffer.c:1003
-#, fuzzy, c-format
+#: src/buffer.c:1077
+#, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
 " q             Abort tar\n"
 " y or newline  Continue operation\n"
 msgstr ""
-" n [navn]   Giv et filnavn for næste (og efterfølgende) delarkiv(er)\n"
-" q          Afbryd tar\n"
-" !          Start en skal\n"
-" ?          Skriv denne list\n"
+" n navn              Giv et nyt filnavn for næste (og efterfølgende) "
+"delarkiver\n"
+" q                   Afbryd tar\n"
+" y eller ny linje    Fortsæt handling\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
-msgstr ""
+msgstr " !            Start en ny skál\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
-msgstr ""
+msgstr " ?            Udskriv denne liste\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Intet nyt delarkiv; afslutter.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
-msgstr ""
+msgstr "Filnavn ikke angivet, prøv igen.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
-msgstr ""
+msgstr "Ugyldigt inddata. Skriv ? for at få hjælp.\n"
 
-#: src/buffer.c:1113
-#, fuzzy, c-format
+#: src/buffer.c:1187
+#, c-format
 msgid "%s command failed"
 msgstr "'%s'-kommando mislykkedes"
 
-#: src/buffer.c:1294
-#, fuzzy, c-format
+#: src/buffer.c:1368
+#, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
-msgstr "%s fortsætter ikke i dette delarkiv"
+msgstr ""
+"%s fortsættes muligvis i dette delarkiv: hoved indeholder afkortet navn"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s fortsætter ikke i dette delarkiv"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s har forkert størrelse (%s != %s + %s)"
 
-#: src/buffer.c:1326
-#, fuzzy, c-format
+#: src/buffer.c:1401
+#, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
-msgstr "Dette delarkiv kommer ude af rækkefølge"
+msgstr "Dette delarkiv er ude af rækkefølge (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arkivet er ikke navngivet til at passe med %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
-msgstr "Volumenet '%s' stemmer ikke overens med %s"
+msgstr "Delarkivet '%s' stemmer ikke overens med %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
+"%s: filnavnet er for langt til at gemmes i hovedet på et GNU-flerdelarkiv, "
+"afkortes"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
-msgstr ""
+msgstr "skrivning stoppede ikke på en blokgrænse"
 
 #: src/compare.c:95
-#, fuzzy, c-format
+#, c-format
 msgid "Could only read %lu of %lu byte"
 msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Kunne kun læse %lu af %lu byte"
 msgstr[1] "Kunne kun læse %lu af %lu byte"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Indhold er forskelligt"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Uventet filslutning i arkivet"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Filtype er forskellig"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Modus er forskellig"
 
@@ -808,143 +836,143 @@ msgstr "Gruppe-ID er forskellig"
 msgid "Mod time differs"
 msgstr "Modificeringstid er forskellig"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Størrelse er forskellig"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Ikke lænket til %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symbolsk lænke er forskellig"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Enhedsnummer er forskellig"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
-msgstr "Verificering "
+msgstr "Verificér "
 
-#: src/compare.c:469
-#, fuzzy, c-format
+#: src/compare.c:463
+#, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
-msgstr "%s: Ukendt filtype '%c', diff-et som en almindelig fil"
+msgstr "%s: Ukendt filtype '%c', diff'et som en almindelig fil"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
-msgstr ""
+msgstr "Arkivet indeholder filnavne med indledende prefixer borttaget."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
-msgstr ""
+msgstr "Verificering kan mislykkes med at finde originalfiler."
 
-#: src/compare.c:599
-#, fuzzy, c-format
+#: src/compare.c:593
+#, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
-msgstr[0] "VERIFIKASIONSFEJL: %d ukendte hoveder fundet"
-msgstr[1] "VERIFIKASIONSFEJL: %d ukendte hoveder fundet"
+msgstr[0] "VERIFICERINGSFEJL: %d ukendt hoved fundet"
+msgstr[1] "VERIFICERINGSFEJL: %d ukendte hoveder fundet"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
-msgstr ""
+msgstr "En enkeltstående nulblok ved %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
-msgstr ""
+msgstr "%s: indeholder et cachekatalog-mærke %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
-msgstr "værdi %s ud af %s område %s..%s; erstatter %s"
+msgstr "værdi %s ud af %s interval %s..%s; erstatter %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
-msgstr "værdi %s ud af %s område %s..%s"
+msgstr "værdi %s ud af %s interval %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Genererer negative oktale hoveder"
 
-#: src/create.c:624 src/create.c:687
-#, fuzzy, c-format
+#: src/create.c:611 src/create.c:674
+#, c-format
 msgid "%s: file name is too long (max %d); not dumped"
-msgstr "%s: file er uændret; ikke lagret"
+msgstr "%s: filnavnet er for langt (max %d); ikke arkiveret"
 
-#: src/create.c:634
-#, fuzzy, c-format
+#: src/create.c:621
+#, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
-msgstr "%s: file er uændret; ikke lagret"
+msgstr "%s: filnavnet er for langt (kan ikke opdeles); ikke arkiveret"
 
-#: src/create.c:661
-#, fuzzy, c-format
+#: src/create.c:648
+#, c-format
 msgid "%s: link name is too long; not dumped"
-msgstr "%s: file er uændret; ikke lagret"
+msgstr "%s: lænkenavn er for langt; ikke arkiveret"
 
-#: src/create.c:1078
-#, fuzzy, c-format
+#: src/create.c:1062
+#, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
-msgstr[0] "%s: Filen formindsket med %s byte, fylder ud med nuller"
+msgstr[0] "%s: Filen formindsket med %s byte, fylder ud med nul"
 msgstr[1] "%s: Filen formindsket med %s byte, fylder ud med nuller"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
-msgstr "%s: fil er på et andet filesystem.  Ikke lagret"
+msgstr "%s: fil er på et andet filesystem; ikke arkiveret"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
-msgstr ""
+msgstr "indholdet ikke arkiveret"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Ukendt filtype; filen blev ignoreret"
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr " lænke til %s\n"
+msgstr "Mangler lænke til %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
-msgstr "%s: file er uændret; ikke lagret"
+msgstr "%s: fil er uændret; ikke arkiveret"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
-msgstr "%s: fil er det samme som arkivet; ikke lagret"
+msgstr "%s: fil er det samme som arkivet; ikke arkiveret"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
-msgstr ""
+msgstr "katalog ikke arkiveret"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: Fil ændredes mens vi læste den"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: sokkel ignoreret"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: dør ignoreret"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Hopper til næste hoved"
 
@@ -952,75 +980,74 @@ msgstr "Hopper til n
 msgid "Deleting non-header from archive"
 msgstr "Sletter ikke-hoved fra arkivet"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
-msgstr ""
+msgstr "%s: usandsynligt gammelt tidsstempel %s"
 
-#: src/extract.c:229
-#, fuzzy, c-format
+#: src/extract.c:295
+#, c-format
 msgid "%s: time stamp %s is %s s in the future"
-msgstr "%s: tidsstempel %s er %lu s i fremtiden"
+msgstr "%s: tidsstempel %s er %s sekunder ud i fremtiden"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Uventet uoverensstemmelse ved oprettelse af katalog"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
-msgstr "%s: Katalog omdøbt før dets status kunne blive udtrukket"
+msgstr "%s: Katalog omdøbt før dets status kunne blive udpakket"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
-msgstr "Udtrækker sammenhængende filer som almindelige filer"
+msgstr "Udpakker sammenhængende filer som almindelige filer"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
-msgstr "Forsøger at udtrække symbolske lænker som hårde lænker"
+msgstr "Forsøger at udpakke symbolske lænker som hårde lænker"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
-msgstr "%s: Kan ikke udtrække -- filen er fortsat fra et tidligere delarkiv"
+msgstr "%s: Kan ikke udpakke -- filen er fortsat fra et andet delarkiv"
 
-#: src/extract.c:1190 src/list.c:1109
-#, fuzzy
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
-msgstr "Uventet filafslutning i ødelagte navne"
+msgstr "Uventet langt filnavnshoved"
 
-#: src/extract.c:1197
-#, fuzzy, c-format
+#: src/extract.c:1353
+#, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
-msgstr "%s: Ukendt filtype '%c', udtrukket som en almindelig fil"
+msgstr "%s: Ukendt filtype '%c', udpakket som en almindelig fil"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
-msgstr ""
+msgstr "Nuværende %s er nyere eller lige så gammel"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Kunne ikke sikkerhedskopiere denne fil"
 
-#: src/extract.c:1402
-#, fuzzy, c-format
+#: src/extract.c:1568
+#, c-format
 msgid "Cannot rename %s to %s"
-msgstr "%s: Kan ikke omdøbe til %s"
+msgstr "Kan ikke omdøbe %s til %s"
 
-#: src/incremen.c:482 src/incremen.c:526
-#, fuzzy, c-format
+#: src/incremen.c:474 src/incremen.c:518
+#, c-format
 msgid "%s: Directory has been renamed from %s"
-msgstr "%s: Kataloget er blevet omdøbt"
+msgstr "%s: Kataloget er blevet omdøbt fra %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Kataloget er blevet omdøbt"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Kataloget er nyt"
@@ -1030,13 +1057,12 @@ msgid "Invalid time stamp"
 msgstr "Ugyldigt tidsstempel"
 
 #: src/incremen.c:1012
-#, fuzzy
 msgid "Invalid modification time (seconds)"
-msgstr "Ugyldig modus angivet i flag"
+msgstr "Ugyldig modifikationstid (sekunder)"
 
 #: src/incremen.c:1027
 msgid "Invalid modification time (nanoseconds)"
-msgstr ""
+msgstr "Ugyldig modifikationstid (nanosekunder)"
 
 #: src/incremen.c:1047
 msgid "Invalid device number"
@@ -1048,79 +1074,80 @@ msgstr "Ugyldigt inode-nummer"
 
 #: src/incremen.c:1113 src/incremen.c:1150
 msgid "Field too long while reading snapshot file"
-msgstr ""
+msgstr "Felt for langt da øjebliksfil læstes"
 
 #: src/incremen.c:1120 src/incremen.c:1158
 msgid "Read error in snapshot file"
-msgstr ""
+msgstr "Læsefejl i øjebliksfil"
 
 #: src/incremen.c:1122 src/incremen.c:1162 src/incremen.c:1214
 #: src/incremen.c:1272
-#, fuzzy
 msgid "Unexpected EOF in snapshot file"
-msgstr "Uventet filslutning i arkivet"
+msgstr "Uventet filslutning i øjebliksfil"
 
 #: src/incremen.c:1129 src/incremen.c:1169
 msgid "Unexpected field value in snapshot file"
-msgstr ""
+msgstr "Uventet feltværdi i øjebliksfil"
 
 #: src/incremen.c:1264
 msgid "Missing record terminator"
-msgstr ""
+msgstr "Postafslutning mangler"
 
 #: src/incremen.c:1325 src/incremen.c:1328
 msgid "Bad incremental file format"
-msgstr ""
+msgstr "Fejlagtigt inkrementelt filformat"
 
 #: src/incremen.c:1347
 #, c-format
 msgid "Unsupported incremental format version: %<PRIuMAX>"
 msgstr ""
+"Formatversion for inkrementel sikkerhedskopiering understøttes ikke: "
+"%<PRIuMAX>"
 
 #: src/incremen.c:1502
 #, c-format
 msgid "Malformed dumpdir: expected '%c' but found %#3o"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: forventede \"%c\" men fandt %#3o"
 
 #: src/incremen.c:1512
 msgid "Malformed dumpdir: 'X' duplicated"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: \"X\" duplikeret"
 
 #: src/incremen.c:1525
 msgid "Malformed dumpdir: empty name in 'R'"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: tomt navn i \"R\""
 
 #: src/incremen.c:1538
 msgid "Malformed dumpdir: 'T' not preceeded by 'R'"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: \"T\" foregås ikke af \"R\""
 
 #: src/incremen.c:1544
 msgid "Malformed dumpdir: empty name in 'T'"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: tomt navn i \"T\""
 
 #: src/incremen.c:1564
 #, c-format
 msgid "Malformed dumpdir: expected '%c' but found end of data"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: forventede \"%c\" men fandt slut på data"
 
 #: src/incremen.c:1571
 msgid "Malformed dumpdir: 'X' never used"
-msgstr ""
+msgstr "Fejlagtigt dumpkatalog: \"X\" bruges aldrig"
 
 #: src/incremen.c:1615
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot create temporary directory using template %s"
-msgstr "kan ikke oprette kataloget '%s'"
+msgstr "kan ikke oprette midlertidigt katalog ved brug af skabelonen %s"
 
 #: src/incremen.c:1677
 #, c-format
 msgid "%s: Not purging directory: unable to stat"
-msgstr ""
+msgstr "%s: Renser ikke katalog: kunne ikke tage status"
 
 #: src/incremen.c:1690
-#, fuzzy, c-format
+#, c-format
 msgid "%s: directory is on a different device: not purging"
-msgstr "%s: fil er på et andet filesystem.  Ikke lagret"
+msgstr "%s: fil er på et andet filesystem: sletter ikke"
 
 #: src/incremen.c:1698
 #, c-format
@@ -1132,174 +1159,179 @@ msgstr "%s: Sletter %s\n"
 msgid "%s: Cannot remove"
 msgstr "Kan ikke slette %s"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
-msgstr "Udelader %s"
+msgstr "%s: Udelader"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
-msgstr "blok %s: ** Blok med NUL-er **\n"
+msgstr "blok %s: ** Blok med NULler **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Slut på fil **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Blank-tegn i hovedet hvor numerisk %s værdi var forventet"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
-msgstr "Arkiv oktal værdi %.*s er udenfor %s område; antager to-komplement"
+msgstr "Oktal værdi %.*s i arkiv er udenfor %s interval; antager to-komplement"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
-msgstr "Arkiv oktal værdi %.*s er udenfor %s område"
+msgstr "Oktal værdi %.*s i arkiv er udenfor %s interval"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arkiv indeholder forældede base-64 hoveder"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
-msgstr "Arkiv base-64 streng med fortegn %s er uden for %s område"
+msgstr "Base-64 streng med fortegn %s i arkiv er udenfor %s interval"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
-msgstr "Arkiv base-256 værdi er uden for %s område"
+msgstr "Base-256 værdi i arkiv er udenfor %s interval"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
-msgstr "Arkiv indeholder %.*s hvor numerisk %s værdi var forventet"
+msgstr "Arkiv indeholder %.*s hvor numerisk %s-værdi var forventet"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
-msgstr "Arkiv værdi %s er udenfor %s område %s..%s"
+msgstr "Arkiv værdi %s er udenfor %s interval %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " lænke til %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " ukendt filtype %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
-msgstr ""
+msgstr "--Lang lænke--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
-msgstr ""
+msgstr "--Langt navn--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
-msgstr "--Volumenhoved--\n"
+msgstr "--Delarkivhoved--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
-msgstr "--Fortsætter ved byte %s--\n"
+msgstr "--Fortsat ved byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Opretter katalog:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Kan ikke ændre arbejdskatalog"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Omdøber %s til %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Kan ikke omdøbe til %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Omdøber %s tilbage til %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Kan ikke gemme arbejdskatalog"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Kan ikke ændre arbejdskatalog"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Fil fjernet før vi læste den"
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s: Fil fjernet før vi læste den"
+msgstr "%s: Katalog fjernet før vi læste det"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "underproces"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "mellemproces-kanal"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr ""
+msgstr "Mønstermatchningstegn bruges i filnavne"
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
+"Brug --wildcards for at aktivere mønstermatchning, eller --no-wildcards for "
+"at undertrykke denne advarsel"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
-msgstr "%s: Blev ikke fundet i arkivet"
+msgstr "%s: Ikke fundet i arkivet"
 
-#: src/names.c:622
-#, fuzzy, c-format
+#: src/names.c:615
+#, c-format
 msgid "%s: Required occurrence not found in archive"
-msgstr "%s: Blev ikke fundet i arkivet"
+msgstr "%s: Krævet forekomst blev ikke fundet i arkivet"
+
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Arkivetiket stemmer ikke overrens"
 
-#: src/names.c:894
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
+"At bruge -C-flaget i en filliste er ikke tilladt med --listed-incremental"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr ""
+msgstr "Kun ét -C-flag er tilladt med --listed-incremental"
 
 #: src/tar.c:81
 #, c-format
@@ -1307,9 +1339,9 @@ msgid "Options `-%s' and `-%s' both want standard input"
 msgstr "Flagene '-%s' and '-%s' vil begge have standard inddata"
 
 #: src/tar.c:158
-#, fuzzy, c-format
+#, c-format
 msgid "%s: Invalid archive format"
-msgstr "%s: ugyldig gruppe"
+msgstr "%s: ugyldigt arkivformat"
 
 #: src/tar.c:182
 msgid "GNU features wanted on incompatible archive format"
@@ -1320,9 +1352,10 @@ msgstr "GNU-funktioner fors
 msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
+"Ukendt citeringsstíl \"%s\". Prøv \"%s --quoting-style=help for at få en "
+"liste."
 
-#: src/tar.c:347
-#, fuzzy
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1332,16 +1365,15 @@ msgid ""
 "  tar -tvf archive.tar         # List all files in archive.tar verbosely.\n"
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
-"\n"
-"Brug: %s [OPTION]... [FILE]...\n"
+"GNU 'tar' gemmer mange filer sammen i et enkelt disk- eller bånd-arkiv, og "
+"kan gendanne individuelle filer fra arkivet.\n"
 "\n"
 "Eksempler:\n"
-"  %s -cf arkiv.tar foo bar  # Skab arkiv.tar fra filerne foo og bar.\n"
-"  %s -tvf arkiv.tar         # List alle filer i arkiv.tar udførligt.\n"
-"  %s -xf arkiv.tar          # Udtræk alle filer fra arkiv.tar.\n"
+"  tar -cf arkiv.tar foo bar  # Skab arkiv.tar fra filerne foo og bar.\n"
+"  tar -tvf arkiv.tar         # Vís alle filer i arkiv.tar udførligt.\n"
+"  tar -xf arkiv.tar          # Udpak alle filer fra arkiv.tar.\n"
 
-#: src/tar.c:356
-#, fuzzy
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1352,1879 +1384,1351 @@ msgid ""
 "  nil, existing   numbered if numbered backups exist, simple otherwise\n"
 "  never, simple   always make simple backups\n"
 msgstr ""
-"\n"
 "Suffikset for sikkerhedskopiering er '~', med mindre det er sat med --"
 "suffix\n"
-"eller SIMPLE_BACKUP_SUFFIX.  Versionskontrol kan sættes med --backup eller\n"
-"VERSION_CONTROL.  Gyldige værdier er:\n"
+"eller SIMPLE_BACKUP_SUFFIX  Versionskontrollen kan sættes med --backup "
+"eller\n"
+"VERSION_CONTROL, værdier er:\n"
 "\n"
+"  none, off       lav aldrig sikkerhedskopier\n"
 "  t, numbered     lav nummererede sikkerhedskopier\n"
 "  nil, existing   nummererede, dersom nummererede sikkerhedskopier "
 "eksisterer,\n"
 "                  ellers simple\n"
-"  never, simple   lav simple sikkerhedskopier\n"
+"  never, simple   lav altid simple sikkerhedskopier\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
-msgstr ""
+msgstr "Hovedoperationstilstand:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
-msgstr ""
+msgstr "vis indholdet af et arkiv"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
-msgstr ""
+msgstr "udpak filer fra et arkiv"
 
-#: src/tar.c:394
-#, fuzzy
+#: src/tar.c:395
 msgid "create a new archive"
-msgstr "Uventet filslutning i arkivet"
+msgstr "opret et nyt arkiv"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
-msgstr ""
+msgstr "find forskelle mellem filsystemet og arkivet"
 
-#: src/tar.c:399
-#, fuzzy
+#: src/tar.c:400
 msgid "append files to the end of an archive"
-msgstr "%d overflødige byte ignoreret ved slutningen på arkiv"
+msgstr "tilføj filer til slutningen af et arkiv"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
-msgstr ""
+msgstr "tilføj kun filer som er nyere end dem i arkivet"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
-msgstr ""
+msgstr "tilføj indholdet i tar-arkivfiler til et arkiv"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
-msgstr ""
+msgstr "fjern fra arkivet (ikke på magnetbånd!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
-msgstr ""
+msgstr "verificér arkivets delarkivnavn og afslut derefter."
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
-msgstr ""
+msgstr "Ændringer til handling:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
-msgstr ""
+msgstr "håndtér filer med huller effektivt"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
-msgstr ""
+msgstr "ØVRE[.NEDRE]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
+"angiv hvilken formatversion som skal håndtere filer med huller (implicerer --"
+"sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
-msgstr ""
+msgstr "håndtér det gamle GNU-format for inkrementel sikkerhedskopiering"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
-msgstr ""
+msgstr "håndtér det nye GNU-format for inkrementel sikkerhedskopiering"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "dumpniveau for \"listed-incremental\" arkiv"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
-msgstr ""
+msgstr "afslut ikke med fejlslutstatus p.g.a. filer, der ikke kan læses"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
 "diff, --extract or --list and when a list of files is given either on the "
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
+"behandl kun forekomst NUMMER af hver fil i arkivet. Dette flag er kun "
+"gyldigt med en af underkommandoerne --delete, --diff, --extract eller --list "
+"og når en liste af filer angives enten på kommandolinjen eller med flaget -"
+"T. Standardværdi for NUMMER er 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
-msgstr ""
+msgstr "arkivet er søgbart"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr ""
+msgstr "arkivet er ikke søgbart"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
-msgstr ""
+msgstr "kontrollér ikke enhedsnumre når inkrementelle arkiver oprettes"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
+"kontrollér enhedsnumre når inkrementelle arkiver oprettes (standardværdi)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
-msgstr ""
+msgstr "Kontrollér overskrivning:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
-msgstr ""
+msgstr "forsøg at verificere arkivet efter det blev skrevet"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
-msgstr ""
+msgstr "fjern filer efter de blev tilføjet til arkivet"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
-msgstr ""
+msgstr "erstat ikke eksisterende filer ved udpakning"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
+"erstat ikke eksisterende filer som er nyere end de, som findes i arkivet"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
-msgstr ""
+msgstr "overskriv eksisterende filer ved udpakning"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
-msgstr ""
+msgstr "fjern hver eksisterende fil inden en ny udpakkes oven i den"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
-msgstr ""
+msgstr "tøm kataloghierarkier før udpakning af katalog"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
-msgstr ""
+msgstr "bevar eksisterende katalogers metadata"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
+"overskriv metadata for eksisterende kataloger ved udpakning (standardværdi)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
-msgstr ""
+msgstr "Vælg uddatastrøm:"
 
-#: src/tar.c:475
-#, fuzzy
+#: src/tar.c:476
 msgid "extract files to standard output"
-msgstr "Fejl ved skrivning til standard uddata"
+msgstr "udpak filer til standard-ud"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
-msgstr ""
+msgstr "KOMMANDO"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
-msgstr ""
+msgstr "udpak filer til standard input til et andet program"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
-msgstr ""
+msgstr "ignorér barneprocessers slutstatus"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
-msgstr ""
+msgstr "behandl slutstatus fra barneprocesser bortset fra 0 som fejl"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
-msgstr ""
+msgstr "Håndtering af filattributter:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
-msgstr ""
+msgstr "sæt NAVN som ejer for tilføjede filer"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
-msgstr ""
+msgstr "sæt NAVN som gruppe for tilføjede filer"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
-msgstr ""
+msgstr "DATO-ELLER-FIL"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
-msgstr ""
+msgstr "sæt modificeringstid på tilføjede filer fra DATO-ELLER-FIL"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
-msgstr ""
+msgstr "RETTIGHEDER"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
-msgstr ""
+msgstr "sæt (symbolske) RETTIGHEDER for tilføjede filer"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
-msgstr ""
+msgstr "METODE"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
+"bevar accesstider på arkiverede filer, enten ved at genskabe tiderne efter "
+"læsning (METODE=\"replace\", standardværdi) eller ved at ikke sætte tiderne "
+"overhovedet (METODE=\"system\")"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
-msgstr ""
+msgstr "udpak ikke filers modificeringstid"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
+"forsøg at udpakke filer til samme ejere som i arkivet (standardværdi for "
+"superbrugeren)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
+"udpak filer med dig selv som ejer (standardværdi for almindelige brugere)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
-msgstr ""
+msgstr "brug altid tal for bruger- og gruppnavn"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
-msgstr ""
+msgstr "udpak information om filrettigheder (standardværdi for superbrugeren)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
+"anvend brugerens umask når rettigheder udpakkes fra arkivet (standardværdi "
+"for almindelige brugere)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
-msgstr ""
+msgstr "sortér navne som skal udpakkes så de passer med arkivet"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
-msgstr ""
+msgstr "samme som både -p og -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
+"udsæt sætning af modifikationstider og rettigheder på udpakkede kataloger "
+"til slutningen på arkivudpakningen."
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
-msgstr ""
+msgstr "fjern effekten af flaget --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
-msgstr ""
+msgstr "Enhedsvalg og enhedsskift:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
-msgstr ""
+msgstr "ARKIV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
-msgstr ""
+msgstr "brug arkivfil eller enhed ARKIV"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
-msgstr ""
+msgstr "arkivfilen er lokal selv om navnet har et kolon"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
-msgstr ""
+msgstr "brug KOMMANDO i stedet for rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
-msgstr ""
+msgstr "brug ekstern KOMMANDO i stedet for rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
-msgstr ""
+msgstr "angiv enhed og densitet"
 
-#: src/tar.c:556
-#, fuzzy
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
-msgstr "Kan ikke verificere arkiv som går over flere delarkiver"
+msgstr "opret/vis/udpak et flerdelarkiv"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
-msgstr ""
+msgstr "skift bånd efter at NUMMER x 1024 byte er skrevet"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
-msgstr ""
+msgstr "kør kommandofil ved slutningen af hvert bånd (flaget -M sættes også)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
-msgstr ""
+msgstr "brug/opdatér delarkivnummer i FIL"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
-msgstr ""
+msgstr "Blokhåndtering:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
-msgstr ""
+msgstr "BLOK"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
-msgstr ""
+msgstr "BLOK x 512 byte per post"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
-msgstr ""
+msgstr "ANTAL byte per post, deleligt med 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
-msgstr ""
+msgstr "ignorér blok med kun nultegn (betyder filslut)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
-msgstr ""
+msgstr "lav nye blokke ved læsning (for 4.2BSD-datakanaler)"
 
-#: src/tar.c:582
-#, fuzzy
+#: src/tar.c:583
 msgid "Archive format selection:"
-msgstr "Konflikt i flagene for arkiv-format"
+msgstr "Valg af arkivformat:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
-msgstr ""
+msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
-msgstr ""
+msgstr "opret et arkiv med det angivne format"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
-msgstr ""
+msgstr "FORMAT er et af følgende:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
-msgstr ""
+msgstr "gammelt V7-format"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
-msgstr ""
+msgstr "GNU-format for tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
-msgstr ""
+msgstr "Format fra GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
-msgstr ""
+msgstr "POSIX 1003.1-1988 (ustar) format"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
-msgstr ""
+msgstr "POSIX 1003.1-2001 (pax) format"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
-msgstr ""
+msgstr "samme som pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
-msgstr ""
+msgstr "samme som --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
-msgstr ""
+msgstr "samme som --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
-msgstr ""
+msgstr "nøgleord[[:]=værdi][,nøgleord[[:]=værdi]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
-msgstr ""
+msgstr "angiv nøgleord for pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
-msgstr ""
+msgstr "TEKST"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
+"opret et arkiv med delarkivnavnet TEKST. Ved visning/udpakning er TEKST et "
+"skálmønster (\"globbing\") for delarkivnavn"
 
-#: src/tar.c:613
-#, fuzzy
+#: src/tar.c:614
 msgid "Compression options:"
-msgstr "Konflikt i komprimeringsflag"
+msgstr "Komprimeringsflag:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
-msgstr ""
+msgstr "brug arkivsuffix til at bestemme komprimeringsprogrammet"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
-msgstr ""
+msgstr "brug ikke arkivsuffix til at bestemme komprimeringsprogrammet"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
-msgstr ""
+msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
-msgstr ""
+msgstr "filtrér med PROG (skal acceptere -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
-msgstr ""
+msgstr "Lokalt filvalg:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
-msgstr ""
+msgstr "tilføj angivet FIL til arkivet (brugbart hvis FIL begynder med \"-\")"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
-msgstr ""
+msgstr "KATALOG"
 
-#: src/tar.c:641
-#, fuzzy
+#: src/tar.c:642
 msgid "change to directory DIR"
-msgstr "Kan ikke ændre arbejdskatalog"
+msgstr "gå til arbejdskatalog KATALOG"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
-msgstr ""
+msgstr "hent navne at udpakke eller oprette fra FIL"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
-msgstr ""
+msgstr "-T læser navne adskilt med nultegn, deaktivér -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
-msgstr ""
+msgstr "fjern effekten af foregående --null-flag"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
-msgstr ""
+msgstr "afcitér filnavne som blev læst med -T (standardværdi)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
-msgstr ""
+msgstr "afcitér ikke filnavne som blev læst med -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
-msgstr ""
+msgstr "MØNSTER"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
-msgstr ""
+msgstr "udelad filer som matcher MØNSTER"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
-msgstr ""
+msgstr "udelad filer som matcher mønster listet i FIL"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
+"udelad indholdet i kataloger som indeholder CACHEDIR.TAG, undtagen "
+"mærkefilen CACHEDIR.TAG selv"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
-msgstr ""
+msgstr "udelad alt i kataloger som indeholder CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
-msgstr ""
+msgstr "udelad kataloger som indeholder CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
-msgstr ""
+msgstr "udelad indholdet i kataloger som indeholder FIL, undtagen FIL selv"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
-msgstr ""
+msgstr "udelad alting i kataloger som indeholder FIL"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
-msgstr ""
+msgstr "udelad kataloger som indeholder FIL"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
-msgstr ""
+msgstr "udelad kataloger fra versionshåndteringssystemer"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "udelad sikkerhedskopier og låsefiler"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
-msgstr ""
+msgstr "gå ikke ned i kataloger automatisk"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
-msgstr ""
+msgstr "skift ikke filsystem når arkivet oprettes"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
-msgstr ""
+msgstr "gå rekursivt ned i kataloger (standardværdi)"
 
-#: src/tar.c:682
-#, fuzzy
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
-msgstr "Fjerner indledende '/' fra absolutte lænker"
+msgstr "fjern ikke indledende '/' fra filnavne"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
-msgstr ""
+msgstr "følg symbolske lænker, arkivér filerne de peger på"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
-msgstr ""
+msgstr "følg hårde lænker, arkivér filerne de peger på"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
-msgstr ""
+msgstr "MEDLEMSNAVN"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
-msgstr ""
+msgstr "begynd med medlem MEDLEMSNAVN i arkivet"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
-msgstr ""
+msgstr "arkivér kun filer nyere end DATO-ELLER-FIL"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
-msgstr ""
+msgstr "DATO"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
-msgstr ""
+msgstr "sammenlign kun dato og tid for dataændringer"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
-msgstr ""
+msgstr "KONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
-msgstr ""
+msgstr "lav sikkerhedskopier før fjernelse, vælg type af versionshåndtering"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
-msgstr ""
+msgstr "STRENG"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
+"lav sikkerhedskopier før fjernelse, erstat den normale sikkerhedskopiendelse "
+"(\"~\" hvis ikke ændret med miljøvariablen SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
-msgstr ""
+msgstr "Filnavnstransformationer:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
-msgstr ""
+msgstr "fjern ANTAL indledende komponenter fra filnavne ved udpakning"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
-msgstr ""
+msgstr "UDTRYK"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
-msgstr ""
+msgstr "brug sed's erstatnings-UDTRYK for at transformere filnavne"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
+"Flag for match af filnavne (påvirker både ekskluderings- og "
+"inkluderingsmønstre):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
-msgstr ""
+msgstr "ingen forskel på store og små bogstaver"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
-msgstr ""
+msgstr "mønstre skal matche med begyndelsen på filnavne"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
+"mønstre matches efter \"/\" i filnavne (standardværdi ved ekskludering)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
-msgstr ""
+msgstr "match store og små bogstaver forskelligt (standardværdi)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
-msgstr ""
+msgstr "brug jokertegn (standardværdi for ekskludering)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
-msgstr ""
+msgstr "ordret strengsammenligning"
 
-#: src/tar.c:728
-#, fuzzy
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
-msgstr "Volumenet '%s' stemmer ikke overens med %s"
+msgstr "jokertegn matcher ikke \"/\""
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
-msgstr ""
+msgstr "jokertegn matcher \"/\" (standardværdi for ekskludering)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
-msgstr ""
+msgstr "Informativ udskrift:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
-msgstr ""
+msgstr "vís navne på alle filer som bliver behandlet"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "NØGLEORD"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
-msgstr ""
+msgstr "advarselskontrol"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
+"vis forløbsmeddelelser efter hver gruppe af ANTAL poster (standardværdi 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
-msgstr ""
+msgstr "HANDLING"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
-msgstr ""
+msgstr "udfør HANDLING ved hvert kontrolpunkt"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
-msgstr ""
+msgstr "vis en meddelelse hvis ikke alle lænker bliver arkiveret"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
-msgstr ""
+msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
 "SIGQUIT, SIGINT, SIGUSR1 and SIGUSR2; the names without SIG prefix are also "
 "accepted"
 msgstr ""
+"skriv totalt antal byte efter arkivet er blevet behandlet. Med et argument - "
+"skrives totalt antal byte når SIGNAL levereres. Tilladte signaler er: "
+"SIGHUP, SIGQUIT, SIGINT, SIGUSR1 coh SIGUSR2. Navne uden SIG-præfix "
+"accepteres også."
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
-msgstr ""
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "vis filers modificeringstid i UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "vis fuld opløsning på filtider"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
-msgstr ""
+msgstr "send informative meddelelser til FIL"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
-msgstr ""
+msgstr "vis bloknummer i arkivet for hver meddelelse"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
-msgstr ""
+msgstr "bed om bekræftelse for hver handling"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
-msgstr ""
+msgstr "vis standardværdier for \"tar\""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
+"ved visning eller udpakning vises hvert katalog som ikke matcher "
+"søgekriterium"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
-msgstr ""
+msgstr "vis fil- eller arkivnavne efter transformering"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
-msgstr ""
+msgstr "STÍL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
-msgstr ""
+msgstr "sæt citatstíl for navne. Se nedenfor for gyldige værdier på STÍL."
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
-msgstr ""
+msgstr "citér også tegn i STRENG"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
-msgstr ""
+msgstr "citér ikke tegn fra STRENG"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
-msgstr ""
+msgstr "Kompatibilitetsflag:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
+"ved oprettelse det samme som --old-archive; ved udpakning det samme som --no-"
+"same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
-msgstr ""
+msgstr "Andre flag:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
-msgstr ""
+msgstr "begræns brugen af potentielt farlige flag"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Du kan ikke angive mere end et af '-Acdtrux'-flagene"
+msgstr ""
+"Du kan ikke angive mere end et af '-Acdtrux' eller `--test-label' flagene"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Konflikt i komprimeringsflag"
 
-#: src/tar.c:993
-#, fuzzy, c-format
+#: src/tar.c:996
+#, c-format
 msgid "Unknown signal name: %s"
-msgstr " ukendt filtype %s\n"
+msgstr "Ukendt signalnavn: %s"
 
-#: src/tar.c:1017
-#, fuzzy
+#: src/tar.c:1020
 msgid "Date sample file not found"
-msgstr "Datofil ikke fundet"
+msgstr "Tidsfil blev ikke fundet"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Erstatter %s for ukendt dato-format %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
-msgstr ""
+msgstr "Flag %s: Behandler tidsangivelse \"%s\" som %s"
 
-#: src/tar.c:1132
-#, fuzzy, c-format
+#: src/tar.c:1135
+#, c-format
 msgid "%s: file list already read"
-msgstr "%s: fil er det samme som arkivet; ikke lagret"
+msgstr "%s: filliste allerede læst"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
-msgstr ""
+msgstr "%s: filnavnet som læstes indeholder nultegn"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "%s: fil er det samme som arkivet; ikke lagret"
+msgstr "filtrér arkivet igennem %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
-msgstr ""
+msgstr "Gyldige argumenter til flaget --quoting-style er:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
+"\n"
+"*Denne* tar har standardværdierne:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Ugyldig blokfaktor"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Ugyldig båndlængde"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr ""
+msgstr "Fejlagtig værdi for inkrementelt niveau"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Mere end én grænse-dato"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
-msgstr ""
+msgstr "Ugyldig version for filer med huller"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
-msgstr ""
+msgstr "--atime-preserve=\"system\" understøttes ikke på denne platform"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
-msgstr ""
+msgstr "--checkpoint-værdien er ikke et heltal"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s: ugyldig gruppe"
+msgstr "Ugyldig gruppe"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Ugyldig modus angivet i flag"
 
-#: src/tar.c:1894
-#, fuzzy
+#: src/tar.c:1912
 msgid "Invalid number"
-msgstr "Ugyldigt inode-nummer"
+msgstr "Ugyldigt nummer"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Ugyldig ejer"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
+"Flaget --preserve er forældet, brug --preserve-permissions --preserve-order "
+"i stedet"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Ugyldig poststørrelse"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Poststørrelse skal være deleligt med %d."
 
-#: src/tar.c:2000
-#, fuzzy
+#: src/tar.c:2019
 msgid "Invalid number of elements"
-msgstr "Ugyldig båndlængde"
+msgstr "Ugyldigt antal elementer"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
-msgstr ""
+msgstr "Kun ét --to-command flag tilladt"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
-msgstr ""
+msgstr "Ugyldig densitetsangivelse: %s"
 
-#: src/tar.c:2126
-#, fuzzy, c-format
+#: src/tar.c:2145
+#, c-format
 msgid "Unknown density: `%c'"
-msgstr "Ukendt mønster '%s'"
+msgstr "Ukendt densitet: '%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr ""
 "Flagene '-[0-7][lmh]' understøttes ikke af *denne* implementering af tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
-msgstr ""
+msgstr "[FIL]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Gammelt flag '%c' behøver et argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
-msgstr ""
+msgstr "--occurrence er meningsløs uden en filliste"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
-msgstr ""
+msgstr "--occurrence kan ikke bruges i den ønskede operationstilstand."
 
-#: src/tar.c:2379
-#, fuzzy
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Ved flere arkivfiler kræves '-M'-flaget"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Kan ikke kombinere --listed-incremental med --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr ""
+msgstr "--level er meningsløs uden --listed-incremental"
 
-#: src/tar.c:2404
-#, fuzzy, c-format
+#: src/tar.c:2423
+#, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
-msgstr[0] "%s: etikette på delarkiv er for lang (grænse er %lu byte)"
-msgstr[1] "%s: etikette på delarkiv er for lang (grænse er %lu byte)"
+msgstr[0] "%s: etiket på delarkiv er for lang (grænse er %lu byte)"
+msgstr[1] "%s: etiket på delarkiv er for lang (grænse er %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Kan ikke verificere arkiv som går over flere delarkiver"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Kan ikke verificere komprimerede arkiver"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Kan ikke bruge komprimerede arkiver som går over flere delarkiver"
 
-#: src/tar.c:2431
-#, fuzzy
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
-msgstr "Kan ikke opdatere komprimerede arkiver"
+msgstr "Kan ikke sammenlægge (konkatenere) komprimerede arkiver"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
-msgstr ""
+msgstr "--pax-option kan kun bruges på POSIX-arkiver"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
-msgstr ""
+msgstr "Delarkivlængden kan ikke være mindre end poststørrelsen"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
-msgstr ""
+msgstr "--preserve-order er ikke kompatibel med --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Nægter stædigt at oprette et tomt arkiv"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Flagene '-Aru' er inkompatible med '-f -'"
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "Du skal angive et af '-Acdtrux'-flagene"
+msgstr "Du skal angive et af '-Acdtrux' eller '--test-label' flagene"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
-msgstr ""
+msgstr "Afslutter med fejlstatus på grund af tidligere fejl"
 
 #: src/update.c:86
-#, fuzzy, c-format
+#, c-format
 msgid "%s: File shrank by %s byte"
 msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Filen formindskedes med %s byte"
 msgstr[1] "%s: Filen formindskedes med %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
-msgstr ""
+msgstr "Nøgleordet %s er ukendt eller ikke implementeret endnu"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "Tidsstempel uden for område"
+msgstr "Tidsstempel udenfor tilladt interval"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
-msgstr ""
+msgstr "Mønster %s kan ikke bruges"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
-msgstr ""
+msgstr "Nøgleord %s kan ikke erstattes"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: længden mangles"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
-msgstr ""
+msgstr "Længde på udvidet hoved er udenfor gyldigt interval"
 
-#: src/xheader.c:556
-#, fuzzy, c-format
+#: src/xheader.c:557
+#, c-format
 msgid "Extended header length %*s is out of range"
-msgstr "Arkiv base-64 streng med fortegn %s er uden for %s område"
+msgstr "Længde %*s på udvidet hoved er udenfor gyldigt interval"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: blanktegn efter længdangivelse mangles"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: ligmedtegn mangles"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: nylinje mangles"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
-msgstr ""
+msgstr "Ignorerer nøgleord \"%s\" i udvidet hoved"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
-msgstr ""
+msgstr "Genereret nøgle/værdi-par er for langt (nøgle=%s, længde=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
-#, fuzzy, c-format
+#: src/xheader.c:863
+#, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
-msgstr "Arkiv værdi %s er udenfor %s område %s..%s"
+msgstr "Udvidet hoved %s=%s er udenfor intervallet %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: ugyldig %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: for mange %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: ugyldigt %s: uventet skilletegn %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
-msgstr ""
+msgstr "Fejlagtigt udvidet hoved: ugyldigt %s: ulige antal værdier"
 
 #: src/checkpoint.c:107
-#, fuzzy, c-format
+#, c-format
 msgid "%s: not a valid timeout"
-msgstr "%s: ugyldig gruppe"
+msgstr "%s: ugyldig tidsudløb"
 
 #: src/checkpoint.c:112
 #, c-format
 msgid "%s: unknown checkpoint action"
-msgstr ""
+msgstr "%s: ukendt kontrolpunktshandling"
 
 #: src/checkpoint.c:132
-#, fuzzy
 msgid "write"
-msgstr "skrivefejl"
+msgstr "skrive"
 
 #: src/checkpoint.c:132
 msgid "read"
-msgstr ""
+msgstr "læse"
 
 #. TRANSLATORS: This is a ``checkpoint of write operation'',
 #. *not* ``Writing a checkpoint''.
 #. E.g. in Spanish ``Punto de comprobaci@'on de escritura'',
 #. *not* ``Escribiendo un punto de comprobaci@'on''
 #: src/checkpoint.c:222
-#, fuzzy, c-format
+#, c-format
 msgid "Write checkpoint %u"
-msgstr "Skriver kontrolpunkt %d"
+msgstr "Skrivekontrolpunkt %u"
 
 #. TRANSLATORS: This is a ``checkpoint of read operation'',
 #. *not* ``Reading a checkpoint''.
 #. E.g. in Spanish ``Punto de comprobaci@'on de lectura'',
 #. *not* ``Leyendo un punto de comprobaci@'on''
 #: src/checkpoint.c:228
-#, fuzzy, c-format
+#, c-format
 msgid "Read checkpoint %u"
-msgstr "Læser kontrolpunkt %d"
+msgstr "Læsekontrolpunkt %u"
 
-#: tests/genfile.c:112
-#, fuzzy
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
-msgstr "Generér datafiler for GNU tar testpakke.\n"
+msgstr ""
+"genfile bearbejder datafiler i testsuiten for GNU paxutils.\n"
+"FLAG er:\n"
 
-#: tests/genfile.c:128
-#, fuzzy
+#: tests/genfile.c:127
 msgid "File creation options:"
-msgstr "Konflikt i komprimeringsflag"
+msgstr "Flag for filoprettelse:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
-msgstr ""
+msgstr "STØRRELSE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
-msgstr ""
+msgstr "Opret en fil med angivet STØRRELSE"
 
-#: tests/genfile.c:132
-#, fuzzy
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
-msgstr "Fejl ved skrivning til standard uddata"
+msgstr "Skriv til filen NAVN i stedet for til standard-ud"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
-msgstr ""
+msgstr "Læs filnavne fra FIL"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
-msgstr ""
+msgstr "-T læser navne adskilte med nultegn"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
-msgstr ""
+msgstr "Fyld filen med det angivne MØNSTER. MØNSTER er 'default' eller 'zeros'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
-msgstr ""
+msgstr "Størrelse af en blok for filer med huller"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
-msgstr ""
+msgstr "Generér fil med huller. Resten af kommandolinjen giver filmapningen."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
-msgstr ""
+msgstr "POSITION"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
-msgstr ""
+msgstr "Flyt til given position inden data skrives"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
-msgstr ""
+msgstr "Flag for filstatistik:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
+"Vís indholdet i \"struct stat\" for hver given fil. Standardværdi på FORMAT "
+"er:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
-msgstr ""
+msgstr "Flag for synkron udførelse:"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [FLAG...}"
+msgstr "FLAG"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
+"Udfør ARGUMENTER. Nyttigt ved --checkpoint og en af --cut, --append, --"
+"touch, --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
-msgstr ""
+msgstr "Udfør angivet handling (se nedenfor) når kontrolpunkt NUMMER nås"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
-msgstr ""
+msgstr "Sæt dato for næste --touch flag"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
-msgstr ""
+msgstr "Vís udførte kontrolpunkter og slutstatus på KOMMANDO"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
+"Synkront udførte handlinger. Disse udføres når kontrolpunktnummeret givet "
+"med flaget --checkpoint nås."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
+"Afkort FIL til størrelsen givet med det foregående --length flag (eller 0 "
+"hvis det ikke er angivet)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
+"Tilføj STØRRELSE antal byte til FIL. STØRRELSE er givet med foregående --"
+"length flag."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
-msgstr ""
+msgstr "Opdatér acces- og modifikationstider for FIL"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
-msgstr ""
+msgstr "Udfør KOMMANDO"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "Fjern (unlink) FIL"
 
-#: tests/genfile.c:245
-#, fuzzy, c-format
+#: tests/genfile.c:244
+#, c-format
 msgid "Invalid size: %s"
-msgstr "Ugyldigt tidsstempel"
+msgstr "Ugyldig størrelse %s"
 
-#: tests/genfile.c:250
-#, fuzzy, c-format
+#: tests/genfile.c:249
+#, c-format
 msgid "Number out of allowed range: %s"
-msgstr "Inode-nummer uden for område"
+msgstr "Nummer udenfor tilladt interval: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
-msgstr ""
+msgstr "Negativ størrelse: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
-msgstr ""
+msgstr "status (stat) kunne ikke tages på %s"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
-msgstr ""
+msgstr "ønsket fillængde %lu, virkelig %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
-msgstr ""
+msgstr "oprettet fil har ikke huller"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
-msgstr ""
+msgstr "Fejl ved fortolkning af tal nær \"%s\""
 
-#: tests/genfile.c:368
-#, fuzzy, c-format
+#: tests/genfile.c:367
+#, c-format
 msgid "Unknown date format"
-msgstr "Ukendt systemfejl"
+msgstr "Ukendt datoformat"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
-msgstr ""
+msgstr "[ARGUMENTER...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
-#, fuzzy, c-format
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
+#, c-format
 msgid "cannot open `%s'"
-msgstr "kan ikke ændre ejer (chown) '%s'"
+msgstr "kan ikke åbne '%s'"
 
-#: tests/genfile.c:435
-#, fuzzy
+#: tests/genfile.c:434
 msgid "cannot seek"
-msgstr "Kan ikke lukke"
+msgstr "Kan ikke søge"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
-msgstr ""
+msgstr "filnavnet indeholder nultegn"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
-msgstr ""
+msgstr "kan ikke oprette filer med huller til standard-ud, brug flaget --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
-msgstr ""
+msgstr "fejlagtig maske (nær \"%s\")"
 
-#: tests/genfile.c:601 tests/genfile.c:634
-#, fuzzy, c-format
+#: tests/genfile.c:600 tests/genfile.c:633
+#, c-format
 msgid "Unknown field `%s'"
-msgstr "Ukendt mønster '%s'"
+msgstr "Ukendt felt '%s'"
 
-#: tests/genfile.c:661
-#, fuzzy, c-format
+#: tests/genfile.c:660
+#, c-format
 msgid "cannot set time on `%s'"
-msgstr "kan ikke oprette kataloget '%s'"
+msgstr "kan ikke sætte tid på \"%s\""
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "kan ikke ændre ejer (chown) '%s'"
+msgstr "kan ikke fjerne (unlink) \"%s\""
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
-msgstr ""
+msgstr "Kommandoen afsluttedes uden fejl\n"
 
-#: tests/genfile.c:828
-#, fuzzy, c-format
+#: tests/genfile.c:827
+#, c-format
 msgid "Command failed with status %d\n"
-msgstr "Underproces døde med signal %d"
+msgstr "Kommandoen mislykkedes med slutstatus %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
-msgstr ""
+msgstr "Kommandoen termineredes af signal %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
-msgstr ""
+msgstr "Kommandoen stoppedes af signal %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
-msgstr ""
+msgstr "Kommandoen dumpede hukommelsen\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
-msgstr ""
+msgstr "Kommandoen afsluttedes\n"
 
-#: tests/genfile.c:872
-#, fuzzy, c-format
+#: tests/genfile.c:871
+#, c-format
 msgid "--stat requires file names"
-msgstr "--Ødelagte filnavne--\n"
-
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s: ulovligt flag -- %c\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to <%s>.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Rapportér fejl til <bugs-tar@gnu.org>.\n"
-
-#~ msgid "Reading %s\n"
-#~ msgstr "Læser %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Fejl kan ikke reddes; afslutter nu"
-
-#, fuzzy
-#~ msgid "filter the archive through compress"
-#~ msgstr "%s: fil er det samme som arkivet; ikke lagret"
-
-#, fuzzy
-#~ msgid "filter the archive through lzma"
-#~ msgstr "%s: fil er det samme som arkivet; ikke lagret"
-
-#, fuzzy
-#~ msgid "filter the archive through lzop"
-#~ msgstr "%s: fil er det samme som arkivet; ikke lagret"
-
-#~ msgid "rmtd: Cannot allocate buffer space\n"
-#~ msgstr "rmtd: Kan ikke allokere plads til buffer\n"
-
-#~ msgid "Cannot allocate buffer space"
-#~ msgstr "Kan ikke allokere plads til buffer"
-
-#~ msgid "Try `%s --help' for more information.\n"
-#~ msgstr "Prøv '%s --help' for mere information.\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "Usage: %s [OPTION]\n"
-#~ "Manipulate a tape drive, accepting commands from a remote process.\n"
-#~ "\n"
-#~ "  --version  Output version info.\n"
-#~ "  --help     Output this help.\n"
-#~ msgstr ""
-#~ "Brug: %s [FLAG]\n"
-#~ "Behandl en båndstation, med kommandoer fra en anden proces.\n"
-#~ "\n"
-#~ "      --help            vis denne hjælpetekst\n"
-#~ "      --version         vis programversion\n"
-
-#, fuzzy
-#~ msgid "Seek offset error"
-#~ msgstr "Søgeposition uden for område"
-
-#~ msgid "Premature end of file"
-#~ msgstr "For tidlig filafslutning"
-
-#~ msgid "block size"
-#~ msgstr "blokstørrelse"
-
-#~ msgid "Cannot dup"
-#~ msgstr "Kan ikke starte ny proces med 'dup'"
-
-#~ msgid "Cannot use compressed or remote archives"
-#~ msgstr ""
-#~ "Kan ikke bruge komprimerede arkiver eller arkiver på en anden maskine"
-
-#~ msgid "tar (child)"
-#~ msgstr "tar (underproces)"
-
-#~ msgid "tar (grandchild)"
-#~ msgstr "tar (under-underproces)"
-
-#~ msgid "Cannot allocate memory for blocking factor %d"
-#~ msgstr "Kunne ikke allokere hovedlager for blok-faktor %d"
-
-#~ msgid "WARNING: No volume header"
-#~ msgstr "ADVARSEL: Manglende delarkivhoved"
-
-#~ msgid "Child returned status %d"
-#~ msgstr "Underproces afsluttede med status %d"
-
-#~ msgid "Member names contain `..'"
-#~ msgstr "Medlemsnavne indeholder '..'"
-
-#~ msgid "%s: Member name contains `..'"
-#~ msgstr "%s: Medlemsnavne indeholder '..'"
-
-#~ msgid "Visible long name error"
-#~ msgstr "Fejl på et langt navn"
-
-#~ msgid "Device number out of range"
-#~ msgstr "Enhedsnummer er uden for område"
-
-#~ msgid "Visible longname error"
-#~ msgstr "Fejl på et langt navn"
-
-#~ msgid "Renamed %s to %s"
-#~ msgstr "Omdøbt %s til %s"
-
-#~ msgid "%s: Cannot symlink to %s"
-#~ msgstr "%s: Kan ikke oprette symbolsk lænke til %s"
-
-#~ msgid "Symlinked %s to %s"
-#~ msgstr "Lænkede %s symbolsk til %s"
-
-#~ msgid "Unknown demangling command %s"
-#~ msgstr "Ukendt kommando %s ved rekonstruering af navn"
-
-#~ msgid "Missing file name after -C"
-#~ msgstr "Mangler filnavn efter -C"
-
-#~ msgid ""
-#~ "This program comes with NO WARRANTY, to the extent permitted by law.\n"
-#~ "You may redistribute it under the terms of the GNU General Public "
-#~ "License;\n"
-#~ "see the file named COPYING for details."
-#~ msgstr ""
-#~ "Dette program kommer UDEN GARANTI, i den grad som dette er tilladt ved "
-#~ "lov.\n"
-#~ "Du må redistribuere det under betingelsene i GNU General Public License;\n"
-#~ "se filen kaldet COPYING for detaljer."
-
-#~ msgid "rmtd: Garbage command %c\n"
-#~ msgstr "rmtd: Ugyldig kommando %c\n"
-
-#~ msgid ""
-#~ "GNU `tar' saves many files together into a single tape or disk archive, "
-#~ "and\n"
-#~ "can restore individual files from the archive.\n"
-#~ msgstr ""
-#~ "GNU 'tar' gemmer mange filer i et arkiv, og kan hente enkeltstående\n"
-#~ "filer ud af arkivet.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "If a long option shows an argument as mandatory, then it is mandatory\n"
-#~ "for the equivalent short option also.  Similarly for optional arguments.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Dersom et langt flag har et obligatorisk argument, er argumentet også\n"
-#~ "obligatorisk for det korte flag. Tilsvarende gælder dersom argumentet\n"
-#~ "kan sløjfes.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Main operation mode:\n"
-#~ "  -t, --list              list the contents of an archive\n"
-#~ "  -x, --extract, --get    extract files from an archive\n"
-#~ "  -c, --create            create a new archive\n"
-#~ "  -d, --diff, --compare   find differences between archive and file "
-#~ "system\n"
-#~ "  -r, --append            append files to the end of an archive\n"
-#~ "  -u, --update            only append files newer than copy in archive\n"
-#~ "  -A, --catenate          append tar files to an archive\n"
-#~ "      --concatenate       same as -A\n"
-#~ "      --delete            delete from the archive (not on mag tapes!)\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Hovedoperationsmodi:\n"
-#~ "  -t, --list              list indholdet af arkivet\n"
-#~ "  -x, --extract, --get    udtræk filer fra arkivet\n"
-#~ "  -c, --create            oprette et nyt arkiv\n"
-#~ "  -d, --diff, --compare   vis forskelle mellem arkivet og filsystemet\n"
-#~ "  -r, --append            tilføj filer ved slutningen af arkivet\n"
-#~ "  -u, --update            tilføj kun filer som er nyere end dem i "
-#~ "arkivet\n"
-#~ "  -A, --catenate          føj en arkivfil til arkivet\n"
-#~ "      --concatenate       samme som -A\n"
-#~ "      --delete            slet fra arkivet (ikke for arkiv på bånd!)\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Operation modifiers:\n"
-#~ "  -W, --verify               attempt to verify the archive after writing "
-#~ "it\n"
-#~ "      --remove-files         remove files after adding them to the "
-#~ "archive\n"
-#~ "  -k, --keep-old-files       don't replace existing files when "
-#~ "extracting\n"
-#~ "      --overwrite            overwrite existing files when extracting\n"
-#~ "      --overwrite-dir        overwrite directory metadata when "
-#~ "extracting\n"
-#~ "  -U, --unlink-first         remove each file prior to extracting over "
-#~ "it\n"
-#~ "      --recursive-unlink     empty hierarchies prior to extracting "
-#~ "directory\n"
-#~ "  -S, --sparse               handle sparse files efficiently\n"
-#~ "  -O, --to-stdout            extract files to standard output\n"
-#~ "  -G, --incremental          handle old GNU-format incremental backup\n"
-#~ "  -g, --listed-incremental=FILE\n"
-#~ "                             handle new GNU-format incremental backup\n"
-#~ "      --ignore-failed-read   do not exit with nonzero on unreadable "
-#~ "files\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Flag for operationsmodi:\n"
-#~ "  -W, --verify               forsøg at verificere arkivet efter at have "
-#~ "skrevet det\n"
-#~ "      --remove-files         slet filer efter at have tilføjet dem til "
-#~ "arkivet\n"
-#~ "  -k, --keep-old-files       overskriv ikke eksisterende filer ved "
-#~ "udtræk\n"
-#~ "      --overwrite            overskriv eksisterende filer ved udtræk\n"
-#~ "      --overwrite-dir        overskriv metadata for kataloger ved udtræk\n"
-#~ "  -U, --unlink-first         slet alle filer før udtrækning til dem\n"
-#~ "      --recursive-unlink     tøm kataloger før udtrækning\n"
-#~ "  -S, --sparse               håndtér filer med huller mere effektivt\n"
-#~ "  -O, --to-stdout            udtræk filer til standard-ud\n"
-#~ "  -G, --incremental          brug det gamle GNU format for inkrementel\n"
-#~ "                             sikkerhedskopiering\n"
-#~ "  -g, --listed-incremental   brug det nye GNU-format for inkrementel\n"
-#~ "                             sikkerhedskopiering\n"
-#~ "      --ignore-failed-read   ignorér fejl under læsning af filer\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Handling of file attributes:\n"
-#~ "      --owner=NAME             force NAME as owner for added files\n"
-#~ "      --group=NAME             force NAME as group for added files\n"
-#~ "      --mode=CHANGES           force (symbolic) mode CHANGES for added "
-#~ "files\n"
-#~ "      --atime-preserve         don't change access times on dumped files\n"
-#~ "  -m, --modification-time      don't extract file modified time\n"
-#~ "      --same-owner             try extracting files with the same "
-#~ "ownership\n"
-#~ "      --no-same-owner          extract files as yourself\n"
-#~ "      --numeric-owner          always use numbers for user/group names\n"
-#~ "  -p, --same-permissions       extract permissions information\n"
-#~ "      --no-same-permissions    do not extract permissions information\n"
-#~ "      --preserve-permissions   same as -p\n"
-#~ "  -s, --same-order             sort names to extract to match archive\n"
-#~ "      --preserve-order         same as -s\n"
-#~ "      --preserve               same as both -p and -s\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Håndtering af filattributter:\n"
-#~ "      --owner=NAVN             brug NAVN som ejer for nye filer\n"
-#~ "      --gruppe=NAVN            brug NAVN som gruppe for nye filer\n"
-#~ "      --mode=OKTAL             brug OKTAL som modus for nye filer\n"
-#~ "      --atime-preserve         ændre ikke accesstider på tilføjede filer\n"
-#~ "  -m, --modification-time      udtræk ikke modificeringstiden\n"
-#~ "      --same-owner             forsøg at udtrække filer med samme ejer\n"
-#~ "      --numeric-owner          brug nummer for bruger/gruppe-navn\n"
-#~ "  -p, --same-permissions       forsøg at udtrække filer med samme\n"
-#~ "                               filbeskyttelse\n"
-#~ "      --preserve-permissions   samme som -p\n"
-#~ "  -s, --same-order             sorter navn som skal udtrækkes sådan at\n"
-#~ "                               de passer med arkivet\n"
-#~ "      --preserve-order         samme som -s\n"
-#~ "      --preserve               samme som både -p og -s\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Device selection and switching:\n"
-#~ "  -f, --file=ARCHIVE             use archive file or device ARCHIVE\n"
-#~ "      --force-local              archive file is local even if has a "
-#~ "colon\n"
-#~ "      --rsh-command=COMMAND      use remote COMMAND instead of rsh\n"
-#~ "  -[0-7][lmh]                    specify drive and density\n"
-#~ "  -M, --multi-volume             create/list/extract multi-volume "
-#~ "archive\n"
-#~ "  -L, --tape-length=NUM          change tape after writing NUM x 1024 "
-#~ "bytes\n"
-#~ "  -F, --info-script=FILE         run script at end of each tape (implies -"
-#~ "M)\n"
-#~ "      --new-volume-script=FILE   same as -F FILE\n"
-#~ "      --volno-file=FILE          use/update the volume number in FILE\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Enhedsvalg og enhedsskifte:\n"
-#~ "  -f, --file=ARKIV               brug arkivfil eller enhed ARKIV\n"
-#~ "      --force-local              arkivfil er lokal selv om den har et "
-#~ "kolon\n"
-#~ "      --rsh-command=KOMMANDO     brug KOMMANDO i stedet for rsh\n"
-#~ "  -[0-7][lmh]                    angiv enhed og tæthed\n"
-#~ "  -M, --multi-volume             behandl arkivet som et arkiv af flere "
-#~ "delarkiver\n"
-#~ "  -L, --tape-length=NUMMER       skift bånd efter at NUMMER x 1024 byte "
-#~ "er\n"
-#~ "                                 skrevet\n"
-#~ "  -F, --info-script=FIL          kør kommandofil FIL ved slutningen af "
-#~ "hvert\n"
-#~ "                                 bånd (sætter -M automatisk)\n"
-#~ "      --new-volume-script=FIL    samme som -F FIL\n"
-#~ "      --volno-file=FIL           brug/opdatér delarkivnummeret i FIL\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Device blocking:\n"
-#~ "  -b, --blocking-factor=BLOCKS   BLOCKS x 512 bytes per record\n"
-#~ "      --record-size=SIZE         SIZE bytes per record, multiple of 512\n"
-#~ "  -i, --ignore-zeros             ignore zeroed blocks in archive (means "
-#~ "EOF)\n"
-#~ "  -B, --read-full-records        reblock as we read (for 4.2BSD pipes)\n"
-#~ msgstr ""
-#~ "\n"
-#~ "blokhåndtering:\n"
-#~ "  -b, --blocking-factor=ENHEDER  sæt blokstørrelse ENHEDER x 512 byte\n"
-#~ "      --record-size=STØRRELSE    STØRRELSE byte per enhed (deleligt mad "
-#~ "512)\n"
-#~ "  -i, --ignore-zeros             ignorér blokke som indeholder nuller\n"
-#~ "                                 (betyder filafslutning)\n"
-#~ "  -B, --read-full-records        omblok ved læsning (for 4.2BSD "
-#~ "datakanaler)\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Archive format selection:\n"
-#~ "  -V, --label=NAME                   create archive with volume name "
-#~ "NAME\n"
-#~ "              PATTERN                at list/extract time, a globbing "
-#~ "PATTERN\n"
-#~ "  -o, --old-archive, --portability   write a V7 format archive\n"
-#~ "      --posix                        write a POSIX format archive\n"
-#~ "  -j, --bzip2                        filter the archive through bzip2\n"
-#~ "  -z, --gzip, --ungzip               filter the archive through gzip\n"
-#~ "  -Z, --compress, --uncompress       filter the archive through compress\n"
-#~ "      --use-compress-program=PROG    filter through PROG (must accept -"
-#~ "d)\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Valg af arkivformat:\n"
-#~ "  -V, --label=NAVN                   lav et arkiv med delarkivnavn NAVN\n"
-#~ "              MØNSTER                filer som skal medtages ved listning "
-#~ "eller\n"
-#~ "                                     udtrækning (tilladt med jokertegn)\n"
-#~ "  -o, --old-archive, --portability   lav et arkiv i V7 format\n"
-#~ "      --posix                        lav et arkiv i POSIX format\n"
-#~ "  -j, --bzip2                        send arkivet gennem bzip2\n"
-#~ "  -z, --gzip, --ungzip               send arkivet gennem gzip\n"
-#~ "  -Z, --compress, --uncompress       send arkivet gennem compress\n"
-#~ "      --use-compress-program=PROG    send arkivet gennem PROG (skal "
-#~ "forstå -d)\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Local file selection:\n"
-#~ "  -C, --directory=DIR          change to directory DIR\n"
-#~ "  -T, --files-from=NAME        get names to extract or create from file "
-#~ "NAME\n"
-#~ "      --null                   -T reads null-terminated names, disable -"
-#~ "C\n"
-#~ "      --exclude=PATTERN        exclude files, given as a PATTERN\n"
-#~ "  -X, --exclude-from=FILE      exclude patterns listed in FILE\n"
-#~ "      --anchored               exclude patterns match file name start "
-#~ "(default)\n"
-#~ "      --no-anchored            exclude patterns match after any /\n"
-#~ "      --ignore-case            exclusion ignores case\n"
-#~ "      --no-ignore-case         exclusion is case sensitive (default)\n"
-#~ "      --wildcards              exclude patterns use wildcards (default)\n"
-#~ "      --no-wildcards           exclude patterns are plain strings\n"
-#~ "      --wildcards-match-slash  exclude pattern wildcards match "
-#~ "'/' (default)\n"
-#~ "      --no-wildcards-match-slash exclude pattern wildcards do not match "
-#~ "'/'\n"
-#~ "  -P, --absolute-names         don't strip leading `/'s from file names\n"
-#~ "  -h, --dereference            dump instead the files symlinks point to\n"
-#~ "      --no-recursion           avoid descending automatically in "
-#~ "directories\n"
-#~ "  -l, --one-file-system        stay in local file system when creating "
-#~ "archive\n"
-#~ "  -K, --starting-file=NAME     begin at file NAME in the archive\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Valg af lokale filer:\n"
-#~ "  -C, --directory=KATALOG      ændr katalog til KATALOG\n"
-#~ "  -T, --files-from=FIL         hent navn for udtrækning eller arkivering\n"
-#~ "                               fra filen FIL\n"
-#~ "      --null                   -T læser nul-terminerede navne, tillader "
-#~ "ikke -C\n"
-#~ "      --exclude=MØNSTER        medtag ikke filer (tilladt med jokertegn)\n"
-#~ "  -X, --exclude-from=FIL       medtag ikke filer navngivne i filen FIL\n"
-#~ "                               (tilladt med jokertegn)\n"
-#~ "      --anchored               udeladelsesmønstre passer med "
-#~ "filnavnsstart (standard)\n"
-#~ "      --no-anchored            udeladelsesmønstre passer på navne efter "
-#~ "ethvert /\n"
-#~ "      --ignore-case            udeladelse behandler store og små "
-#~ "bogstaver ens\n"
-#~ "      --no-ignore-case         udeladelse behandler store og små "
-#~ "bogstaver forskelligt (standard)\n"
-#~ "      --wildcards              udeladelsesmønstre bruger jokertegn "
-#~ "(standard)\n"
-#~ "      --no-wildcards           udeladelsesmønstre er rene strenge\n"
-#~ "      --wildcards-match-slash  udeladelsesmønstre med jokertegn passer "
-#~ "med '/' (default)\n"
-#~ "      --no-wildcards-match-slash udeladelsesmønstre med jokertegn passer "
-#~ "ikke med '/'\n"
-#~ "  -P, --absolute-names         fjern ikke indledende '/' fra filnavn\n"
-#~ "  -h, --dereference            arkivér istedet det som symbolske lænker "
-#~ "peger på\n"
-#~ "      --no-recursion           medtag ikke filer i underkataloger\n"
-#~ "  -l, --one-file-system        medtag ikke filer fra andre filsystemer\n"
-#~ "  -K, --starting-file=NAVN     begynd med filen NAVN i arkivet\n"
-
-#~ msgid ""
-#~ "  -N, --newer=DATE             only store files newer than DATE\n"
-#~ "      --newer-mtime=DATE       compare date and time when data changed "
-#~ "only\n"
-#~ "      --after-date=DATE        same as -N\n"
-#~ msgstr ""
-#~ "  -N, --newer=DATO             arkivér kun filer som er nyere end DATO\n"
-#~ "      --newer-mtime=DATO       sammenlign tidsstempel kun når data er "
-#~ "ændret\n"
-#~ "      --after-date=DATO        samme som -N\n"
-
-#~ msgid ""
-#~ "      --backup[=CONTROL]       backup before removal, choose version "
-#~ "control\n"
-#~ "      --suffix=SUFFIX          backup before removal, override usual "
-#~ "suffix\n"
-#~ msgstr ""
-#~ "      --backup[=KONTROL]       lav sikkerhedskopi før sletning, med\n"
-#~ "                               versionskontrol\n"
-#~ "      --suffix=SUFFIKS         lav sikkerhedskopi før sletning, med\n"
-#~ "                               overstyring af det almindelige suffiks\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Informative output:\n"
-#~ "      --help            print this help, then exit\n"
-#~ "      --version         print tar program version number, then exit\n"
-#~ "  -v, --verbose         verbosely list files processed\n"
-#~ "      --checkpoint      print directory names while reading the archive\n"
-#~ "      --totals          print total bytes written while creating archive\n"
-#~ "  -R, --block-number    show block number within archive with each "
-#~ "message\n"
-#~ "  -w, --interactive     ask for confirmation for every action\n"
-#~ "      --confirmation    same as -w\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Udskrift af information:\n"
-#~ "      --help            vis denne hjælpetekst og afslut\n"
-#~ "      --version         vis programversion og afslut\n"
-#~ "  -v, --verbose         vis hver fil som behandles\n"
-#~ "      --checkpoint      vis katalognavn når arkivet læses\n"
-#~ "      --totals          vis totalt antal byte skrevet\n"
-#~ "  -R, --block-number    vis enhedsnummer i arkivet sammen med alle "
-#~ "beskeder\n"
-#~ "  -w, --interactive     spørg efter bekræftelse for hver operation\n"
-#~ "      --confirmation    samme som -w\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "GNU tar cannot read nor produce `--posix' archives.  If POSIXLY_CORRECT\n"
-#~ "is set in the environment, GNU extensions are disallowed with `--posix'.\n"
-#~ "Support for POSIX is only partially implemented, don't count on it yet.\n"
-#~ "ARCHIVE may be FILE, HOST:FILE or USER@HOST:FILE; DATE may be a textual "
-#~ "date\n"
-#~ "or a file name starting with `/' or `.', in which case the file's date is "
-#~ "used.\n"
-#~ "*This* `tar' defaults to `-f%s -b%d'.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "GNU tar kan hverken læse eller skrive '--posix'-arkiver.  Dersom\n"
-#~ "miljøvariablen POSIXLY_CORRECT er sat, er GNU-funktioner ikke tilladt\n"
-#~ "sammen med '--posix'. POSIX-understøttelse er kun delvis implementeret, "
-#~ "så\n"
-#~ "stol ikke på det endnu.\n"
-#~ "ARKIV kan være FIL, MASKINE:FIL eller BRUGER@MASKINE:FIL; DATO kan være "
-#~ "en\n"
-#~ "tekst-dato, eller et filnavn begyndende med '/' eller '.' og da vil "
-#~ "filens dato\n"
-#~ "blive brugt. *Denne* version af tar har '-f%s -b%d' som forvalg.\n"
-
-#~ msgid "Obsolete option, now implied by --blocking-factor"
-#~ msgstr "Forældet flag, nu underforstået af --blocking-factor"
-
-#~ msgid "Obsolete option name replaced by --blocking-factor"
-#~ msgstr "Forældet flag udskiftet med --blocking-factor"
-
-#~ msgid "Obsolete option name replaced by --read-full-records"
-#~ msgstr "Forældet flag skiftet ud med --read-full-records"
-
-#~ msgid "Warning: the -I option is not supported; perhaps you meant -j or -T?"
-#~ msgstr ""
-#~ "Advarsel: -I flaget er ikke understøttet; måske mente du -j eller -T?"
-
-#~ msgid "Obsolete option name replaced by --touch"
-#~ msgstr "Forældet flag skiftet ud med --touch"
-
-#~ msgid "Obsolete option name replaced by --absolute-names"
-#~ msgstr "Forældet flag skiftet ud med --absolute-names"
-
-#~ msgid "Obsolete option name replaced by --block-number"
-#~ msgstr "Forældet flag skiftet ud med --block-number"
-
-#~ msgid "Warning: the -y option is not supported; perhaps you meant -j?"
-#~ msgstr "Advarsel: -y flaget er ikke understøttet; måske mente du -j?"
-
-#~ msgid "Obsolete option name replaced by --backup"
-#~ msgstr "Forældet flag skiftet ud med --backup"
-
-#~ msgid "Written by John Gilmore and Jay Fenlason."
-#~ msgstr "Skrevet af John Gilmore and Jay Fenlason."
-
-#~ msgid "Error exit delayed from previous errors"
-#~ msgstr "Udsat fejl-afslutning som resultat af tidligere fejl"
-
-#~ msgid ""
-#~ "If a long option shows an argument as mandatory, then it is mandatory\n"
-#~ "for the equivalent short option also.\n"
-#~ "\n"
-#~ "  -l, --file-length=LENGTH   LENGTH of generated file\n"
-#~ "  -p, --pattern=PATTERN      PATTERN is `default' or `zeros'\n"
-#~ "      --help                 display this help and exit\n"
-#~ "      --version              output version information and exit\n"
-#~ msgstr ""
-#~ "Obligatoriske argumenter for lange flag er obligatoriske også for korte "
-#~ "flag.\n"
-#~ "\n"
-#~ "  -l, --file-length=LÆNGDE    længde af genereret fil\n"
-#~ "  -p, --pattern=MØNSTER       gyldige mønstre er 'default' eller 'zeros'\n"
-#~ "      --help                  vis denne hjælpetekst og afslut\n"
-#~ "      --version               vis programversion og afslut\n"
-
-#~ msgid "Ambiguous pattern `%s'"
-#~ msgstr "Flertydigt mønster '%s'"
-
-#~ msgid "Copyright %d Free Software Foundation, Inc."
-#~ msgstr "Copyright © %d Free Software Foundation, Inc."
-
-#~ msgid ""
-#~ "This is free software; see the source for copying conditions.  There is "
-#~ "NO\n"
-#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
-#~ "PURPOSE.\n"
-#~ msgstr ""
-#~ "Dette er frit programmel.  Se kildekoden for kopieringsbetingelser.\n"
-#~ "Programmellet har ingen garanti, ikke en gang for SALGBARHED eller "
-#~ "EGNETHED\n"
-#~ "TIL NOGEN SPECIEL OPGAVE.\n"
-
-#~ msgid "`%s' exists but is not a directory"
-#~ msgstr "'%s' eksisterer, men er ikke et katalog"
-
-#~ msgid "cannot chdir to directory, %s"
-#~ msgstr "kan ikke gå til kataloget, %s"
-
-#~ msgid "cannot chmod %s"
-#~ msgstr "kan ikke ændre filrettigheder for '%s'"
-
-#~ msgid "virtual memory exhausted"
-#~ msgstr "virtuelt hovedlager opbrugt"
-
-#~ msgid "Write to compression program short %lu bytes"
-#~ msgstr "Skrev %lu byte for lidt til komprimeringsprogrammet"
-
-#~ msgid "Removing `%.*s' prefix from member names"
-#~ msgstr "Fjerner '%.*s' præfiks fra medlemsnavne"
-
-#~ msgid "Archive contains future timestamp %s"
-#~ msgstr "Arkiv indeholder fremtidigt tidsstempel %s"
-
-#~ msgid "%s: Cannot symlink %s %s"
-#~ msgstr "%s: Kan ikke lænke %s symbolsk til %s"
-
-#~ msgid "Invalid group given on option"
-#~ msgstr "Ugyldig gruppe angivet i flag"
+msgstr "--stat kræver filnavne"
 
-#~ msgid "Invalid owner given on option"
-#~ msgstr "Ugyldig ejer angivet i flag"
+#~ msgid "Cannot save working directory"
+#~ msgstr "Kan ikke gemme arbejdskatalog"
index 69384998f54d28008e500c74ae2b1ba1e83b222d..a4e10009ced67f2d5db81349cbe8a338fea4e6e3 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index b5d3616fc178002eb521fb2d153c11d8dc7f1663..13a955359947d90e3c8bfb3058a6bd3fd3ce3d03 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -4,16 +4,18 @@
 # Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995?
 # Karl Eichwalder <ke@ke.central.de>, 1996
 # Christian Kirsch <ck@held.mind.de>, 1996, 2001
-# Michael Piefel <piefel@informatik.hu-berlin.de>, 2003, 2006, 2007, 2008, 2009
+# Michael Piefel <piefel@informatik.hu-berlin.de>, 2003, 2006, 2007, 2008, 2009, 2010
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2009-03-26 10:05+0100\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-08-17 21:45+0200\n"
 "Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -89,7 +91,7 @@ msgstr "„%s --help“ oder „%s --usage“ gibt weitere Informationen.\n"
 msgid "Report bugs to %s.\n"
 msgstr "Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Unbekannter Systemfehler."
 
@@ -101,8 +103,8 @@ msgstr "diese Hilfe ausgeben"
 msgid "give a short usage message"
 msgstr "eine kurze Benutzungsübersicht ausgeben"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NAME"
 
@@ -140,55 +142,60 @@ msgstr "(PROGRAMMFEHLER) Option hätte erkannt werden müssen!?"
 msgid "write error"
 msgstr "Schreibfehler"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: Option „%s“ ist mehrdeutig\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: Option „--%s“ erlaubt keinen Parameter\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: Option „%c%s“ erlaubt keinen Parameter.\n"
+msgstr "%s: Option „%c%s“ erlaubt keinen Parameter\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: Option „%s“ benötigt einen Parameter.\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: Option „--%s“ benötigt einen Parameter\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: Unbekannte Option „--%s“\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: Unbekannte Option „%c%s“\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: Ungültige Option -- %c\n"
+msgstr "%s: Ungültige Option -- „%c“\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: Option benötigt einen Parameter -- %c.\n"
+msgstr "%s: Option benötigt einen Parameter -- „%c“.\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: Option „-W %s“ ist mehrdeutig.\n"
+msgstr "%s: Option „-W %s“ ist mehrdeutig\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: Option „-W %s“ erlaubt keinen Parameter.\n"
+msgstr "%s: Option „-W %s“ erlaubt keinen Parameter\n"
+
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: Option „-W %s“ benötigt einen Parameter\n"
 
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
@@ -254,12 +261,12 @@ msgstr "^[nN]"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Paketiert von %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Paketiert von %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
@@ -397,33 +404,32 @@ msgstr ""
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
-msgstr "Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an %s.\n"
+msgstr ""
+"\n"
+"Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an: %s\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
-msgstr ""
-"\n"
-"Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n"
+msgstr "Melden Sie Fehler in %s (auf Englisch, mit LC_ALL=C) an: %s\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "Homepage von %s: <%s>\n"
 
 #: gnu/version-etc.c:255
-#, fuzzy, c-format
+#, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr "Homepage von %s: <http://www.gnu.org/software/%s/>.\n"
+msgstr "Homepage von %s: <http://www.gnu.org/software/%s/>\n"
 
 #: gnu/version-etc.c:258
-#, fuzzy
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr "Allgemeine Hilfe zu GNU-Software: <http://www.gnu.org/gethelp/>.\n"
+msgstr "Allgemeine Hilfe zu GNU-Software: <http://www.gnu.org/gethelp/>\n"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -530,195 +536,189 @@ msgstr "Standardausgabe"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Kann nicht mit %s verbinden: Auflösung fehlgeschlagen"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Kann Remote-Shell nicht ausführen."
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Richtung für Positionierung nicht zulässig."
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Ungültige Zugriffsrechte angegeben."
+msgstr "Ungültige Richtung für Positionierung"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Ungültige Größe: %s"
+msgstr "Ungültiger Betrag für Positionierung"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Positionierungsangabe außerhalb des zulässigen Bereichs."
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Ungültige Bandlänge"
+msgstr "Ungültige Bytezahl"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "Positionierungsangabe außerhalb des zulässigen Bereichs."
+msgstr "Bytezahl außerhalb des zulässigen Bereichs"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd: Vorzeitiges Dateiende.\n"
+msgstr "Vorzeitiges Dateiende"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "Hauptsächlicher Arbeitsmodus:"
+msgstr "Ungültiger Arbeitsmodus"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Operation nicht gestattet"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "Unerwartetes Dateiende in verstümmelten Namen."
+msgstr "Unerwartete Argumente"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
+"Ein Bandlaufwerk bearbeiten, dabei Befehle von entferntem Prozess annehmen"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "ZAHL"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "Debug-Level setzen"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "DATEI"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "Dateinamen für Debug-Ausschriften setzen"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
 msgstr "kann „%s“ nicht öffnen"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "zu viele Argumente"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
-msgstr "Ungültiges Befehl."
+msgstr "Ungültiger Befehl"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Das sieht nicht wie ein „tar“-Archiv aus."
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Gesamtzahl geschriebener Bytes"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Gesamtzahl gelesener Bytes"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Gesamtzahl gelöschter Bytes: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Ungültiger Wert für „record_size“."
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Kein Archivname angegeben"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Kann Archive auf Standard-Ein-/Ausgabe nicht prüfen."
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Archiv ist komprimiert. Benutzen Sie die Option %s."
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Kann komprimierte Archive nicht aktualisieren"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Am Anfang des Mediums, beende jetzt."
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Zu viele Fehler, beende."
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Recordgröße = %lu Block"
 msgstr[1] "Recordgröße = %lu Blöcke"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Falsch ausgerichteter Block (ein Byte) im Archiv."
 msgstr[1] "Falsch ausgerichteter Block (%lu Bytes) im Archiv."
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Kann Archiv-Datei nicht zurücksetzen; könnte ohne „-i“ unlesbar sein."
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "„rmtlseek“ nicht an Recordgrenze angehalten"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: enthält ungültige Teil-Nummer."
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Teil-Nummer zu groß."
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Medium #%d für %s einlegen und Eingabetaste drücken: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Dateiende gefunden, Benutzereingabe erwartet"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "WARNUNG: Archiv unvollständig"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -730,67 +730,67 @@ msgstr ""
 " q             „tar“ abbrechen\n"
 " j oder Enter  fortfahren\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Shell in einem Unterprozess starten\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             diese Liste ausgeben\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Kein neues Medium; halte an.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Dateiname nicht angegeben. Versuchen Sie es noch einmal.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Ungültige Eingabe. Geben Sie „?“ für Hilfe ein.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "„%s“-Befehl gescheitert."
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s wird möglicherweise auf diesem Teil fortgesetzt: Kopf enthält "
 "abgeschnittenen Namen."
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "Dieser Teil ist keine Fortsetzung von %s."
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s hat die falsche Größe (%s != %s + %s)."
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Dieser Teil ist nicht an der Reihe (%s - %s != %s)."
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Kennzeichnung des Archivs passt nicht zu „%s“."
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Teil „%s“ passt nicht zu „%s“."
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -798,7 +798,7 @@ msgstr ""
 "%s: Dateiname zu lang, um in einem GNU-Mehrteil-Kopf abgelegt werden zu "
 "können, abgeschnitten"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "Schreiben endete nicht an Blockgrenze"
 
@@ -809,20 +809,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Konnte nur %lu von %lu Byte lesen"
 msgstr[1] "Konnte nur %lu von %lu Bytes lesen"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Unterschiedliche Inhalte"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Unerwartetes Dateiende im Archiv."
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Unterschiedliche Dateitypen "
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Modus ist unterschiedlich"
 
@@ -838,144 +838,144 @@ msgstr "Gruppenkennung ist unterschiedlich"
 msgid "Mod time differs"
 msgstr "Änderungszeit ist unterschiedlich"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Größe ist unterschiedlich"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Nicht mit „%s“ verknüpft"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symbolische Verknüpfung ist unterschiedlich"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Unterschiedliche Gerätenummern"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Prüfe "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Unbekannter Dateityp „%c“, Differenz wie für eine normale Datei."
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Archiv enthält Dateinamen, deren Präfixe entfernt wurden."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Die Überprüfung findet möglicherweise die Originaldateien nicht."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "FEHLER BEI PRÜFUNG: %d ungültiger Kopfteil erkannt."
 msgstr[1] "FEHLER BEI PRÜFUNG: %d ungültige Kopfteile erkannt."
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Ein einzelner Nullblock bei %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: enthält eine „Cache-Verzeichnis“-Markierung %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "Wert %s außerhalb des %s-Bereich %s..%s; ersetze durch %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "Wert %s außerhalb des %s-Bereichs %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Erzeuge negative oktale Kopfteile"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: Dateiname ist zu lang (max. %d); nicht gesichert."
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: Dateiname ist zu lang (kann nicht aufgeteilt werden); nicht gesichert."
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: Verknüpfungsname ist zu lang; nicht gesichert."
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "Datei %s ist um ein Byte geschrumpft, fülle mit Null auf."
 msgstr[1] "Datei %s ist um %s Bytes geschrumpft, fülle mit Nullen auf."
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "Datei %s liegt auf einem anderen Dateisystem; nicht gesichert."
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "Inhalt nicht gesichert"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Unbekannter Dateityp; Datei ignoriert."
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr "Fehlende Verknüpfungen zu %s.\n"
+msgstr "Fehlende Verknüpfungen zu %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "Datei %s ist unverändert; nicht gesichert."
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s ist das Archiv; nicht gesichert."
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "Verzeichnis nicht gesichert"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: Datei hat sich beim Lesen geändert."
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: Socket ignoriert"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: Klappe ignoriert"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Springe zum nächsten Kopfteil."
 
@@ -983,76 +983,76 @@ msgstr "Springe zum nächsten Kopfteil."
 msgid "Deleting non-header from archive"
 msgstr "Lösche nicht-Kopfteil aus dem Archiv"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: unplausibel alter Zeitstempel %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: Zeitstempel %s liegt %s Sekunden in der Zukunft."
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Unerwarteter Inkonsitenz beim Erstellen des Verzeichnisses."
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Verzeichnis umbenannt bevor sein Status ermittelt werden konnte"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extrahiere zusammenhängende Dateien („contiguous files“) als reguläre."
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr ""
 "Versuche symbolische Verknüpfungen als harte Verknüpfungen herauszuholen."
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr ""
 "Kann „%s“ nicht herausholen – Datei ist Fortsetzung eines anderen Teils."
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Unerwarteter Kopfteil mit langem Namen"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Unbekannter Dateityp „%c“, wie normale Datei extrahiert."
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Aktuelles %s ist neuer oder hat dasselbe Alter."
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Konnte keine Sicherheitskopie von dieser Datei erstellen"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Kann %s nicht in %s umbenennen."
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Verzeichnis wurde von „%s“ umbenannt."
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Verzeichnis wurde umbenannt."
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "Verzeichnis „%s“ ist neu."
@@ -1164,87 +1164,87 @@ msgstr "%s: Lösche %s.\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Kann nicht entfernen."
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Ausgelassen"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "Block %s: ** Block aus NULlen **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "Block %s: ** Ende der Datei **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "Block %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Leerzeichen im Kopfteil, wo numerische %s-Werte stehen sollten."
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr "Oktalzahl %.*s außerhalb des %s-Bereichs, nehme Zweierkomplement an?"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Oktalzahl %.*s außerhalb des %s-Bereichs"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Archiv enthält veraltete Base64-Kopfteile"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Base64-Text %s außerhalb des %s-Bereichs."
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Base-256-Wert ist außerhalb des %s-Bereichs."
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Archiv enthält „%.*s“ wo numerische %s-Werte stehen sollten."
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Wert %s außerhalb des %s-Bereichs %s..%s."
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " Verknüpfung zu %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " unbekannter Dateityp %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "––Lange Verknüpfung––\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "––Langer Name––\n"
@@ -1252,93 +1252,93 @@ msgstr "––Langer Name––\n"
 # Alte Üs: Band Kopfteil.  Kann diese Meldung auch bei Disketten
 # ausgegeben werden?  Dann kann man ja nicht "Band" sagen; am besten
 # einfach "Volume" lassen. ke.
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "––Vorspann des Teils––\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "––Fortgesetzt bei Byte %s––\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Erzeuge Verzeichnis:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Kann Arbeitsverzeichnis nicht wechseln."
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Benenne „%s“ in „%s“ um.\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Kann nicht in %s umbenennen"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Benenne „%s“ zurück in „%s“.\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Kann aktuelles Verzeichnis nicht sichern."
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Kann Arbeitsverzeichnis nicht wechseln."
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Datei gelöscht, bevor sie gelesen wurde."
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s: Datei gelöscht, bevor sie gelesen wurde."
+msgstr "%s: Verzeichnis gelöscht, bevor es gelesen wurde."
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "Kindprozess"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
-msgstr "interprocess channel"
+msgstr "Interprocess-Kanal"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Zeichen für Musterüberdeckung im Dateinamen benutzt. Benutzen"
+msgstr "Zeichen für Musterüberdeckung im Dateinamen benutzt"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "Sie bitte --wildcards, um Musterüberdeckung zu ermöglichen oder"
+msgstr ""
+"Benutzen Sie --wildcards, um Musterüberdeckung zu ermöglichen oder\n"
+"--no-wildcards, um diese Warnung zu unterdrücken."
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Nicht im Archiv gefunden."
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Erforderliches Auftreten nicht im Archiv gefunden."
 
-#: src/names.c:894
-#, fuzzy
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Kennzeichnung des Archivs passt nicht"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
-msgstr "--preserve-order ist nicht kompatibel mit --listed-incremental"
+msgstr "Option -C in Dateiliste ist nicht erlaubt mit --listed-incremental"
 
-#: src/names.c:900
-#, fuzzy
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr "--preserve-order ist nicht kompatibel mit --listed-incremental"
+msgstr "In --listed-incremental ist nur eine Option -C erlaubt"
 
 #: src/tar.c:81
 #, c-format
@@ -1362,7 +1362,7 @@ msgstr ""
 "Unbekannter Zitatstil „%s“. Versuchen Sie „%s --quoting-style=help“ für eine "
 "Liste."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1376,12 +1376,12 @@ msgstr ""
 "zusammen und kann einzelne Dateien aus dem Archiv wieder herstellen.\n"
 "\n"
 "Beispiele:\n"
-"  %s -cf archiv.tar foo bar  # archiv.tar mit den Dateien foo und bar "
+"  tar -cf archiv.tar foo bar  # archiv.tar mit den Dateien foo und bar "
 "erzeugen\n"
-"  %s -tvf archiv.tar         # Inhalt von archiv.tar ausführlich anzeigen\n"
-"  %s -xf archiv.tar          # alle Dateien aus archiv.tar extrahieren\n"
+"  tar -tvf archiv.tar         # Inhalt von archiv.tar ausführlich anzeigen\n"
+"  tar -xf archiv.tar          # alle Dateien aus archiv.tar extrahieren\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1405,79 +1405,79 @@ msgstr ""
 "                    vorhanden sind, sonst einfache\n"
 "  never, simple   immer einfache Sicherheitskopien\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Hauptsächlicher Arbeitsmodus:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "den Inhalt eines Archivs auflisten"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "Dateien aus einem Archiv extrahieren"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "ein neues Archiv anlegen"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "Unterschiede zwischen Archiv und Dateisystem suchen"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "Dateien hinten an das Archiv anfügen"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "nur Dateien anfügen, die neuer als die Kopie im Archiv sind"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "tar-Dateien an ein Archiv anfügen"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "aus dem Archiv löschen (nicht auf Magnetband!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "den Archiv-Teil-Namen überprüfen und beenden"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Feineinstellungen:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "löchrige Dateien („sparse files“) effizient behandeln"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "zu benutzende Version des Sparse-Formats setzen (impliziert --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "inkrementelle Sicherung im alten GNU-Format"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "inkrementelle Sicherung im neuen GNU-Format"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "Niveau für erzeugte Archive mit --listed-incremental ausgeben"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "kein Abbruch mit Existatus!=0 bei unlesbaren Dateien"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1489,126 +1489,125 @@ msgstr ""
 "list und wenn eine Dateiliste entweder auf der Kommandozeile oder mittels "
 "der Option -T angegeben wurde benutzt werden; Zahl ist standardmäßig 1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "im Archiv kann positioniert werden"
 
-#: src/tar.c:436
-#, fuzzy
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr "im Archiv kann positioniert werden"
+msgstr "im Archiv kann nicht positioniert werden"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "Gerätenummer bei Erstellung inkrementeller Archive nicht prüfen"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "Gerätenummer bei Erstellung inkrementeller Archive prüfen (Voreinstellung)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Steuerung des Überschreibens:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "Archiv nach dem Schreiben prüfen"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "Dateien nach dem Hinzufügen zum Archiv löschen"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "vorhandene Dateien beim Extrahieren nicht überschreiben"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "vorhandene Dateien, die neuer als die Archivkopie sind, nicht überschreiben"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "vorhandene Dateien beim Extrahieren überschreiben"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "zu überschreibende Dateien vor dem Extrahieren löschen"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 "Verzeichnishierarchien rekursiv vor dem Extrahieren eines Verzeichnisses "
 "löschen"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "Metadaten existierender Verzeichnisse erhalten"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "Metadaten existierender Verzeichnisse beim Extrahieren überschreiben "
 "(Voreinstellung)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Wahl des Ausgabestroms:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "Dateien auf die Standardausgabe extrahieren"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "BEFEHL"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "extrahierte Dateien an ein anderes Programm weiterreichen"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "Exitstatus der Kinder ignorieren"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "Exitstatus!=0 von Kindern als Fehler ansehen"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Behandlung der Datei-Attribute:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "Eigentümer für hinzugefügte Dateien auf NAME setzen"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "Gruppe für hinzugefügte Dateien auf NAME setzen"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATUM-ODER-DATEI"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "Änderungszeit für hinzugefügte Datei aus DATUM-ODER-DATEI beziehen"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ÄNDERUNGEN"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "den (symbolischen) Modus ÄNDERUNGEN für hinzugefügte Dateien erzwingen"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METHODE"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1619,34 +1618,35 @@ msgstr ""
 "oder dadurch, dass die Zeiten gar nicht erst neu gesetzt werden (METHODE="
 "„system“)"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "die geänderte Zeit nicht extrahieren"
 
-#: src/tar.c:504
-#, fuzzy
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
-"versuchen, die Dateien mit denselben Eigentumsverhältnisse zu extrahieren"
+"versuchen, die Dateien mit denselben Eigentumsverhältnisse zu extrahieren "
+"(für den Admin ist dies die Voreinstellung)"
 
-#: src/tar.c:506
-#, fuzzy
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
-msgstr "Dateien als aktueller Nutzer extrahieren"
+msgstr ""
+"Dateien als aktueller Nutzer extrahieren (für normale Nutzer die "
+"Voreinstellung)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "immer Zahlen für Nutzer-/Gruppennamen verwenden"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "Informationen über Dateizugriffsrechte mit extrahieren (Voreinstellung für "
 "Root)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1654,15 +1654,15 @@ msgstr ""
 "die Umask des Nutzers anwenden beim Extrahieren von Dateizugriffsrechte aus "
 "dem Archiv (Voreinstellung für normale Nutzer)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "zu entpackende Dateinamen wie im Archiv sortieren"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "wie -p und -s zusammen"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1670,139 +1670,139 @@ msgstr ""
 "das Setzen von Zugriffszeiten und Rechten von extrahierten Verzeichnissen "
 "verschieben bis zum Ende des Entpackens"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "den Effekt von --delay-directory-restore aufheben"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Geräteauswahl und -umschaltung:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "Archivdatei oder Gerät ARCHIV benutzen"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "Archivdatei ist lokal, auch wenn der Name einen Doppelpunkt enthält"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "statt „rmt“ den gegebenen BEFEHL benutzen"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "statt „rsh“ den entfernten BEFEHL benutzen"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "Laufwerk und Schreibdichte angeben"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "mehrteiliges Archiv anlegen/listen/extrahieren"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "Medium wechseln, wenn ZAHL × 1024 Bytes geschrieben wurden"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "am Ende jedes Mediums das Skript ausführen (impliziert -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "Teil-Nummer in DATEI benutzen/aktualisieren"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blockung des Gerätes:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLÖCKE"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLÖCKE × 512 Bytes pro Record"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "ZAHL Bytes pro Record, Vielfaches von 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "Blöcke mit Nullen im Archiv ignorieren (heißt EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "erneut Blocken beim Lesen (für 4.2BSD‐Pipes)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Auswahl des Archiv-Formats:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "Archiv mit dem gegebenen Format anlegen"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT ist eines der folgenden:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "altes V7-tar-Format"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU-Format wie mit tar <=1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU-tar-1.13.x-Format"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "Format von POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "Format von POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "wie pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "wie --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "wie --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "Schlüsselwort[[:]=Wert][,Schlüsselwort[[:]=Wert]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "Pax-Schlüsselwörter steuern"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXT"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1810,78 +1810,78 @@ msgstr ""
 "Archiv mit dem Teilnamen TEXT anlegen; beim Listen/Extrahieren, TEXT als "
 "Muster für den Teilnamen benutzen"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Kompressionsoptionen:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "Archiverweiterung nehmen, um Kompressionsprogramm zu bestimmen"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "Archiverweiterung nicht nehmen, um Kompressionsprogramm zu bestimmen"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "durch PROG filten (muss -d akzeptieren)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Auswahl der lokalen Dateien:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "angegebene Datei zum Archiv hinzufügen (nützlich, wenn Datei mit einem "
 "Strich beginnt)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "VERZEICHNIS"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "zu VERZEICHNIS wechseln"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "Namen der zu bearbeitenden Dateien aus DATEI lesen"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T liest null-terminierte Namen, verbiete -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "die Wirkung der vorangehenden Option --null aufheben"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "Dateinamen, die mit -T gelesen werden, von Zitat befreien (Voreinstellung)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "Dateinamen, die mit -T gelesen werden, nicht von Zitat befreien"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MUSTER"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "Dateien auslassen, auf die MUSTER passt"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "Dateien auslassen, auf die in DATEI angegebene Muster passen"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1889,97 +1889,97 @@ msgstr ""
 "Inhalt von Verzeichnissen auslassen, die CACHEDIR.TAG enthalten, außer der "
 "Markierungsdatei selbst"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 "alles unterhalb von Verzeichnissen auslassen, die CACHEDIR.TAG enthalten"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "Verzeichnisse auslassen, die CACHEDIR.TAG enthalten"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "Inhalt von Verzeichnissen auslassen, die DATEI enthalten, außer DATEI selbst"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "alles unterhalb von Verzeichnissen auslassen, die DATEI enthalten"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "Verzeichnisse auslassen, die DATEI enthalten"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "Verzeichnisse von Versionskontrollsystemen auslassen"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "Backup- und Lock-Dateien ausschließen"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "automatischen Abstieg in Vezeichnisse vermeiden"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "beim Anlegen eines Archivs im lokalen Dateisystem bleiben"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "in Verzeichnisse absteigen (Voreinstellung)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "führende „/“-Zeichen in den Dateinamen erhalten"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "symbolischen Verknüpfungen folgen; die Dateien archivieren und abspeichern, "
 "auf die sie zeigen"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "harten Verknüpfungen folgen; die Dateien archivieren und abspeichern, auf "
 "die sie sich beziehen"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "ELEMENT-NAME"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "mit ELEMENT-NAME im Archiv beginnen"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "nur Dateien ablegen, die neuer als DATUM-ODER-DATEI sind"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATUM"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "Datum und Zeit nur überprüfen, wenn Daten geändert wurden"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "KONTROLLE"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "Sicherung vor dem Entfernen, wähle Versions-KONTROLLE"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "ZEICHENKETTE"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1987,99 +1987,98 @@ msgstr ""
 "Sicherung vor dem Entfernen, übliches Suffix ersetzen („~“, wenn nicht durch "
 "Umgebungsvariable SIMPLE_BACKUP_SUFFIX anders gesetzt)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Dateinamentransformationen:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "ZAHL führende Komponenten beim Extrahieren von Dateinamen entfernen"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "AUSDRUCK"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "den sed-AUSDRUCK zur Dateinamentransformation benutzen"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Dateinamenauswahloptionen (sowohl für ein- als auch ausschließende Muster):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "Groß-/Kleinschreibung ignorieren"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "Muster am Dateinamensanfang ausrichten"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "Muster passen nach jedem „/“ (Voreinstellung beim Ausschluss)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "Groß-/Kleinschreibung beachten (Voreinstellung)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "Muster benutzen (Voreinstellung für Ausschluss)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "Zeichenketten sind buchstabengetreu"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "Jokerzeichen passen nicht auf „/“"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "Jokerzeichen passen auf „/“ (Voreinstellung für Ausschluss)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informationen:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "bearbeitete Dateien ausführlich listen"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "SCHLÜSSELWORT"
 
-#: src/tar.c:740
-#, fuzzy
+#: src/tar.c:741
 msgid "warning control"
-msgstr "Steuerung des Überschreibens:"
+msgstr "Warnungssteuerung"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "Fortschrittsnachrichten bei jedem ZAHLten Record (Voreinstellung 10) anzeigen"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "AKTION"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "AKTION bei jedem Kontrollpunkt ausführen"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 "eine Nachricht ausgeben, wenn nicht alle Verknüpfungen abgespeichert werden"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2091,27 +2090,31 @@ msgstr ""
 "wird; erlaubte Signale sind: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 und SIGUSR2; "
 "die Namen ohne das Präfix SIG sind auch erlaubt"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "Dateiänderungszeiten in UTC anzeigen"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "Dateizeit in voller Auflösung anzeigen"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "ausführliche Ausgabe in DATEI schreiben"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "bei jeder Nachricht die Blocknummer innerhalb des Archivs mit anzeigen"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "für jede Aktion um Bestätigung bitten"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "Voreinstellungen von tar anzeigen"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2119,94 +2122,93 @@ msgstr ""
 "beim Listen oder Extrahieren jedes Verzeichnis auflisten, dass nicht den "
 "Suchkriterien entspricht"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "Datei- oder Archivnamen nach der Transformation anzeigen"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STIL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "Zitatstil setzen; siehe unten für gültige STIL-Werte"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "zusätzliche Zeichen aus ZEICHENKETTE zitieren"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "Zeichen aus ZEICHENKETTE nicht zitieren"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Kompatibilitätsoptionen:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "beim Anlegen wie --old-archive; beim Extrahieren wie --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Weitere Optionen:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "möglicherweise schädliche Optionen deaktivieren"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Von den Optionen „-Acdtrux“ ist nur _eine_ erlaubt."
+msgstr ""
+"Von den Optionen „-Acdtrux“ oder „--test-label“ ist jeweils nur eine erlaubt"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Kompressionsoptionen schließen sich gegenseitig aus."
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Unbekannter Signalname: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Datumsdatei nicht gefunden"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Ersetze %s für unbekanntes Datumsformat %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Option %s: Behandle Datum „%s“ als %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: Dateiliste schon gelesen"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: gelesener Dateiname enthält ein NULL-Zeichen"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "Archiv durch xz filtern"
+msgstr "Archiv durch %s filtern"
 
-#: src/tar.c:1290
-#, fuzzy
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Gültige Argumente für die Option --quoting-style sind:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2214,53 +2216,51 @@ msgstr ""
 "\n"
 "*Dieses* „tar“ hat als Voreinstellung:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Ungültige Blockgröße"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Ungültige Bandlänge"
 
-#: src/tar.c:1511
-#, fuzzy
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr "unzulässiges inkrementelles Dateiformat"
+msgstr "unzulässiger Wert für inkrementelles Niveau"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Mehr als ein Datum angegeben."
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Ungültiger Wert für Sparse-Version (für löchrige Dateien)"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' wird auf dieser Plattform nicht unterstützt"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "Wert für --checkpoint ist keine ganze Zahl"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s: Ungültige Gruppe"
+msgstr "Ungültige Gruppe"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Ungültige Zugriffsrechte angegeben."
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Ungültige Zahl"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Ungültiger Benutzer"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2268,118 +2268,116 @@ msgstr ""
 "Die Option --preserve ist veraltet, benutzen Sie stattdessen --preserve-"
 "permissions --preserve-order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Ungültiger Wert für Recordgröße."
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Die Recordgröße muss ein Vielfaches von %d sein."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Ungültige Elementanzahl"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Nur eine Option --to-command erlaubt"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Fehlgeformtes Dichteargument: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Unbekannte Dicht: „%c“"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Die Optionen „-[0-7][lmh]“ unterstützt *dieses* „tar“ nicht."
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[DATEI]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Die alte Option „%c“ benötigt einen Parameter."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence ist ohne Dateiliste bedeutungslos"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 "--occurrence kann im angeforderten Operationsmodus nicht benutzt werden"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Mehrere Archivdateien verlangen die Option „-M“."
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental kann nicht mit --newer benutzt werden"
 
-#: src/tar.c:2387
-#, fuzzy
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "--preserve-order ist nicht kompatibel mit --listed-incremental"
+msgstr "--level ist ohne --listed-incremental bedeutungslos"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Band-Nummer ist zu lang (Maximum ist ein Byte)."
 msgstr[1] "%s: Band-Nummer ist zu lang (Maximum ist %lu Bytes)."
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Kann mehrteilige Archive nicht prüfen."
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Kann komprimierte Archive nicht prüfen"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Kann keine mehrteiligen komprimierten Archive verwenden."
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Kann komprimierte Archive nicht aneinanderhängen"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option kann nur mit POSIX-Archiven benutzt werden"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Teillänge kann nicht unter der Recordgröße liegen"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order ist nicht kompatibel mit --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Anlegen eines leeren Archivs wird feige verweigert."
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Die Optionen „-Aru“ sind nicht kompatibel mit „-f -“."
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "Eine der Optionen „-Acdtrux“ ist notwendig."
+msgstr "Eine der Optionen „-Acdtrux“ oder „--test-label“ ist notwendig."
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Beende mit Fehlerstatus aufgrund vorheriger Fehler"
@@ -2391,57 +2389,56 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Datei ist um ein Byte geschrumpft."
 msgstr[1] "%s: Datei ist um %s Bytes geschrumpft."
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Schlüsselwort %s ist unbekannt oder noch nicht implementiert"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "Zahl außerhalb des zulässigen Bereichs: %s"
+msgstr "Zeitstempel außerhalb des zulässigen Bereichs"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Muster %s kann nicht benutzt werden"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Schlüsselwort %s kann nicht überschrieben werden"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Fehlgeformter erweiterter Kopfteil: fehlende Länge"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Länge des erweiterten Kopfteils ist außerhalb des erlaubten Bereichs"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Länge %*s des erweiterten Kopfteils ist außerhalb des Bereichs"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Fehlgeformter erweiterter Kopfteil: fehlender Leerraum nach der Länge"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Fehlgeformter erweiterter Kopfteil: fehlendes Gleichheitszeichen"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Fehlgeformter erweiterter Kopfteil: fehlender Zeilenvorschub"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Ignoriere unbekanntes Schlüsselwort „%s“ für erweiterten Kopfteil"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2449,29 +2446,29 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Erweiterter Kopfteil %s=%s ist außerhalb des Bereichs %s..%s."
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Fehlgeformter erweiterter Kopfteil: ungültiges %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Fehlgeformter erweiterter Kopfteil: überzähliges %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Fehlgeformter erweiterter Kopfteil: ungültiges %s: unerwarteter Trenner %c"
 
 # Ist „odd“ hier ungerade oder merkwürdig?
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2514,105 +2511,103 @@ msgstr "Schreib-Kontrollpunkt %u"
 msgid "Read checkpoint %u"
 msgstr "Lese-Kontrollpunkt %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr ""
-"genfile manipuliert Datendateien für die Testsuit der GNU paxutils.\n"
+"genfile manipuliert Datendateien für die Testsuite der GNU paxutils.\n"
 "OPTIONEN sind:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Optionen beim Anlegen von Dateien:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "GRÖßE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Datei der gegebenen GRÖßE anlegen"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "in Datei NAME anstelle der Standardausgabe schreiben"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Dateinamenlist aus DATEI lesen"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T liest null-terminierte Namen"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Die Datei mit dem gegebenen MUSTER füllen. MUSTER ist „default“ oder „zeros“."
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Größe eines Blocks für löchrige Dateien"
 
 # „map“: Karte, Abbildung?
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Löchrige („sparse“) Datei erzeugen. Der Rest der Kommandozeile gibt die die "
 "Dateibildungsvorschrift an."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "POSITION"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "vor dem Schreiben zur gegebenen Position springen"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Dateistatistikoptionen:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Inhalt des „struct stat“ für jede gegebene Datei ausgeben. Standard-FORMAT "
 "ist:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Optionen für synchrone Ausführung:"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [OPTION...]"
+msgstr "OPTION"
 
-#: tests/genfile.c:165
-#, fuzzy
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
-"jeden gegebenen BEFEHL ausführen; nützlich mit --checkpoint und einem aus --"
-"cut, --append, --touch"
+"ARGUMENTE ausführen. Nützlich mit --checkpoint und einem aus --cut, --"
+"append, --touch, --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "gegebene Aktion (siehe unten) beim Erreichen des Kontrollpunkts ZAHL "
 "ausführen"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Datum für nächste „--touch“-Operation setzen"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "ausgeführte Kontrollpunkte und Beendigungsstatus von BEFEHL anzeigen"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2620,7 +2615,7 @@ msgstr ""
 "Aktionen für synchrone Ausführung. Diese werden beim Erreichen des "
 "Kontrollpunkts, der mit der Option --checkpoint gesetzt wurde, ausgeführt."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2628,145 +2623,148 @@ msgstr ""
 "DATEI kürzen auf die Länge, die mit einer vorhergehenden Option --length "
 "(oder 0 bei Abwesenheit) gesetzt wurde"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "GRÖßE Bytes an DATEI anfügen. GRÖßE wird mit einer vorhergehenden Option --"
 "length gesetzt."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Zugriffs- und Änderungszeiten der DATEI neu setzen"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "BEFEHL ausführen"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "FILE entfernen (unlink)"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Ungültige Größe: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Zahl außerhalb des zulässigen Bereichs: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Negative Größe: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) fehlgeschlagen"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "Dateilänge %lu verlangt, tatsächlich %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "erzeugte Datei ist nicht löchrig"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Fehler beim Parser der Zahl in der Nähe von „%s“"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Unbekanntes Datumsformat"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENTE...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "kann „%s“ nicht öffnen"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "kann nicht positionieren"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "Dateiname enthält Null-Zeichen"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "kann auf der Standardausgabe keine löchrige Datei erstellen, benutzen Sie "
 "die Option --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "inkorrekte Maske (nahe „%s“)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "unbekannte Feld „%s“"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "kann an „%s“ keine Zeit setzen"
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "kann „%s“ nicht öffnen"
+msgstr "kann „%s“ nicht entfernen (unlink)"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Befehl erfolgreich ausgeführt\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Befehl schlug mit Beendigungsstatus %d fehl.\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Befehl beendete sich bei Signal %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Befehl hieltb bei Signal %d an\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Befehl erzeugte einen Core-Dump\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Befehl beendet\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat erfordert Dateinamen"
 
+#~ msgid "Cannot save working directory"
+#~ msgstr "Kann aktuelles Verzeichnis nicht sichern."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: Unzulässige Option -- %c\n"
 
@@ -2777,30 +2775,6 @@ msgstr "--stat erfordert Dateinamen"
 #~ "\n"
 #~ "Melden Sie Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Lese %s.\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Nicht behebbarer Fehler: Programmabbruch. "
-
-#~ msgid "suppress this warning."
-#~ msgstr "--no-wildcards, um diese Warnung zu unterdrücken."
-
-#~ msgid "filter the archive through bzip2"
-#~ msgstr "Archiv durch bzip2 filtern"
-
-#~ msgid "filter the archive through gzip"
-#~ msgstr "Archiv durch gzip filtern"
-
-#~ msgid "filter the archive through compress"
-#~ msgstr "Archiv durch compress filtern"
-
-#~ msgid "filter the archive through lzma"
-#~ msgstr "Archiv durch lzma filtern"
-
-#~ msgid "filter the archive through lzop"
-#~ msgstr "Archiv durch lzop filtern"
-
 #~ msgid "Input string too long"
 #~ msgstr "Eingabezeichenkette zu lang"
 
@@ -2836,6 +2810,30 @@ msgstr "--stat erfordert Dateinamen"
 #~ msgid "Premature end of file"
 #~ msgstr "Vorzeitiges Dateiende."
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Lese %s.\n"
+
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Nicht behebbarer Fehler: Programmabbruch. "
+
+#~ msgid "suppress this warning."
+#~ msgstr "--no-wildcards, um diese Warnung zu unterdrücken."
+
+#~ msgid "filter the archive through bzip2"
+#~ msgstr "Archiv durch bzip2 filtern"
+
+#~ msgid "filter the archive through gzip"
+#~ msgstr "Archiv durch gzip filtern"
+
+#~ msgid "filter the archive through compress"
+#~ msgstr "Archiv durch compress filtern"
+
+#~ msgid "filter the archive through lzma"
+#~ msgstr "Archiv durch lzma filtern"
+
+#~ msgid "filter the archive through lzop"
+#~ msgstr "Archiv durch lzop filtern"
+
 #~ msgid "Warning: the -I option is not supported; perhaps you meant -j or -T?"
 #~ msgstr ""
 #~ "Warnung: Die Option -I ist nicht unterstützt, meinen Sie -j oder -T?"
index ece7a03f225452ab2b230f4147ddd00f47402216..4957183bd98cfd33d6b3a898e4a6df2185ea5ade 100644 (file)
Binary files a/po/el.gmo and b/po/el.gmo differ
index 175c171d898d2b184ccace073c4559b13a8fa4e8..75b9ccfbb4856b84d375b841beeb64354999a1bc 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -3,15 +3,17 @@
 # Μπαλάσκας Ευάγγελος (Balaskas Euaggelos) <ebalaskas@cs.teiath.gr>, 2004.
 # Simos Xenitellis <simos74@gmx.net>, 2004.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.13.25 \n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2004-03-08 14:44+0200\n"
 "Last-Translator: Μπαλάσκας Ευάγγελος (Balaskas Euaggelos) <ebalaskas@cs."
 "teiath.gr>\n"
 "Language-Team: Greek <nls@tux.hellug.gr>\n"
+"Language: el\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -90,7 +92,7 @@ msgstr ""
 "\n"
 "Αναφορά σφαλμάτων στο <bug-tar@gnu.org>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Άγνωστο σφάλμα συστήματος"
 
@@ -102,8 +104,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -141,56 +143,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: η επιλογή`%s' είναι αμφιλεγόμενη\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: η επιλογή `--%s' δεν επιτρέπει όρισμα\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: η επιλογή `%c%s' δεν επιτρέπει όρισμα\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: η επιλογή `%s' απαιτεί όρισμα\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: μη αναγνωρίσιμη επιλογή `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: μη αναγνωρίσιμη επιλογή `%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: άκυρη επιλογή -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: η επιλογή απαιτεί όρισμα -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: η επιλογή `-W %s' είναι αμφιλεγόμενη\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: η επιλογή `-W %s' δεν επιτρέπει όρισμα\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: η επιλογή `%s' απαιτεί όρισμα\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "η μνήμη εξαντλήθηκε"
@@ -525,190 +532,190 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Δεν είναι δυνατή η εκτέλεση απομακρυσμένου κελύφους (φλοιού)"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Η κατεύθυνση αναζήτησης είναι εκτός εύρους"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Άκυρη κατάσταση δόθηκε σε επιλογή"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Άκυρη ένδειξη χρόνου"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Η μετατόπιση αναζήτησης είναι εκτός εύρους"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Άκυρο μέγεθος ταινίας"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Η μετατόπιση αναζήτησης είναι εκτός εύρους"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Πρόωρο eof (τέλος αρχείου)\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "%s: άκυρη επιλογή -- %c\n"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Μη αναμενόμενο EOF (Τέλος Αρχείου) στην αρχειοθήκη"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Δεν είναι δυνατή η αναζήτηση σε %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Εντολή απορριμμάτων"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Αυτό δεν φαίνεται ως αρχειοθήκη tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Συνολικά byte που γράφτηκαν: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Συνολικά byte που γράφτηκαν: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(σωλήνωση)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Άκυρη τιμή για record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Δεν δόθηκε όνομα αρχειοθήκης"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr ""
 "Δεν είναι δυνατή η επαλήθευση των κανονικών εισόδων/εξόδων της αρχειοθήκης"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Δεν είναι δυνατή η ανανέωση των συμπιεσμένων αρχειοθηκών"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Στην αρχή της ταινίας, τερματισμός τώρα"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Πάρα πολλά σφάλματα, τερματισμός"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Μέγεθος εγγραφής = %lu block"
 msgstr[1] "Μέγεθος εγγραφής = %lu block"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, fuzzy, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Μη ευθυγραμμισμένο μπλοκ (%lu byte) στην αρχειοθήκη"
 msgstr[1] "Μη ευθυγραμμισμένο μπλοκ (%lu byte) στην αρχειοθήκη"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: περιέχει άκυρο αριθμό τόμου"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Υπερχήλιση αριθμού τόμου"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Προετοίμασε τον τόμο #%d για %s και πάτα το πλήκτρο επιστροφής γραμμής"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF (Τέλος Αρχείου) ενώ η απάντηση του χρήστη αναμενότανε"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ΠΡΟΕΙΔΟΠΟΊΗΣΗ: Η αρχειοθήκη είναι ημιτελής"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -720,71 +727,71 @@ msgstr ""
 " !          Παραγωγή νέου υπό-φλοιού\n"
 " ?          Εκτύπωση αυτής της λίστας\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Κανένας νέος τόμος; έξοδος\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "`%s' η εντολή απέτυχε"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s δεν συνεχίζεται σε αυτόν τον τόμο"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s δεν συνεχίζεται σε αυτόν τον τόμο"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s είναι το εσφαλμένο μέγεθος (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Αυτός ο τόμος είναι εκτός συνέχειας"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Η αρχειοθήκη δεν έχει ετικέτα για ταίριασμα %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Ο τόμος %s δεν ταιριάζει %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -795,20 +802,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Δυνατή μόνο η ανάγνωση %lu από %lu byte"
 msgstr[1] "Δυνατή μόνο η ανάγνωση %lu από %lu byte"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Τα περιεχόμενα διαφέρουν"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Μη αναμενόμενο EOF (Τέλος Αρχείου) στην αρχειοθήκη"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Οι τύποι αρχείων διαφέρουν"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Οι καταστάσεις διαφέρουν"
 
@@ -824,143 +831,143 @@ msgstr "Ταυτότητες ομάδας διαφέρουν"
 msgid "Mod time differs"
 msgstr "Ώρες τροποποίησης διαφέρουν"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Τα μεγέθη διαφέρουν"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Δεν είναι συνδεδεμένο με %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Οι σύνδεσμοι διαφέρουν"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Οι αριθμοί των συσκευών διαφέρουν"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Επαλήθευση "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Άγνωστος τύπος αρχείου '%c', εκτέλεση της diff ως κανονικό αρχείο"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "Η ΕΠΑΛΎΘΕΥΣΗ ΑΠΈΤΥΧΕ: ανιχνεύτηκαν %d άκυρη(ες) επικεφαλίδα(δες)"
 msgstr[1] "Η ΕΠΑΛΎΘΕΥΣΗ ΑΠΈΤΥΧΕ: ανιχνεύτηκαν %d άκυρη(ες) επικεφαλίδα(δες)"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "η τιμή %s είναι εκτός του %s εύρος %s..%s; αντικαταστήθηκε από %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "η τιμή %s είναι εκτός του %s εύρους %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Παράχθηκαν αρνητικές οκταδικές επικεφαλίδες"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: δεν μπορεί να τροποποιηθεί το αρχείο; δεν αποθηκεύτηκε"
 
-#: src/create.c:634
+#: src/create.c:621
 #, fuzzy, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: δεν μπορεί να τροποποιηθεί το αρχείο; δεν αποθηκεύτηκε"
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: δεν μπορεί να τροποποιηθεί το αρχείο; δεν αποθηκεύτηκε"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Το αρχείο συρρικνώθηκε σε %s bytes; συμπλήρωση με μηδενικά"
 msgstr[1] "%s: Το αρχείο συρρικνώθηκε σε %s bytes; συμπλήρωση με μηδενικά"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: το αρχείο είναι σε διαφορετικό σύστημα αρχείων; δεν αποθηκεύτηκε"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Άγνωστος τύπος αρχείου; το αρχείο αγνοήθηκε"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " σύνδεσμος σε %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: δεν μπορεί να τροποποιηθεί το αρχείο; δεν αποθηκεύτηκε"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: το αρχείο είναι η αρχειοθήκη; δεν αποθηκεύτηκε"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: αρχείο τροποποιήθηκε κατά την ανάγνωση"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: η υποδοχή αγνοήθηκε"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: η πόρτα αγνοήθηκε"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Παραλείποντας στην επόμενη επικεφαλίδα"
 
@@ -968,75 +975,75 @@ msgstr "Παραλείποντας στην επόμενη επικεφαλίδ
 msgid "Deleting non-header from archive"
 msgstr "Διαγραφή μη-επικεφαλίδων από την αρχειοθήκη"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: η ένδειξη χρόνου %s είναι %lu s στο μέλλον"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Μη αναμενόμενη ανακολουθία κατά την δημιουργία του καταλόγου"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Ο κατάλογος μετονομάστηκε πριν η κατάστασή του γίνει μη εξαγώγιμη"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Εξαγωγή συνεχόμενων αρχείων ως κανονικών αρχείων"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Προσπάθεια εξαγωγής των συμβολικών συνδέσμων ως σθεναρών συνδέσμων"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Δεν είναι δυνατή η εξαγωγή -- το αρχείο συνεχίζεται σε άλλο τόμο"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Μη αναμενόμενο EOF (Τέλος Αρχείου) στα κατακερματισμένα ονόματα"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Άγνωστος τύπος αρχείου '%c', εξαγωγή ως κανονικό αρχείο"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Δεν είναι δυνατή η αποθήκευση αυτού του αρχείου"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Δεν είναι δυνατή η μετονομασία σε %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Ο κατάλογος έχει μετονομαστεί"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Ο κατάλογος έχει μετονομαστεί"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Ο κατάλογος είναι καινούριος"
@@ -1148,35 +1155,35 @@ msgstr "%s: Διαγραφή %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Δεν είναι δυνατή η απομάκρυνση"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Παράλειψη"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "μπλοκ %s: ** Μπλοκ με χαρακτήρες NUL **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "μπλοκ %s: ** Τέλος Αρχείου **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "μπλοκ %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Κενά στην επικεφαλίδα ενώ αναμενόταν αριθμητική τιμή %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1184,140 +1191,142 @@ msgstr ""
 "συμπληρώματα"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Αρχειοθήκη οκταδικής τιμής %.*s είναι εκτός του %s εύρους"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Η αρχειοθήκη περιέχει απαρχαιωμένες επικεφαλίδες κωδικοποίησης base64"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 "Η αρχειοθήκη είναι υπογεγραμμένη με αλφαριθμητικά base-64 %s είναι εκτός του "
 "%s εύρους"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Η αρχειοθήκη με base-256 τιμές είναι εκτός του %s εύρους"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Η αρχειοθήκη περιέχει %.*s όπου αριθμητικές %s τιμές αναμένονται"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Η τιμή της αρχειοθήκης %s είναι εκτός του %s εύρους %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " σύνδεσμος σε %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " άγνωστος τύπος αρχείου %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Επικεφαλίδα Τόμου--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Συνέχιση στο byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Δημιουργία καταλόγου:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Δεν είναι δυνατή η τροποποίηση του τρέχοντος καταλόγου"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Μετονομασία %s σε %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Δεν είναι δυνατή η μετονομασία σε %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Μετονομασία %s πίσω στο %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Δεν είναι δυνατή η αποθήκευση του τρέχοντος καταλόγου"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Δεν είναι δυνατή η τροποποίηση του τρέχοντος καταλόγου"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Το αρχείο απομακρύνθηκε πριν το διαβάσουμε"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Το αρχείο απομακρύνθηκε πριν το διαβάσουμε"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "θυγατρική διεργασία"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "κανάλι μεταξύ διεργασιών"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Δεν βρέθηκε στην αρχειοθήκη"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Δεν βρέθηκε στην αρχειοθήκη"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Η αρχειοθήκη δεν έχει ετικέτα για ταίριασμα %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1341,7 +1350,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1362,7 +1371,7 @@ msgstr ""
 "archive.tar με λεπτομέρειες.\n"
 "  %s -xf archive.tar          # Εξάγει όλα τα αρχεία από το archive.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1385,80 +1394,80 @@ msgstr ""
 "διαφορετικά\n"
 "  never, simple   πάντα κάνε απλά αντίγραφα\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Μη αναμενόμενο EOF (Τέλος Αρχείου) στην αρχειοθήκη"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1466,565 +1475,565 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr ""
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 #, fuzzy
 msgid "extract files to standard output"
 msgstr "Σφάλμα κατά την εγγραφή στην κανονική έξοδο"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Δεν είναι δυνατή η επαλήθευση πολλαπλών αρχειοθηκών"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Συγκρουόμενες επιλογές διαμόρφωσης αρχειοθήκης"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Συγκρουόμενες επιλογές συμπίεσης"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Δεν είναι δυνατή η τροποποίηση του τρέχοντος καταλόγου"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Απομακρύνονται τα αρχικά `%.*s' από τα ονόματα των μελών"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "Ο τόμος %s δεν ταιριάζει %s"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2032,291 +2041,296 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Άκυρη κατάσταση δόθηκε σε επιλογή"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr ""
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Ίσως δεν καθορίσατε παραπάνω από μία επιλογή `-Acdtrux'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Συγκρουόμενες επιλογές συμπίεσης"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " άγνωστος τύπος αρχείου %s\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Το αρχείο ημερομηνίας δεν βρέθηκε"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Αντικατάσταση %s για άγνωστη διαμόρφωση ημερομηνίας %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: το αρχείο είναι η αρχειοθήκη; δεν αποθηκεύτηκε"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "%s: το αρχείο είναι η αρχειοθήκη; δεν αποθηκεύτηκε"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Άκυρος συντελεστής ομαδοποίησης"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Άκυρο μέγεθος ταινίας"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Παραπάνω από ένα όριο ημερομηνίας"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Άκυρη ομάδα"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Άκυρη κατάσταση δόθηκε σε επιλογή"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 #, fuzzy
 msgid "Invalid number"
 msgstr "Άκυρος αριθμός i-κόμβου"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Άκυρος ιδιοκτήτης"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Άκυρο μέγεθος εγγραφής"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Το μέγεθος της εγγραφής πρέπει να είναι πολλαπλάσιο του %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 #, fuzzy
 msgid "Invalid number of elements"
 msgstr "Άκυρο μέγεθος ταινίας"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr ""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr ""
 "Οι επιλογές `-[0-7][lmh]' δεν υποστηρίζονται από *αυτήν* την εντολή tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Παλιά επιλογή `%c' απαιτεί όρισμα."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Πολλαπλά αρχεία αρχειοθηκών απαιτούν την επιλογή `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Δεν είναι δυνατός ο συνδυασμός --listed-incremental με --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, fuzzy, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Η ετικέτα του τόμου είναι πολύ μεγάλη (το όριο είναι %lu byte)"
 msgstr[1] "%s: Η ετικέτα του τόμου είναι πολύ μεγάλη (το όριο είναι %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Δεν είναι δυνατή η επαλήθευση πολλαπλών αρχειοθηκών"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Δεν είναι δυνατή η επαλήθευση των συμπιεσμένων αρχειοθηκών"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Δεν είναι δυνατή η χρήση πολλαπλών συμπιεσμένων αρχειοθηκών"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Δεν είναι δυνατή η ανανέωση των συμπιεσμένων αρχειοθηκών"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Αρνούμαι δειλά στη δημιουργία μίας κενής αρχειοθήκης"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Οι επιλογές `-Aru' δεν είναι συμβατές με  `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Πρέπει να καθορίσεις μία από τις επιλογές `-Acdtrux'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2328,86 +2342,86 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Το αρχείο συρρικνώθηκε κάτα %s byte"
 msgstr[1] "%s: Το αρχείο συρρικνώθηκε κάτα %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Η ένδειξη χρόνου είναι εκτός εύρους"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr ""
 "Η αρχειοθήκη είναι υπογεγραμμένη με αλφαριθμητικά base-64 %s είναι εκτός του "
 "%s εύρους"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Η τιμή της αρχειοθήκης %s είναι εκτός του %s εύρους %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2448,247 +2462,258 @@ msgstr "Εγγραφή σημείου ελέγχου %d"
 msgid "Read checkpoint %u"
 msgstr "Ανάγνωση σημείου ελέγχου %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Παράγει αρχεία δεδομένων για δοκιμαστική πλατφόρμα GNU tar.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Συγκρουόμενες επιλογές συμπίεσης"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "Σφάλμα κατά την εγγραφή στην κανονική έξοδο"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Χρήση: %s [ΕΠΙΛΟΓΉ]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Άκυρη ένδειξη χρόνου"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Ο αριθμός του i-κόμβου είναι εκτός εύρους"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Άγνωστο σφάλμα συστήματος"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Δεν είναι δυνατό το κλείσιμο"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " άγνωστος τύπος αρχείου %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Δεν είναι δυνατή η αναζήτηση σε %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Δεν είναι δυνατή η αναζήτηση σε %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "Η θυγατρική διεργασία τερματίστηκε με το σήμα %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Κατακερματισμένα ονόματα αρχείων--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Δεν είναι δυνατή η αποθήκευση του τρέχοντος καταλόγου"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Δεν είναι δυνατή η μετονομασία σε %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: παράνομη επιλογή -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Ανάγνωση %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "\n"
@@ -2697,12 +2722,6 @@ msgstr "--Κατακερματισμένα ονόματα αρχείων--\n"
 #~ "\n"
 #~ "Αναφορά σφαλμάτων στο <bug-tar@gnu.org>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Ανάγνωση %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Το σφάλμα δεν είναι επανορθώσιμο: τερματισμός τώρα"
-
 #, fuzzy
 #~ msgid "filter the archive through compress"
 #~ msgstr "%s: το αρχείο είναι η αρχειοθήκη; δεν αποθηκεύτηκε"
@@ -2746,6 +2765,9 @@ msgstr "--Κατακερματισμένα ονόματα αρχείων--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Πρόωρο τέλος αρχείου"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Το σφάλμα δεν είναι επανορθώσιμο: τερματισμός τώρα"
+
 #~ msgid "block size"
 #~ msgstr "μέγεθος μπλοκ"
 
index 6fe9ec2a91c23d27505070dc4a0b0d1cdddab40e..69dd005cdd905f1086bc81c63631dbb1e315cfb8 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index 202a262ccfbb033f279f18530899c5ab5c84957c..604b1a7e5db0735f6df618cf9be474a87715b410 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -4,14 +4,16 @@
 # Enrique Melero <melero@iprolink.ch>, 1997.
 # Santiago Vila Doncel <sanvila@unex.es>, 1998, 1999, 2000, 2001, 2002, 2004.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU tar 1.15.1\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2004-12-27 20:45+0100\n"
 "Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n"
 "Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -104,7 +106,7 @@ msgstr "Pruebe `%s --help' o `%s --usage' para m
 msgid "Report bugs to %s.\n"
 msgstr "Comunicar bichos a %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Error del sistema desconocido"
 
@@ -118,8 +120,8 @@ msgstr "Da esta lista de ayuda"
 msgid "give a short usage message"
 msgstr "Da un mensaje de uso corto"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NOMBRE"
 
@@ -158,56 +160,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: la opción `%s' es ambigua\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: la opción `--%s' no admite ningún argumento\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: la opción `%s' requiere un argumento\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opción no reconocida `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opción no reconocida `%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: opción inválida -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: la opción requiere un argumento -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: la opción `-W %s' es ambigua\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: la opción `%s' requiere un argumento\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memoria agotada"
@@ -569,95 +576,95 @@ msgstr "No se puede acceder a la posici
 msgid "Cannot execute remote shell"
 msgstr "No se puede ejecutar un shell remoto"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Dirección de desplazamiento fuera de rango"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Se ha especificado un modo no válido en la opción"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Marca de tiempo inválida"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Desplazamiento fuera de rango"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Longitud de cinta inválida"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Desplazamiento fuera de rango"
 
 # FIXME. Este es el único eof en minúsculas.
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Fin de fichero prematuro\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Modo principal de operación:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Fin de fichero inesperado en el archivo"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NÚMERO"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FICHERO"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "No se puede abrir %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Orden ininteligible"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Esto no parece un archivo tar"
 
@@ -666,12 +673,12 @@ msgstr "Esto no parece un archivo tar"
 # "bytes escritos en total" suena demasiado complejo... Nicolás Lichtmaier.
 # Suena algo extraño eso de "total de bytes". "en total" me suena
 # mucho más natural. sv
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Bytes escritos en total: %s (%s, %s/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
@@ -680,7 +687,7 @@ msgstr ""
 # "bytes escritos en total" suena demasiado complejo... Nicolás Lichtmaier.
 # Suena algo extraño eso de "total de bytes". "en total" me suena
 # mucho más natural. sv
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Bytes escritos en total: %s (%s, %s/s)\n"
@@ -699,17 +706,17 @@ msgstr "Bytes escritos en total: %s (%s, %s/s)\n"
 # aparecer *varias* veces, y entonces sí que es una paliza.
 # Ejemplo de paliza: "tubería rota" en libc. Sale muchísimo y no es
 # cuestión de ver (pipe) cuarenta veces al día...
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(tubería)"
 
 # ¿No queda más bonita la 1ª comilla abierta así: `record_size'?
 # Sí. FIXME. Comunicar al autor. sv
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "El valor de `record_size' no es válido"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "No se ha especificado ningún nombre de archivo"
 
@@ -728,69 +735,69 @@ msgstr "No se ha especificado ning
 # o algo así. Quizá "No se puede verificar un archivo tomado de la entrada
 # estándar o escrito hacia la salida estándar", pero es un poco largo.. =)
 #
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "No se puede verificar la entrada/salida estándar"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "El archivo está comprimido. Utilice la opción %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "No se pueden actualizar archivos comprimidos"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Al principio de la cinta, se terminará ahora"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Demasiados errores, abandono"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Tamaño del registro = %lu bloque"
 msgstr[1] "Tamaño del registro = %lu bloques"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Bloque no alineado (%lu byte) dentro del archivo"
 msgstr[1] "Bloque no alineado (%lu bytes) dentro del archivo"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "No se puede ir hacia atrás en el archivo; puede ser ilegible sin -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek no paró en los límites de un registro"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: contiene un número de volumen inválido"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Desbordamiento en el número de volumen"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Prepare el volumen #%d para %s y pulse intro: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr ""
 "Se encontró un final de fichero mientras se esperaba respuesta del usuario"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ATENCIÓN: El archivo está incompleto"
 
@@ -822,7 +829,7 @@ msgstr "ATENCI
 # A mí aquí me da igual lista que ayuda, de las dos formas se entiende. Manda
 # el traductor original. gerardo
 # ¿A alguien más le parece mal que ponga ayuda en vez de lista? sv
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -835,12 +842,12 @@ msgstr ""
 " !          Lanza un subshell\n"
 " ?          Muestra esta ayuda\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
@@ -851,35 +858,35 @@ msgstr ""
 # Uno se sale del programa, y éste acaba. En realidad, también da igual, de
 # cualquier forma se entiende, pero mejor acabar o terminar que finalizar,
 # total, son sinónimos. gerardo
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "No hay volumen nuevo; finalizando.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "La orden `%s' falló"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s no continúa en este volumen"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s no continúa en este volumen"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s tiene un tamaño erróneo (%s != %s + %s)"
@@ -899,7 +906,7 @@ msgstr "%s tiene un tama
 # él solito.
 # Todavía espero una solución mágica que sea mejor que las dos
 # que tenemos hasta ahora.
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Este volumen está fuera de secuencia"
@@ -910,17 +917,17 @@ msgstr "Este volumen est
 # Si no se sabe eso, se podría dejar de forma más neutra como
 # "Archivo no etiquetado para concordancia con `%s'" - gerardo (gag)
 # FIXME: Preguntar.
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "El archivo no está etiquetado para que coincida con %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "El volumen %s no coincide con %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, fuzzy, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -932,7 +939,7 @@ msgstr ""
 # Según gag y jmg, hay que decir: "no está en un límite de bloque", pues
 # no estamos hablando de un bloque concreto (el bloque) sino de uno cualquiera.
 # FIXME: Entonces tal vez el original debería decir "on a block boundary". sv
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "El fin del archivo %s no está en un límite de bloque"
@@ -944,16 +951,16 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Sólo se pudieron leer %lu de %lu byte"
 msgstr[1] "Sólo se pudieron leer %lu de %lu bytes"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "El contenido es distinto"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Fin de fichero inesperado en el archivo"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "El tipo de fichero es distinto"
 
@@ -963,7 +970,7 @@ msgstr "El tipo de fichero es distinto"
 # corresponder siempre una frase corta española, el resultado sonará a indio
 # completamente (me refiero a los indios esos de las películas del oeste,
 # que solamente hablan con sustantivos, verbos y adjetivos). sv
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "El modo es distinto"
 
@@ -979,30 +986,30 @@ msgstr "El gid es distinto"
 msgid "Mod time differs"
 msgstr "La fecha de modificación es distinta"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "El tamaño es distinto"
 
 # Creo que este enlace se efectúa al descomprimir un archivo tar.
 # No es que nos diga si está enlazado o no lo está, sino si él hace
 # el enlace o no lo hace. sv
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "No se enlaza a %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "El enlace simbólico es distinto"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "El número de dispositivo es distinto"
 
 # "Verifica ". Supongo que depende de si se concatena en algún
 # mensaje. jmg
 # FUZZY. Es verdad, habrá que verlo.
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verificar "
@@ -1015,66 +1022,66 @@ msgstr "Verificar "
 # Realmente, dice lo que hace y no lo que ha hecho. sv
 # FIXME. Decirle al autor que estandarice las comillas: ¿'%c' o `%c'?
 # De momento lo estandarizo en la traducción.
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s: Tipo de fichero `%c' desconocido, se toma la diferencia\n"
 "como fichero normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 "El archivo contiene nombres de fichero con los prefijos iniciales eliminados."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Puede que la verificación no encuentre los ficheros originales."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "FALLO DE VERIFICACIÓN: %d cabecera inválida detectada"
 msgstr[1] "FALLO DE VERIFICACIÓN: %d cabeceras inválidas detectadas"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Un bloque de ceros aislado en %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, fuzzy, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: contiene una marca de directorio caché; no se vuelca"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "valor %s fuera del rango %s %s..%s; se sustituye %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "valor %s fuera del rango %s %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Generando cabeceras octales negativas"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: el nombre del fichero es demasiado largo (máx %d); no se vuelca"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: el nombre del fichero es demasiado largo (no se puede dividir); no se "
 "vuelca"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: el nombre del enlace es demasiado largo; no se vuelca"
@@ -1087,7 +1094,7 @@ msgstr "%s: el nombre del enlace es demasiado largo; no se vuelca"
 # Que sí, reconozco que la traducción es un poco libre.
 # Pero mi intención es que el programa diga lo que va haciendo, no lo que ya
 # ha hecho. Ni siquiera el original es consistente en los modos verbales. sv
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -1096,13 +1103,13 @@ msgstr[0] ""
 msgstr[1] ""
 "%s: El tamaño del fichero ha disminuido en %s bytes, se rellena con ceros"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: el fichero está en un sistema de ficheros distinto; no se vuelca"
 
 # Se vuelca la *memoria* del proceso en un fichero llamado `core'.
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 #, fuzzy
 msgid "contents not dumped"
 msgstr " (memoria volcada)"
@@ -1123,48 +1130,48 @@ msgstr " (memoria volcada)"
 # Seguiremos en la ortodoxia, pero aún así, no puedo creerme que venga
 # en el DRAE. ¿Estás seguro? sv
 # No, no me compré el DRAE. Pregúntalo a spanglish (si te atreves ;-) gerardo
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tipo de fichero desconocido; no se tendrá en cuenta"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Faltan enlaces a '%s'.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: el fichero no ha cambiado; no se vuelca"
 
 # FIXME: Decir al autor que ponga el "itself". sv
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: el fichero es el propio archivo; no se vuelca"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 #, fuzzy
 msgid "directory not dumped"
 msgstr "%s: contiene una marca de directorio caché; no se vuelca"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: el fichero cambió mientras se estaba leyendo"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: el `socket' no se tendrá en cuenta"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: no se tendrá en cuenta la puerta"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Saltando a la siguiente cabecera"
 
@@ -1172,22 +1179,22 @@ msgstr "Saltando a la siguiente cabecera"
 msgid "Deleting non-header from archive"
 msgstr "Borrando no-cabecera del archivo"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: marca de fecha sospechosamente antigua %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: la marca de tiempo %s está %lu s en el futuro"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Inconsistencia inesperada al crear el directorio"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
@@ -1197,7 +1204,7 @@ msgstr ""
 # ni un dispositivo (de bloques o de caracteres) ni un fifo, etc.
 # Uno puede pensar que son los ficheros "normales", pero eso depende,
 # pues un directorio es de lo más "normal"...
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extrayendo ficheros contiguos como ficheros regulares"
 
@@ -1206,55 +1213,55 @@ msgstr "Extrayendo ficheros contiguos como ficheros regulares"
 # Es una cuestión todavía no dirimida.
 # ¿Tienes algún dato más? ¿Qué dicen los libros? sv
 # Enlaces duros. Lo acabo de mirar en un libro. gag
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Intentando la extracción de enlaces simbólicos como enlaces duros"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: No se puede extraer -- el fichero es continuación de otro volumen"
 
 # ¿No se referirá al autor a "mangled filenames"?... jmg
 # FIXME. Preguntárselo.
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Fin de fichero inesperado en los nombres modificados"
 
 # FIXME. Lo de las comillas '%c'.
 # Como antes, lo estandarizo en la traducción a pesar de todo.
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Tipo de fichero `%c' desconocido, se extrae como fichero normal"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, fuzzy, c-format
 msgid "Current %s is newer or same age"
 msgstr "El `%s' actual es más reciente"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: No se pudo hacer copia de seguridad de este fichero"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: No se puede renombrar a %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: El directorio ha sido renombrado"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: El directorio ha sido renombrado"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: El directorio es nuevo"
@@ -1369,35 +1376,35 @@ msgstr "%s: Borrando %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: No se puede borrar"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Se omite"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloque %s: ** Bloque de NULos **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloque %s: ** Fin de Fichero **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "bloque %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Hay blancos en la cabecera cuando se esperaba el valor numérico %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1405,140 +1412,148 @@ msgstr ""
 "se supone complemento a dos"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "El valor octal %.*s del archivo está fuera del rango %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "El archivo contiene cabeceras base 64 obsoletas"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "La cadena firmada en base 64 %s del archivo está fuera del rango %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "El valor en base 256 del archivo está fuera del rango %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "El archivo contiene %.*s donde se esperaba el valor numérico %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, fuzzy, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "El valor del archivo %s está fuera del rango %s %s.%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " enlace a %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tipo de fichero desconocido %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Enlace largo--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Nombre largo--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Cabecera de Volumen--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Continúa en el byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Creando el directorio:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "No se puede cambiar el directorio de trabajo"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Se renombra %s como %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: No se puede renombrar a %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Se vuelve a renombrar %s como %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "No se puede guardar el directorio de trabajo"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "No se puede cambiar el directorio de trabajo"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: El fichero fue borrado antes de leerlo"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: El fichero fue borrado antes de leerlo"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proceso hijo"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "canal de interproceso"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr ""
 "los patrones de exclusión encajan con el comienzo del nombre del fichero"
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: No se encuentra en el archivo"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: El elemento solicitado no se encuentra en el archivo"
 
-#: src/names.c:894
+# Ojo que esto podría referirse a "is not being labelled NOW" en vez de
+# "isn't labelled". Pero no tengo los fuentes para ver la intención
+# original. nl
+# Si no se sabe eso, se podría dejar de forma más neutra como
+# "Archivo no etiquetado para concordancia con `%s'" - gerardo (gag)
+# FIXME: Preguntar.
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "El archivo no está etiquetado para que coincida con %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1577,7 +1592,7 @@ msgstr ""
 # # nil: numeradas... simples... (en plural)
 # # never, simPle (falta una pe): backup -> copia de seguridad. gag
 # Estoy de acuerdo con lo de gag (más arriba usas eso mismo). jmg
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1622,7 +1637,7 @@ msgstr ""
 # # nil: numeradas... simples... (en plural)
 # # never, simPle (falta una pe): backup -> copia de seguridad. gag
 # Estoy de acuerdo con lo de gag (más arriba usas eso mismo). jmg
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1653,71 +1668,71 @@ msgstr ""
 "                  en otro caso\n"
 "  never, simple   siempre hace copias de seguridad simples\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Modo principal de operación:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "lista el contenido de un archivo"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "extrae ficheros de un archivo"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "crea un nuevo archivo"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "encuentra las diferencias entre un archivo y el sistema de ficheros"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "añade ficheros al final de un archivo"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "solamente añade ficheros más recientes que la copia del archivo"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "añade ficheros tar a un archivo"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "borra del archivo (¡no en cintas magnéticas!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Modificadores de operación:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "maneja ficheros dispersos de forma eficiente"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "maneja el formato GNU antiguo de respaldo incremental"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "maneja el nuevo formato GNU de respaldo incremental"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
@@ -1728,11 +1743,11 @@ msgstr ""
 # # encuentre ficheros ilegibles. (¡Uf! Ahora a ver cómo se pone esto en
 # # media línea.) gag
 #
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "no sale con estado distinto de cero cuando hay ficheros ilegibles"
 
-#: src/tar.c:428
+#: src/tar.c:429
 #, fuzzy
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
@@ -1746,211 +1761,211 @@ msgstr ""
 "órdenes o con la opción -T. El valor predeterminado de NUM es 1."
 
 # Mejor eso que inventarse un palabro, digo yo. sv
-#: src/tar.c:434
+#: src/tar.c:435
 #, fuzzy
 msgid "archive is seekable"
 msgstr "El archivo admite `seek'"
 
 # Mejor eso que inventarse un palabro, digo yo. sv
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "El archivo admite `seek'"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "intenta verificar el archivo después de escribirlo"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "borra los ficheros después de añadirlos al archivo"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "no reemplaza ficheros que existan al extraer"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "no reemplaza los ficheros que existan que sean más recientes que sus copias "
 "en el archivo"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "sobreescribe los ficheros que existan al extraer"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "borra cada fichero antes de extraer sobre él"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "vacía jerarquías antes de extraer directorios"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "conserva los metadatos de los directorios que existan"
 
-#: src/tar.c:466
+#: src/tar.c:467
 #, fuzzy
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "sobreescribe los ficheros que existan al extraer"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "extrae los ficheros a la salida estándar"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "ORDEN"
 
-#: src/tar.c:477
+#: src/tar.c:478
 #, fuzzy
 msgid "pipe extracted files to another program"
 msgstr "extrae los ficheros a la salida estándar"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Manejo de los atributos del fichero:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "fuerza NOMBRE como propietario de los ficheros que se añaden"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "fuerza NOMBRE como grupo para los ficheros que se añaden"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "FECHA-O-FICHERO"
 
-#: src/tar.c:493
+#: src/tar.c:494
 #, fuzzy
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "almacena solamente ficheros más recientes que FECHA-O-FICHERO"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "CAMBIOS"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "fuerza CAMBIOS (simbólicos) de modo para los ficheros que se añaden"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "no extrae la fecha de modificación del fichero"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "intenta extraer los ficheros con el mismo propietario"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "extrae los ficheros como usted mismo"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "utiliza siempre números para los nombres de usuarios/grupos"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "ordena los nombres que se extraen para que coincidan con el archivo"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "lo mismo que -p y -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Selección de dispositivo y opciones:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIVO"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "utiliza un archivo o el dispositivo ARCHIVO"
 
-#: src/tar.c:534
+#: src/tar.c:535
 #, fuzzy
 msgid "archive file is local even if it has a colon"
 msgstr "el archivo es local incluso si tiene dos puntos"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "utiliza la ORDEN rmt dada en vez de rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "utiliza la ORDEN remota en vez de rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "especifica la unidad y la densidad"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "crea/lista/extrae un archivo multivolumen"
 
@@ -1964,38 +1979,38 @@ msgstr "crea/lista/extrae un archivo multivolumen"
 # x × - gerardo
 # Efectivamente, pero no es transportable, el que use tar bajo DJGPP
 # le saldría un churro pues el aspa no existe en la tabla 850. sv
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "cambia la cinta después de escribir NÚMERO x 1024 bytes"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "ejecuta un script al final de cada cinta (implica -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "usa/actualiza el número de volumen en FICHERO"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Bloques en los dispositivos:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOQUES"
 
 # Sigo en mis 13 y en esto no hay quien me baje del burro: BLOQUES x 512 bytes
 # debe ser BLOQUES × 512 bytes. gerardo
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOQUES x 512 bytes por registro"
 
-#: src/tar.c:573
+#: src/tar.c:574
 #, fuzzy
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "TAMAÑO bytes por registro, múltiplo de 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 "no tiene en cuenta los bloques convertidos en ceros dentro de un archivo "
@@ -2010,7 +2025,7 @@ msgstr ""
 # # requetequetequete... (longitud infinita). Pelín ssagerao, ¿no? gag
 #
 # Bueno, al final he puesto lo que se ve, un poco menos raro que rebloquear. sv
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "rehace los bloques conforme se lee (para tuberías de 4.2BSD)"
 
@@ -2019,70 +2034,70 @@ msgstr "rehace los bloques conforme se lee (para tuber
 # salida estándar' no pega mucho. Está en otros mensajes, como el
 # siguiente; no lo entiendo. - gerardo
 # FIXME. Tienes razón. Es muy raro.
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Selección del formato de archivo:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMATO"
 
-#: src/tar.c:585
+#: src/tar.c:586
 #, fuzzy
 msgid "create archive of the given format"
 msgstr "crea un archivo en el formato dado."
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMATO es uno de los siguientes:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "formato tar V7 antiguo"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "formato GNU de tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "formato GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "formato POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "formato POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 #, fuzzy
 msgid "same as pax"
 msgstr "Lo mismo que pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "lo mismo que --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "lo mismo que --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 #, fuzzy
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "palabra[[:]=valor][,palabra[[:]=valor], ...]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "palabras clave de control de pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXTO"
 
-#: src/tar.c:608
+#: src/tar.c:609
 #, fuzzy
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
@@ -2091,63 +2106,63 @@ msgstr ""
 "crea un archivo con nombre de volumen NOMBRE. En el momento de listar/"
 "extraer, utiliza TEXTO como patrón expandible"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Opciones de compresión en conflicto"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "No se puede escribir al programa de compresión"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "No se puede escribir al programa de compresión"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "filtra a través de PROG (debe aceptar -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Selección del fichero local:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "cambia al directorio DIR"
 
-#: src/tar.c:643
+#: src/tar.c:644
 #, fuzzy
 msgid "get names to extract or create from FILE"
 msgstr "obtiene los nombres que se van a extraer o crear del fichero NOMBRE"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T lee nombres terminados en nulo, desactiva -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
@@ -2156,115 +2171,115 @@ msgstr ""
 # de expansión de nombres de ficheros, como * y ?, mientras que
 # el segundo se refiere a expresiones regulares como las de grep,
 # es decir, ^, $, ., *, etc.
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATRÓN"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "excluye ficheros, dados como un PATRÓN"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "excluye los patrones listados en FICHERO"
 
-#: src/tar.c:657
+#: src/tar.c:658
 #, fuzzy
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "excluye los directorios que contienen una marca de caché"
 
-#: src/tar.c:660
+#: src/tar.c:661
 #, fuzzy
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "excluye los directorios que contienen una marca de caché"
 
-#: src/tar.c:663
+#: src/tar.c:664
 #, fuzzy
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "excluye los directorios que contienen una marca de caché"
 
-#: src/tar.c:665
+#: src/tar.c:666
 #, fuzzy
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "excluye los directorios que contienen una marca de caché"
 
-#: src/tar.c:668
+#: src/tar.c:669
 #, fuzzy
 msgid "exclude everything under directories containing FILE"
 msgstr "excluye los directorios que contienen una marca de caché"
 
-#: src/tar.c:670
+#: src/tar.c:671
 #, fuzzy
 msgid "exclude directories containing FILE"
 msgstr "excluye los directorios que contienen una marca de caché"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "evita descender automáticamente en los directorios"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "permanece en el sistema de ficheros locales al crear el archivo"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "opera recursivamente sobre los directorios (por omisión)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "no elimina la `/' inicial de los nombres de ficheros"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NOMBRE-DE-MIEMBRO"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "comienza por el miembro NOMBRE-DE-MIEMBRO dentro del archivo"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "almacena solamente ficheros más recientes que FECHA-O-FICHERO"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "FECHA"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "compara la fecha y hora solamente cuando cambian los datos"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "se hace un respaldo antes de borrar, escoja el CONTROL de versión"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "CADENA"
 
-#: src/tar.c:697
+#: src/tar.c:698
 #, fuzzy
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
@@ -2274,105 +2289,105 @@ msgstr ""
 "que se\n"
 "cambie con la variable de entorno SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 #, fuzzy
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "elimina NÚMERO componentes iniciales de los nombres de ficheros"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 #, fuzzy
 msgid "ignore case"
 msgstr "la exclusión no distingue mayúsculas de minúsculas"
 
-#: src/tar.c:718
+#: src/tar.c:719
 #, fuzzy
 msgid "patterns match file name start"
 msgstr ""
 "los patrones de exclusión encajan con el comienzo del nombre del fichero"
 
-#: src/tar.c:720
+#: src/tar.c:721
 #, fuzzy
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "los patrones de exclusión encajan después de cualquier / (por omisión)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 #, fuzzy
 msgid "case sensitive matching (default)"
 msgstr "la exclusión distingue mayúsculas de minúsculas (por omisión)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "los comodines de patrones de exclusión no encajan con '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 #, fuzzy
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 "los comodines de los patrones de exclusión encajan con '/' (por omisión)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Salida informativa:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "lista los ficheros procesados detalladamente"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 #, fuzzy
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "muestra mensajes de progreso cada 10 registros"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "muestra un mensaje si no se vuelcan todos los enlaces"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2380,28 +2395,33 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "muestra las fechas de modificación de los ficheros en UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "envía la salida detallada a FICHERO"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "muestra el número de bloque dentro del archivo con cada mensaje"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "pide confirmación para cada acción"
 
-#: src/tar.c:764
+#: src/tar.c:767
 #, fuzzy
 msgid "show tar defaults"
 msgstr "Muestra los valores predeterminados de tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 #, fuzzy
 msgid ""
 "when listing or extracting, list each directory that does not match search "
@@ -2410,31 +2430,31 @@ msgstr ""
 "Cuando se lista o extrae, lista cada directorio que no coincida con el "
 "criterio de búsqueda"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Opciones de compatibilidad:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 #, fuzzy
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
@@ -2443,66 +2463,66 @@ msgstr ""
 "al crear, lo mismo que --old-archive. Al extraer, lo mismo que --no-same-"
 "owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Otras opciones:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "No se puede especificar más de una opción `-Acdtrux'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Opciones de compresión en conflicto"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " tipo de fichero desconocido %s\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "No se encontró la fecha del fichero"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Sustituyendo %s por el formato de fecha desconocido %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, fuzzy, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Se trata la fecha `%s' como %s + %ld nanosegundo"
 
 # FIXME: Decir al autor que ponga el "itself". sv
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: el fichero es el propio archivo; no se vuelca"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
 # FIXME: Decir al autor que ponga el "itself". sv
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "filtra el arhivo a través de gzip"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2510,15 +2530,15 @@ msgstr ""
 "\n"
 "Las opciones predeterminadas de *esta* versión de tar son:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Factor de bloqueo inválido"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Longitud de cinta inválida"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
@@ -2528,109 +2548,109 @@ msgstr ""
 # Es "umbral", pero no sé qué c$%&# es la fecha umbral. :-( gag
 # A ver si te vale así. sv
 # ¿Qué tal os suena "fecha límite"?. jmg
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Se ha especificado más de una fecha tope"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Grupo inválido"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Se ha especificado un modo no válido en la opción"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Número inválido"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Propietario inválido"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "El tamaño del registro es inválido"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "El tamaño del registro debe ser múltiplo de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Número inválido de elementos"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, fuzzy, c-format
 msgid "Malformed density argument: %s"
 msgstr "Argumento de densidad mal formado: '%s'"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, fuzzy, c-format
 msgid "Unknown density: `%c'"
 msgstr "Densidad desconocida: '%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "*Esta* versión de tar no admite las opciones `-[0-7][lmh]'"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FICHERO]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "La opción antigua `%c' requiere un argumento"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence no tiene sentido sin una lista de ficheros"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "no se puede usar --occurrence en el modo de operación solicitado"
 
 # requieren -> necesitan. gerardo
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Los archivos múltiples requieren la opción `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "No se puede combinar --listed-incremental con --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--occurrence no tiene sentido sin una lista de ficheros"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2639,50 +2659,50 @@ msgstr[0] ""
 msgstr[1] ""
 "%s: La etiqueta de volumen es demasiado larga (el límite es %lu bytes)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "No se pueden verificar archivos multivolumen"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "No se pueden verificar archivos comprimidos"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "No se pueden utilizar archivos multivolumen comprimidos"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "No se pueden actualizar archivos comprimidos"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option solamente se puede usar en archivos POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
 # Me gusta más al verrés: cobarde rechazo [de la pradera] a... gerardo
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Rechazo cobarde a crear un archivo vacío"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Las opciones `-Aru' son incompatibles con `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Debe especificar una de las opciones `-Acdtrux'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2709,88 +2729,88 @@ msgstr[0] "%s: El tama
 msgstr[1] "%s: El tamaño del fichero ha disminuido en %s bytes"
 
 # FIXME: Imlemented
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, fuzzy, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "La palabra clave %s es desconocida o no está implementada todavía"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Marca de tiempo fuera de rango"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "No se puede usar el patrón %s"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "La palabra clave %s no se puede sustituir"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 #, fuzzy
 msgid "Malformed extended header: missing length"
 msgstr "Cabecera extendida errónea: falta un signo igual"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "La cadena firmada en base 64 %s del archivo está fuera del rango %s"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 #, fuzzy
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 "Cabecera extendida errónea: falta un espacio en blanco después de la longitud"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Cabecera extendida errónea: falta un signo igual"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 #, fuzzy
 msgid "Malformed extended header: missing newline"
 msgstr "Cabecera extendida errónea: falta un signo igual"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "El valor del archivo %s está fuera del rango %s %s.%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Cabecera extendida errónea: falta un signo igual"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, fuzzy, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Cabecera extendida errónea: falta un signo igual"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Cabecera extendida errónea: falta un signo igual"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Cabecera extendida errónea: falta un signo igual"
@@ -2834,199 +2854,199 @@ msgstr "Punto de comprobaci
 # Acepto sugerencias para el `test suite'. sv
 # "test suite"="paquete/conjunto de pruebas/análisis", en cualquier
 # combinación. jmg
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Genera ficheros de datos para el conjunto de pruebas de GNU tar.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Otras opciones:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 #, fuzzy
 msgid "Create file of the given SIZE"
 msgstr "crea un archivo en el formato dado."
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "extrae los ficheros a la salida estándar"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 #, fuzzy
 msgid "Read file names from FILE"
 msgstr "Leídos %s bytes como %s"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 #, fuzzy
 msgid "-T reads null-terminated names"
 msgstr "-T lee nombres terminados en nulo, desactiva -C"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 #, fuzzy
 msgid "Seek to the given offset before writing data"
 msgstr "intenta verificar el archivo después de escribirlo"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [OPCIÓN...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 #, fuzzy
 msgid "Update the access and modification times of FILE"
 msgstr "%s: No se pueden cambiar las fechas de acceso y modificación"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 #, fuzzy
 msgid "Execute COMMAND"
 msgstr "ORDEN"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Marca de tiempo inválida"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Número de nodo-i fuera de rango"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Error del sistema desconocido"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, fuzzy, c-format
 msgid "cannot open `%s'"
 msgstr "No se puede abrir %s"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "No se puede cerrar"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " tipo de fichero desconocido %s\n"
@@ -3037,54 +3057,65 @@ msgstr " tipo de fichero desconocido %s\n"
 # ser: "No se puede hacer stat() del fichero %s", o "stat() ha fallado..."
 # Aunque tal como está es más descriptivo para el neófito, desde
 # luego. gag
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "No se puede leer el estado del fichero %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "No se puede abrir %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "El proceso hijo terminó con la señal %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Nombres de fichero modificados--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "No se puede guardar el directorio de trabajo"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: No se puede renombrar a %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: opción ilegal -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Leyendo %s\n"
+
 # Por favor, no me digáis cómo se traduce bug.
 # Gerardo lo ha visto traducido en un libro como "pulgas", y yo
 # lo he visto como "chinche" en la "Investigación y Ciencia".
@@ -3108,12 +3139,6 @@ msgstr "--Nombres de fichero modificados--\n"
 #~ "\n"
 #~ "Comunicar bichos a <%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Leyendo %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "El error no es recuperable: salida ahora"
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "filtra el archivo a través de bzip2"
 
@@ -3165,6 +3190,9 @@ msgstr "--Nombres de fichero modificados--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Fin de fichero prematuro"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "El error no es recuperable: salida ahora"
+
 #~ msgid "block size"
 #~ msgstr "tamaño del bloque"
 
@@ -3803,8 +3831,8 @@ msgstr "--Nombres de fichero modificados--\n"
 
 #~ msgid "%s: Cannot chown to uid %lu gid %lu"
 #~ msgstr ""
-#~ "%s: No se puede cambiar el propietario y grupo con `chown' a uid %lu gid %"
-#~ "lu"
+#~ "%s: No se puede cambiar el propietario y grupo con `chown' a uid %lu gid "
+#~ "%lu"
 
 #~ msgid "%s: lseek error at byte %s"
 #~ msgstr "%s: error de desplazamiento en el byte %s"
index 371ed25dae8ca1c8527b3b7ca3fa4f1f655b1b80..f73d64fec2657f7ec0e4b34929fa4c93b5b94b16 100644 (file)
Binary files a/po/et.gmo and b/po/et.gmo differ
index bc64f8d67189a1bf18be42a106320804ea4e8070..3e9457e6be3d35a68b017b2c2a29ed1b67fb9fad 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -1,15 +1,18 @@
+# This file is distributed under the same license as the tar package.
 # Estonian translations for GNU tar.
 # Copyright (C) 2001 Free Software Foundation, Inc.
-# Toomas Soome <Toomas.Soome@microlink.ee>, 2006.
+# Toomas Soome <Toomas.Soome@microlink.ee>, 2010.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU tar 1.15.92\n"
+"Project-Id-Version: GNU tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2006-10-26 14:45+0300\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-08-11 17:57+0300\n"
 "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
-"Language-Team: Estonian <et@li.org>\n"
+"Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
+"Language: et\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-15\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -85,7 +88,7 @@ msgstr "`%s --help' v
 msgid "Report bugs to %s.\n"
 msgstr "Teated vigadest saatke palun aadressil %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Tundmatu süsteemi viga"
 
@@ -97,8 +100,8 @@ msgstr "n
 msgid "give a short usage message"
 msgstr "näita lühikest kasutamise õpetust"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NIMI"
 
@@ -134,71 +137,76 @@ msgstr "(PROGRAMMI VIGA) V
 
 #: gnu/closeout.c:114
 msgid "write error"
-msgstr ""
+msgstr "viga kirjutamisel"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: võti `%s' on segane\n"
+msgstr "%s: võti '%s' on segane\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: võtmel `--%s' pole argumente\n"
+msgstr "%s: võtmel '--%s' pole argumente\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: võtmel `%c%s' pole argumente\n"
+msgstr "%s: võtmel '%c%s' pole argumente\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: võti `%s' nõuab argumenti\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: võti '--%s' nõuab argumenti\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: tundmatu võti `--%s'\n"
+msgstr "%s: tundmatu võti '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: tundmatu võti `%c%s'\n"
+msgstr "%s: tundmatu võti '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: vigane võti -- %c\n"
+msgstr "%s: vigane võti -- '%c'\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: võti nõuab argumenti -- %c\n"
+msgstr "%s: võti nõuab argumenti -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: võti `-W %s' on segane\n"
+msgstr "%s: võti '-W %s' on segane\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: võti `-W %s' ei luba argumenti\n"
+msgstr "%s: võti '-W %s' ei luba argumenti\n"
+
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: võti '-W %s' nõuab argumenti\n"
 
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "mälu on otsas"
 
 #: gnu/openat-die.c:36
-#, fuzzy, c-format
+#, c-format
 msgid "unable to record current working directory"
-msgstr "Ei õnnestu vahetada töökataloogi"
+msgstr "ei õnnestu salvestada jooksvat töökataloogi"
 
 #: gnu/openat-die.c:54
-#, fuzzy, c-format
+#, c-format
 msgid "failed to return to initial working directory"
-msgstr "Töökataloogi ei õnnestu salvestada"
+msgstr "algsesse töökataloogi ei õnnestu tagasi minna"
 
 #. TRANSLATORS:
 #. Get translations for open and closing quotation marks.
@@ -250,19 +258,19 @@ msgstr "^[eE]"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Paketi looja %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Paketi looja %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
 #. locale.  Otherwise, do not translate "(C)"; leave it as-is.
 #: gnu/version-etc.c:86
 msgid "(C)"
-msgstr ""
+msgstr "©"
 
 #: gnu/version-etc.c:88
 msgid ""
@@ -273,24 +281,30 @@ msgid ""
 "There is NO WARRANTY, to the extent permitted by law.\n"
 "\n"
 msgstr ""
+"\n"
+"Litsents GPLv3+: GNU GPL versioon 3 või uuem <http://gnu.org/licenses/gpl."
+"html>.\n"
+"See on vaba tarkvara: teil on lubatud seda muuta ja levitada.\n"
+"GARANTII PUUDUB, vastaval seadusega lubatud piiridele.\n"
+"\n"
 
 #. TRANSLATORS: %s denotes an author name.
 #: gnu/version-etc.c:104
 #, c-format
 msgid "Written by %s.\n"
-msgstr ""
+msgstr "Kirjutanud %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #: gnu/version-etc.c:108
 #, c-format
 msgid "Written by %s and %s.\n"
-msgstr ""
+msgstr "Kirjutanud %s ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #: gnu/version-etc.c:112
 #, c-format
 msgid "Written by %s, %s, and %s.\n"
-msgstr ""
+msgstr "Kirjutanud %s, %s ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -301,6 +315,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "and %s.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -311,6 +327,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, and %s.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -321,6 +339,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, %s, and %s.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -331,6 +351,8 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, %s, %s, and %s.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -342,6 +364,9 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "and %s.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -353,6 +378,9 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "%s, and %s.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s ja %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -364,38 +392,42 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "%s, %s, and others.\n"
 msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s ja teised.\n"
 
 #. TRANSLATORS: The placeholder indicates the bug-reporting address
 #. for this package.  Please add _another line_ saying
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
-msgstr "Teated vigadest saatke palun aadressil %s.\n"
+msgstr ""
+"\n"
+"Teated vigadest saatke palun aadressil: %s\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
-msgstr ""
-"\n"
-"Teated vigadest saatke palun aadressil <%s>.\n"
+msgstr "Teated %s vigadest saatke palun aadressil: %s\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "%s koduleht: <%s>\n"
 
 #: gnu/version-etc.c:255
 #, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr ""
+msgstr "%s koduleht: <http://www.gnu.org/software/%s/>\n"
 
 #: gnu/version-etc.c:258
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"Üldine abiinfo GNU tarkvara kasutamisest: <http://www.gnu.org/gethelp/>\n"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -502,197 +534,190 @@ msgstr "standard v
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Ei õnnestu luua ühendust masinaga %s: nimelahendus ebaõnnestus"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Ei saa käivitada kaug käsuinterpretaatorit"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Otsimise suund on piiridest väljas"
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Võtmega anti vigane mood"
+msgstr "Vigane seek suund"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Vigane suurus: %s"
+msgstr "Vigane seek indeks"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Otsimise indeks on piiridest väljas"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Vigane lindi pikkus"
+msgstr "Vigane baitide arv"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "Otsimise indeks on piiridest väljas"
+msgstr "Baitide arv on piiridest väljas"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd: Ootamatu faili lõpp\n"
+msgstr "Ootamatu faili lõpp"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "Põhiline töö:"
+msgstr "Vigane operatsiooni kood"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Operatsioon ei ole toetatud"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "Tükeldatud nimedel ootamatu faililõpp"
+msgstr "Ootamatud argumendid"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
-msgstr ""
+msgstr "Opereeri lindiseadet, aktsepteerib käske mittelokaalselt protsessilt"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "N"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "määra silumise tase"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FAIL"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "sea silumisteadete faili nimi"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
-msgstr "`%s' ei saa avada"
+msgstr "%s ei saa avada"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "liiga palju argumente"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Rämpskäsk"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Hmm.... see ei tundu olema tar arhiiv"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Baite kirjutatud kokku"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Baite loetud kokku"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Baite kirjutatud kokku: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(toru)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Kirje suuruse väärtus on vigane"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Arhiivi nime pole"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Ei saa kontrollida sisend/väljund arhiive"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Arhiiv on tihendatud. Kasutage võtit %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Ei saa uuendada pakitud arhiive"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Lindi alguses, lõpetan töö"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Liig palju vigu, jätan töö pooleli"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Kirje suurus = %lu blokki"
 msgstr[1] "Kirje suurus = %lu blokki"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Joondamata blokk (%lu baiti) arhiivis"
 msgstr[1] "Joondamata blokk (%lu baiti) arhiivis"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Arhiivi ei õnnestu tagasi kerida; lugemiseks võib olla vajalik kasutada "
 "võtit -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek ei peatunud kirje piiril"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: sisaldab vigast volüümi numbrit"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Volüümi number on liiga suur"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Otsi volüüm #%d %s'le ja vajuta return klahvi: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF kasutaja vastuse asemel"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "HOIATUS: Arhiiv pole täielik"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -703,65 +728,65 @@ msgstr ""
 " q             Katkesta tar\n"
 " y või reavahetus Jätka\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Loo alamshell\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Väljasta see info\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Pole uus volüüm; lõpetan töö.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Puudub faili nimi. Proovige uuesti.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Vigane sisend. ? annab abiinfot.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s käsklus sai vea"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "võimalik et %s jätkub sellel volüümil: päises on lühendatud nimi"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s ei jätku sellel volüümil"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s on vale suurusega (%s != %s + %s)"
 
-#: src/buffer.c:1326
-#, fuzzy, c-format
+#: src/buffer.c:1401
+#, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
-msgstr "See volüüm on väljaspoolt järjekorda"
+msgstr "See volüüm on väljaspoolt järjekorda (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
-msgstr "Arhiivi märgend ei sobi `%s'"
+msgstr "Arhiivi märgend ei sobi %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
-msgstr "Volüüm `%s' ei sobi volüümiga `%s'"
+msgstr "Volüüm %s ei sobi volüümiga %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -769,10 +794,9 @@ msgstr ""
 "%s: faili nimi on GNU mitmevolüümi päisesse salvestamiseks liiga pikk, "
 "lühendan"
 
-#: src/buffer.c:1749
-#, fuzzy
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
-msgstr "rmtlseek ei peatunud kirje piiril"
+msgstr "kirjutamine ei peatunud bloki piiril"
 
 #: src/compare.c:95
 #, c-format
@@ -781,20 +805,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Sain lugeda ainult %lu baiti (sooviti %lu)"
 msgstr[1] "Sain lugeda ainult %lu baiti (sooviti %lu)"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Sisu on erinev"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Ootamatu arhiivi lõpp"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Failitüübid on erinevad"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Moodid erinevad"
 
@@ -810,144 +834,143 @@ msgstr "GID on erinevad"
 msgid "Mod time differs"
 msgstr "Muutmise ajad erinevad"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Suurused erinevad"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "ei viita %s-le"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Nimeviited erinevad"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Seadme numbrid on erinevad"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Kontroll "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Tundmatu failitüüp '%c', võrdlen tavalise failina"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Arhiiv sisaldab eemaldatud prefiksitega failinimesid."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Kontrollimine ei pruugi leida algseid faile."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "VIGA KONTROLLIMISEL: leiti %d vigast päist"
 msgstr[1] "VIGA KONTROLLIMISEL: leiti %d vigast päist"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Üksik null blokk kohal %s"
 
-#: src/create.c:68
-#, fuzzy, c-format
+#: src/create.c:72
+#, c-format
 msgid "%s: contains a cache directory tag %s; %s"
-msgstr "%s: sisaldab vahemälu kataloogi lipikut; ei salvesta"
+msgstr "%s: sisaldab vahemälu kataloogi lipikut %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "väärtus %s on %s piiridest %s..%s väljas; asendan %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "väärtus %s on %s piiridest %s..%s väljas"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Genereerin negatiivsed kaheksand päised"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: faili nimi on liiga pikk (maks. %d); ei salvesta"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: faili nimi on liiga pikk (ei saa poolitada); ei salvesta"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: viite nimi on liiga pikk; ei salvesta"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Fail lühenes %s baiti; täidan nullidega"
 msgstr[1] "%s: Fail lühenes %s baiti; täidan nullidega"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: fail on teises failisüsteemis; ei salvesta"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
-msgstr ""
+msgstr "sisu ei salestata"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tundmatu failitüüp; ignoreerin seda faili"
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr "%s-le puudub viiteid.\n"
+msgstr "%s-le puudub viiteid."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: pole muutunud; ei salvesta"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s on arhiiv; ei salvesta"
 
-#: src/create.c:1593 src/incremen.c:583
-#, fuzzy
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
-msgstr "%s: sisaldab vahemälu kataloogi lipikut; ei salvesta"
+msgstr "kataloogi ei salvestatud"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: fail muutus lugemisel"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: ignoreerin pesa"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: ignoreerin ust"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Hüppan järgmise päiseni"
 
@@ -955,74 +978,74 @@ msgstr "H
 msgid "Deleting non-header from archive"
 msgstr "Kustutan arhiivist mitte-päise"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: ebatõenäoliselt vana ajatempel %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: ajatempel %s on %s sekundit tulevikus"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Ootamatu kooskõlalisuse probleem kataloogi loomisel"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Kataloog nimetati ümber, enne kui sai loetud tema olek"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Taastan jätkuvad failid kui tavalised"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Üritan taastada nimeviiteid viidetena"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Ei saa taastada -- fail jätkub teisel volüümil"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Ootamatu pika nime päis"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Tundmatu failitüüp `%c', taastan tavalise failina"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Olemasolev %s on uuem või sama kuupäevaga"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Selle faili varundamine ebaõnnestus"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s ei õnnestu ümber nimetada %s-ks"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Kataloog %s on ümber nimetatud"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Kataloog on ümber nimetatud"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Kataloog on uus"
@@ -1132,177 +1155,179 @@ msgstr "%s: Kustutan %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Ei saa eemaldada"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Jätan vahele"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blokk %s: ** NULlide blokk **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blokk %s: ** Faili lõpp **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blokk %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Tühjad väljad päises kohtadel, kus eeldati numbrit %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 "Arhiivi kaheksandväärtus %.*s on %s piiridest väljas; eeldan kahe täiendit"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Arhiivi kaheksandväärtus %.*s on %s piiridest väljas"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arhiiv sisaldab aegunuid base-64 päiseid"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Arhiivi märgiga base-64 sõne %s on %s piiridest väljas"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Arhiivi base-256 väärtus on %s piiridest väljas"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arhiiv sisaldab %.*s, eeldati numbrit %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Arhiivi väärtus %s on %s piiridest %s..%s väljas"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " viide %s-le\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tundmatu failitüüp %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Pikk viide--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Pikk nimi--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Volüümi päis--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Jätkub baidilt %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Loon kataloogi:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Ei õnnestu vahetada töökataloogi"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Annan %s uueks nimeks %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: ei õnnestu ümber nimetada %s-ks"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Nimetan `%s' tagasi `%s'\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Töökataloogi ei õnnestu salvestada"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Ei õnnestu vahetada töökataloogi"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Fail kustutati enne lugemist"
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s: Fail kustutati enne lugemist"
+msgstr "%s: Kataloog kustutati enne lugemist"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "alamprotsess"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "protsessidevaheline kanal"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Failide nimedes on jokkersümbolid. Nende kasutamiseks"
+msgstr "Failide nimedes on jokkersümbolid"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "kasutage --wildcars, selle teate saab blokeerida võtmega"
+msgstr ""
+"Jokkerite lubamiseks kasutage --wildcars või --no-wildcards selle teate "
+"blokeerimiseks"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Puudub arhiivis"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Nõutud eksemplar puudub arhiivis"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Arhiivi märgend ei sobi"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
-msgstr ""
+msgstr "--listed-incremental ei luba faili loendis võtit -C kasutada"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr ""
+msgstr "Võti --listed-incremental lubab ainult ühte -C kasutamist"
 
 #: src/tar.c:81
 #, c-format
@@ -1325,7 +1350,7 @@ msgid ""
 msgstr ""
 "Tundmatu kvootimise stiil `%s'. Loendi saate käsuga `%s --quoting-style=help'"
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1343,7 +1368,7 @@ msgstr ""
 "  tar -tvf arhiiv.tar         # Anna arhiiv.tar sisust täielik ülevaade.\n"
 "  tar -xf arhiiv.tar          # Taasta kõik failid arhiivist arhiiv.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1363,79 +1388,79 @@ msgstr ""
 "  nil, existing   nummerdatud kui koopiad on nummerdatud, muidu lihtne\n"
 "  never, simple   tee ainult lihtne koopia\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Põhiline töö:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "näita arhiivi sisukorda"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "taasta failid arhiivist"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "loo uus arhiiv"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "otsi arhiivi ja failisüsteemi erinevusi"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "lisa failid arhiivi lõppu"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "lisa arhiivi ainult failid uuemad kui arhiivis"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "lisa tar failid arhiivi"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "kustuta arhiivist (mitte magnetlindilt!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "testi arhiivi volüümi märgendit ja lõpeta töö"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Töö täpsustamine:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "tööta aukudega failidega efektiivsemalt"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "PÕHI[.ALAM]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "määra aukudega faili vormingu versioon (eeldab võtit --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "käsitle vana GNU vormingus inkrementaalset koopiat"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "käsitle uue GNU vormingu inkrementaalset koopiat"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "loodud listed-incremental arhiivi dump tase"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "ära lõpeta loetamatute failide korral veakoodiga"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1448,120 +1473,120 @@ msgstr ""
 "antud\n"
 "käsureal või võtmega -T. Vaikimisi N on 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "arhiiv on positsioneeritav"
 
-#: src/tar.c:436
-#, fuzzy
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr "arhiiv on positsioneeritav"
+msgstr "arhiiv ei ole positsioneeritav"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
-msgstr ""
+msgstr "inkrementaalsete arhiivide loomisel ära kontrolli seadmete numbreid"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
+"inkrementaalsete arhiivide loomisel kontrolli seadmete numbreid (vaikimisi)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Ülekirjutamise juhtimine:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "kontrolli arhiivi peale arhiivi kirjutamist"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "kustuta failid peale arhiveerimist"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "olemasolevaid faile taastamisel üle ei kirjuta"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "ära kirjuta üle olemasolevaid faile, mis on uuemad kui arhiveeritud"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "kirjuta olemasolevad failid üle"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "kustuta fail enne taastamist"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "kustuta hierarhia enne kataloogi taastamist"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "säilita olemasolevate kataloogide metainfo"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "taastamisel kirjuta olemasolevate kataloogide metainfo üle (vaikimisi)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Vali väljundvoog:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "taasta failid standardväljundisse"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "KÄSK"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "taasta failid läbi toru teise programmi"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "ignoreeri alamprotsesside lõpetamise koode"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "käsitle alamprotsesside nullist erinevaid lõpetamise koode veana"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Faili atribuutide käsitlemine:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "kasuta NIMEe kui lisatud failide omanikku"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "kasuta NIMEe kui lisatud failide gruppi"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "KUUP-VÕI-FAIL"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "sea lisatud failide muutmise ajaks KUUP-VÕI-FAIL"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "MUUTUSED"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "kasuta lisatud failidel sümbol moodi MUUTUSED"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "MEETOD"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1571,31 +1596,31 @@ msgstr ""
 "lugemist (METHOD='replace'; vaikimisi) või ei muuda kasutamise aega üldse "
 "(METHOD='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "ära taasta faili muutmise aega"
 
-#: src/tar.c:504
-#, fuzzy
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
-msgstr "säilita taastamisel failide omanikud"
+msgstr ""
+"ürita failide taastamisel säilitada failide omanikud arhiivis (root "
+"kasutajal vaikimisi)"
 
-#: src/tar.c:506
-#, fuzzy
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
-msgstr "taasta failid enda õigustes"
+msgstr "taasta failid enda õigustes (tavakasutajatel vaikimisi)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "kasuta kasutaja/grupp numbreid"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "taasta ka info failide õigustest (vaikimisi superkasutaja korral)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1603,154 +1628,153 @@ msgstr ""
 "õiguste taastamisel kasuta kasutaja umask väärtust (vaikimisi "
 "tavakasutajatel)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "taasta failid arhiveerimis järjekorras"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "sama, kui -p ja -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr "oota muutmise aegade ja õiguste taastamisega taastamise lõpuni"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "katkesta --delay-directory-restore võtme mõju"
 
-#: src/tar.c:529
-#, fuzzy
+#: src/tar.c:530
 msgid "Device selection and switching:"
-msgstr "Seadme valik ja vahetamine:\n"
+msgstr "Seadme valik ja vahetamine:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARHIIV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "kasuta arhiivi faili või seadet ARHIIV"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "arhiivi fail on lokaalne isegi kui sisaldab koolonit"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "kasuta rmt asemel antud käsku"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "kasuta rsh asemel antud käsku"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "määra seade ja tihedus"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "loo/näita/taasta mitme volüümilisi arhiive"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "vaheta peale NUMBER x 1024 baidi kirjutamist linti"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "käivita iga lindi lõpus skript (eeldab võtit -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "kasuta/uuenda volüümi numbrit failis FAIL"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Seadme blokkimine:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKKE"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOKKE x 512 baiti kirjele"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "NUMBER baiti kirjele, 512 kordne"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "ignoreeri null blokke arhiivis (tähistab EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "bloki lugemisel uuesti (4.2BSD torude jaoks)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Arhiivi vormingu valikud:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "VORMING"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "loo arhiiv antud vormingus"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "VORMING on üks järgnevaist:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "vana V7 tar vorming"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU vorming tar <= 1.12 korral"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x vorming"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) vorming"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) vorming"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "sama, kui pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "sama, kui --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "sama, kui --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "võtmesõna[[:]=väärtus][,võtmesõna[[:]=väärtus]...]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "pax võtmesõnade kasutamine"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEKST"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1758,173 +1782,168 @@ msgstr ""
 "loo arhiivi volüümi nimega NIMI. Listingu/taastamise ajal kasuta TEKSTi "
 "otsingumustrina"
 
-#: src/tar.c:613
-#, fuzzy
+#: src/tar.c:614
 msgid "Compression options:"
-msgstr "Konfliktsed pakkimisvõtmed"
+msgstr "Tihendamise võtmed:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
-msgstr ""
+msgstr "tihendamisprogrammi tuvastamiseks kasuta arhiivi sufiksit"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
-msgstr ""
+msgstr "tihendamisprogrammi tuvastamiseks ära kasuta arhiivi sufiksit"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "filtreeri läbi programmi (peab lubama võtit -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Lokaalse faili valik:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr "lisa antud FAIL arhiivi (kasulik, kui faili nimi algab kriipsuga)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "KAT"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "mine kataloogi KAT"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "loe taastatavate või varundatavate failide nimed failist NIMI"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T loeb nullidega lõpetatud nimesid, blokeeri -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
-msgstr ""
+msgstr "blokeeri eelmise --null võtme mõju"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "eemalda -T võtmega loetud failinimedest kvootimissümbolid (vaikimisi)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "ära eemalda -T võtmega loetud failinimedest kvootimissümboleid"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MUSTER"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "MUSTRI järgi välistatud failid"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "välistavad mustrid on FAILIS"
 
-#: src/tar.c:657
-#, fuzzy
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
-msgstr "välista kataloogid, mis on märgitud vahemälu jaoks"
+msgstr ""
+"välista kataloogide, mis sisaldavad CACHEDIR.TAG, sisu, välja arvatud "
+"märgendi fail ise"
 
-#: src/tar.c:660
-#, fuzzy
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
-msgstr "välista kataloogid, mis on märgitud vahemälu jaoks"
+msgstr "välista kõik kataloogis, mis sisaldab CACHEDIR.TAG"
 
-#: src/tar.c:663
-#, fuzzy
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
-msgstr "välista kataloogid, mis on märgitud vahemälu jaoks"
+msgstr "välista kataloogid, mis sisaldavad CACHEDIR.TAG"
 
-#: src/tar.c:665
-#, fuzzy
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
-msgstr "välista kataloogid, mis on märgitud vahemälu jaoks"
+msgstr ""
+"välista kataloogide, mis sisaldavad faili FAIL, sisu, välja arvatud FAIL ise"
 
-#: src/tar.c:668
-#, fuzzy
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
-msgstr "välista kataloogid, mis on märgitud vahemälu jaoks"
+msgstr "välista kataloogid, mis sisaldavad faili FAIL"
 
-#: src/tar.c:670
-#, fuzzy
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
-msgstr "välista kataloogid, mis on märgitud vahemälu jaoks"
+msgstr "välista kataloogid, mis sisaldavad faili FAIL"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
-msgstr ""
+msgstr "välista versiooni kontrolli süsteemi kataloogid"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "välista varukoopiad ja lukufailid"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "ära sisene kataloogidesse"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "püsi arhiivi loomise ajal kohalikus failisüsteemis"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "sisene kataloogidesse (vaikimisi)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "ära eemalda faili nimedelt prefiksit `/'"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "järgi nimeviiteid; arhiveeri ja taasta viidatavad failid"
 
-#: src/tar.c:686
-#, fuzzy
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
-msgstr "järgi nimeviiteid; arhiveeri ja taasta viidatavad failid"
+msgstr "järgi viiteid; arhiveeri ja taasta viidatavad failid"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "KOMPONENT"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "alusta arhiivi liikmest KOMPONENT"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "salvesta ainult failid mis on uuemad kui KUUP-VÕI-FAIL"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "KUUPÄEV"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "võrdle kuupäevi ainult kui andmed on muutunud"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "KONTROLL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "loo enne eemaldamist varukoopia, vali versioonikontroll"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "SÕNE"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1932,96 +1951,95 @@ msgstr ""
 "varunda enne kustutamist, kasuta uut lõppu (vaikimisi '~', kui pole üle "
 "määratud keskkonnamuutujaga SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Failide nimede muutmine:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "eemalda taastamisel failide nimede algusest NUMBER komponenti"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "AVALDIS"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "kasuta failide nimede muutmiseks sed asendus avaldist"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr "Failinimede otsimine (mõjutab nii kaasamist, kui välistamist):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "tõstutundetu"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "mustrid alustavad faili nime algusest"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "mustrid toimivad iga / järel (välistamise korral vaikimisi)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "tõstutundlik otsimine (vaikimisi)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "kasuta jokkersümboleid (välistamise korral vaikimisi)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "täht-täheline sõne otsimine"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "jokkerid ei leia '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "jokkersümbolid leiavad '/' (välistamise korral vaikimisi)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informatsioon:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "väljasta töödeldavate failide kohta infot"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "VÕTMESÕNA"
 
-#: src/tar.c:740
-#, fuzzy
+#: src/tar.c:741
 msgid "warning control"
-msgstr "Ülekirjutamise juhtimine:"
+msgstr "hoiatuste juhtimine"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "anna töö kohta infot iga NUMBER kirje järel (vaikimisi 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
-msgstr ""
+msgstr "TEGEVUS"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
-msgstr ""
+msgstr "käivita tegevus igas kontrollpunktis"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "väljasta teade, kui kõike viiteid pole salvestatud"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2032,27 +2050,31 @@ msgstr ""
 "väljasta see info, kui saadetakse antud signaal. Lubatud signaalid on: "
 "SIGHUP, SIGQUIT, SIGINT, SIGUSR1 ja SIGUSR2; SIG prefiksi võib ära jätta"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "väljasta failide muutmise ajad UTC esituses"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "väljasta faili aeg täielikult"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "salvesta täiendav info FAILi"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "näita iga teatega ka arhiivi bloki numbrit"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "küsi iga tegevuse kohta kinnitust"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "näita tar vaikeseadeid"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2060,94 +2082,93 @@ msgstr ""
 "listingu või taastamise ajal, näita igat kataloogi mis ei vasta "
 "otsingutingimustele"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "peale teisendamist näita faili või arhiivi nime"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STIIL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "määra nimede kvootimise stiil; lubatud väärtused on toodud allpool"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "lisaks kvoodi sõnes näidatud sümbolid"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "keela sõnes toodud sümbolite kvootimine"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Ühilduvuse võtmed:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "loomisel sama kui --old-archive. Taastamisel sama kui --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Muud võtmed:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "blokeeri potentsiaalselt ohtlikud võtmed"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Korraga ainult üks võtmetest `-Acdtrux'"
+msgstr ""
+"Korraga võib kasutada ainult ühte võtmetest `-Acdtrux' või `--test-label'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Konfliktsed pakkimisvõtmed"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Tundmatu signaali nimi: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Kuupäeva fail puudub"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Kasutan %s tundmatu ajaformaadi %s asemel"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Võti %s: Käsitlen aega `%s' kui %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: failide nimekiri on juba loetud"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: loetud faili nimi sisaldab sümbolit nul"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "filtreeri arhiiv läbi gzipi"
+msgstr "filtreeri arhiiv läbi %s"
 
-#: src/tar.c:1290
-#, fuzzy
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Võtmega --quoting-style on lubatud järgnevad argumendid:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2155,172 +2176,170 @@ msgstr ""
 "\n"
 "*See* tar kasutab vaikimisi:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Vigane blokkimisfaktor"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Vigane lindi pikkus"
 
-#: src/tar.c:1511
-#, fuzzy
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr "Inkrementaalse faili vorming on vigane"
+msgstr "Inkrementaalse varunduse taseme väärtus on vigane"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Rohkem kui üks etteantud aeg"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Vigane aukudega faili versiooni väärtus"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' ei ole sellel platvormil toetatud"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint väärtus ei ole täisarv"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s: Vigane grupp"
+msgstr "Vigane grupp"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Võtmega anti vigane mood"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Vigane number"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Vigane omanik"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
+"Võti --preserve on mittesoovitatav, kasutage --preserve-permissions --"
+"preserve-order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Vigane kirje suurus"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Kirje suurus peab olema %d kordne."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Vigane elementide arv"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Lubatud on ainult üks --to-command võti"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Vigane tiheduse argument: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Tundmatu tihedus: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "*See* tar ei toeta võtmeid `-[0-7][lmh]'"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FAIL]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Vana võti `%c' nõuab argumenti."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence ei oma failide nimekirjata mõtet"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence ei saa valitud tööre¸iimil kasutada"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Mitme arhiivifaili kasutamine nõuab võtit `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental ja --newer ei saa koos kasutada"
 
-#: src/tar.c:2387
-#, fuzzy
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "--occurrence ei oma failide nimekirjata mõtet"
+msgstr "--level ei oma võtmeta --listed-incremental mõtet"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Volüümi märgend on liiga pikk (piirang on %lu baiti)"
 msgstr[1] "%s: Volüümi märgend on liiga pikk (piirang on %lu baiti)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Ei suuda kontrollida mitme volüümilisi arhiive"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Ei saa kontrollida pakitud arhiive"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Ei saa kasutada mitme volüümilisi pakitud arhiive"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Tihendatud arhiive ei saa ühendada"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option saab kasutada ainult POSIX arhiividega"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
-msgstr ""
+msgstr "Volüümi suurus ei saa olla väiksem kirje suurusest"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
-msgstr ""
+msgstr "--preserve-order ei ole ühilduv võtmega --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Ega ikka ei tee küll tühja arhiivi"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Võtmeid `-Aru' ei saa kasutada võtmega `-f -'"
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "Peab kasutama vähemalt üht võtmetest `-Acdtrux'"
+msgstr "Peab kasutama üht võtmetest `-Acdtrux' või `--test-label'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
-msgstr ""
+msgstr "Kuna eelnevalt oli vigu, siis lõpetan veakoodiga"
 
 #: src/update.c:86
 #, c-format
@@ -2329,105 +2348,104 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Fail on %s baiti lühem"
 msgstr[1] "%s: Fail on %s baiti lühem"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Võtmesõna %s on tundmatu või pole veel realiseeritud"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "Number on piiridest väljas: %s"
+msgstr "Ajatempel on piiridest väljas"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Mustrit %s ei saa kasutada"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Võtmesõna %s ei saa ümber määrata"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Vigane laiendatud päis: puudub pikkus"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Laiendatud päise pikkus on piiridest väljas"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Laiendatud päise pikkus %*s on piiridest väljas"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Vigane laiendatud päis: pikkuse järel puudub tühik"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Vigane laiendatud päis: puudub võrdusmärk"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Vigane laiendatud päis: puudub reavahetus"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Ignoreerin tundmatud laiendatud päise võtmesõna `%s'"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Genereeritud võti/väärtus paar on liiga pikk (võti=%s, pikkus=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Laiendatud päis %s=%s on piiridest %s..%s väljas"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Vigane laiendatud päis: %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Vigane laiendatud päis: liigne %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Vigane laiendatud päis: vigane %s: ootamatu eraldaja %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Vigane laiendatud päis: vigane %s: veider arv väärtuseid"
 
 #: src/checkpoint.c:107
-#, fuzzy, c-format
+#, c-format
 msgid "%s: not a valid timeout"
-msgstr "%s: Vigane grupp"
+msgstr "%s: ei ole korrektne taimout"
 
 #: src/checkpoint.c:112
 #, c-format
 msgid "%s: unknown checkpoint action"
-msgstr ""
+msgstr "%s: tundmatu kontrollpunkti tegevus"
 
 #: src/checkpoint.c:132
 msgid "write"
-msgstr ""
+msgstr "kirjutamine"
 
 #: src/checkpoint.c:132
 msgid "read"
-msgstr ""
+msgstr "lugemine"
 
 #. TRANSLATORS: This is a ``checkpoint of write operation'',
 #. *not* ``Writing a checkpoint''.
@@ -2447,7 +2465,7 @@ msgstr "Kirjutamise kontrollpunkt %u"
 msgid "Read checkpoint %u"
 msgstr "Lugemise kontrollpunkt %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2455,90 +2473,87 @@ msgstr ""
 "genfile manipuleerib GNU paxutils testipaketi andmefailidega.\n"
 "VÕTMED on:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Faili loomise võtmed:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "SUURUS"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Loo määratud suurusega fail"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Kirjuta standardväljundi asemel faili NIMI"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Loe failide nimed failist FAIL"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T loeb nullidega lõpetatud nimesid"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "Täida fail antud mustriga. Muster on 'default' või 'zeros'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Bloki suurus aukudega faili korral"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Loo aukudega fail. Järgnev käsurida kirjeldab faili."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
-msgstr ""
+msgstr "INDEKS"
 
-#: tests/genfile.c:146
-#, fuzzy
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
-msgstr "kontrolli arhiivi peale arhiivi kirjutamist"
+msgstr "Enne kirjutamist liigu antud indeksile"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Statistika faili kohta:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr "Väljasta iga faili kohta stat struktuuri sisu. Vaikimisi VORMING on: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Sünkroonse täitmise võtmed:"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [VÕTI...]"
+msgstr "VÕTI"
 
-#: tests/genfile.c:165
-#, fuzzy
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 "Täida antud KÄSKLUS. Kasulik võtmetega --checkpoint ja --cut, --append, --"
-"touch"
+"touch, --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "Jõudes kontrollpunkti NUMBER, täida antud tegevus (vt. allpool)"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Määra järgmise --touch võtme ajatempel"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Esita täidetud kontrollpunktid ja käsu lõpetamise olek"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2546,248 +2561,147 @@ msgstr ""
 "Sünkroonse täitmise tegevused. Neid täidetakse, kui saabub --checkpoint "
 "võtmega määratud kontrollpunkt."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 "Sea faili suuruseks --length võtmega näidatu (või 0, kui suurust ei antud)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr "Lisa faili lõppu --length parameetriga näidatud arv baite."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Uuenda faili kasutamise ja muutmise ajatempleid"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Käivita KÄSK"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "Kustuta FAIL"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Vigane suurus: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Number on piiridest väljas: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Negatiivne suurus: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) ebaõnnestus"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
-msgstr ""
+msgstr "küsitud faili pikkus %lu, tegelik %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
-msgstr ""
+msgstr "loodud fail pole aukudega"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Viga `%s' juures numbri parsimisel"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Tundmatu kuupäeva vorming"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENDID...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "`%s' ei saa avada"
 
-#: tests/genfile.c:435
-#, fuzzy
+#: tests/genfile.c:434
 msgid "cannot seek"
-msgstr "%s: Ei õnnestu liikuda positsioonile %s"
+msgstr "seek ebaõnnestus"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "faili nimi sisaldab null sümbolit"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr "standard väljundis ei saa aukudega faili luua, kasutage võtit --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "vigane mask (`%s' lähedal)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Tundmatu väli `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "ei õnnestu seada `%s' aega"
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "`%s' ei saa avada"
+msgstr "`%s' ei saa kustutada"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Käsk lõpetas töö edukalt\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Käsk lõpetas veakoodiga %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Käsk katkestati signaaliga %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Käsk peatati signaaliga %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Käsk salvestas mälupildi\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Käsk katkestas\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat nõuab failinimesid"
 
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s: vigane võti -- %c\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to <%s>.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Teated vigadest saatke palun aadressil <%s>.\n"
-
-#~ msgid "Reading %s\n"
-#~ msgstr "Loen %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Ületamatu tõrge: lõpetan töö"
-
-#~ msgid "suppress this warning."
-#~ msgstr "--no-wildcards."
-
-#~ msgid "filter the archive through bzip2"
-#~ msgstr "filtreeri arhiiv läbi bzip2"
-
-#~ msgid "filter the archive through gzip"
-#~ msgstr "filtreeri arhiiv läbi gzipi"
-
-#~ msgid "filter the archive through compress"
-#~ msgstr "filtreeri arhiiv läbi compressi"
-
-#, fuzzy
-#~ msgid "filter the archive through lzma"
-#~ msgstr "filtreeri arhiiv läbi gzipi"
-
-#, fuzzy
-#~ msgid "filter the archive through lzop"
-#~ msgstr "filtreeri arhiiv läbi gzipi"
-
-#~ msgid "Input string too long"
-#~ msgstr "Sisendi sõne on liiga pikk"
-
-#~ msgid "Number syntax error"
-#~ msgstr "Numbri süntaksi viga"
-
-#~ msgid "rmtd: Cannot allocate buffer space\n"
-#~ msgstr "rmtd: Ei saa võtta buhvritele mälu\n"
-
-#~ msgid "Cannot allocate buffer space"
-#~ msgstr "Buhvritele ei jätku mälu"
-
-#~ msgid "Try `%s --help' for more information.\n"
-#~ msgstr "`%s --help' annab rohkem infot.\n"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]\n"
-#~ "Manipulate a tape drive, accepting commands from a remote process.\n"
-#~ "\n"
-#~ "  --version  Output version info.\n"
-#~ "  --help     Output this help.\n"
-#~ msgstr ""
-#~ "Kasuta: %s [võti]\n"
-#~ "Manipuleeri lindiseadmega, lubades käske teistest protsessidest.\n"
-#~ "\n"
-#~ "  --version  Väljasta versiooniinfo.\n"
-#~ "  --help     Väljasta abiinfo.\n"
-
-#~ msgid "Seek offset error"
-#~ msgstr "Otsimise indeksi viga"
-
-#~ msgid "Premature end of file"
-#~ msgstr "Ootamatu faili lõpp"
-
-#~ msgid "block size"
-#~ msgstr "bloki suurus"
-
-#~ msgid "%s: Read error at byte %s, reading %lu byte"
-#~ msgid_plural "%s: Read error at byte %s, reading %lu bytes"
-#~ msgstr[0] "%s: Lugemisviga baidil %s, loen %lu baiti"
-#~ msgstr[1] "%s: Lugemisviga baidil %s, loen %lu baiti"
-
-#~ msgid "--Mangled file names--\n"
-#~ msgstr "--Tükeldatud failinimed--\n"
-
-#~ msgid "Renamed %s to %s"
-#~ msgstr "%s nimetatud %s-ks"
-
-#~ msgid "%s: Cannot symlink to %s"
-#~ msgstr "%s: Ei saa luua %s nimeviidet"
-
-#~ msgid "Symlinked %s to %s"
-#~ msgstr "Loodud %s nimeviide %s"
-
-#~ msgid "Unknown demangling command %s"
-#~ msgstr "Tundmatu kokkusobitamise käsk %s"
-
-#~ msgid "[.]NUMBER"
-#~ msgstr "[.]NUMBER"
-
-#~ msgid "Warning: the -I option is not supported; perhaps you meant -j or -T?"
-#~ msgstr ""
-#~ "Hoiatus: võtit -I ei toetata; võibolla te pidasite silmas -j või -T?"
-
-#~ msgid "Error exit delayed from previous errors"
-#~ msgstr "Eelnevad vead ei lõpetanud veel programmi tööd, lõpetan veaga"
+#~ msgid "Cannot save working directory"
+#~ msgstr "Töökataloogi ei õnnestu salvestada"
index 9ff2dd930b1d2d7833e203205e231151808c0720..cb615aa5768720dbc5f7eabecd6262d5bd9ac85e 100644 (file)
Binary files a/po/eu.gmo and b/po/eu.gmo differ
index 9987a8e82a80b046f67416e7d821d87fc5769eef..8f4348a658be4bb29439e3892d82795763001d1a 100644 (file)
--- a/po/eu.po
+++ b/po/eu.po
@@ -5,14 +5,16 @@
 # This file is distributed under the same license as the tar package.
 #
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar-1.15.91-eu\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2006-12-13 19:52+0100\n"
 "Last-Translator: Mikel Olasagasti <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
+"Language: eu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -88,7 +90,7 @@ msgstr "`%s --help' edo `%s --usage' saiatu argibide gehiagorako.\n"
 msgid "Report bugs to %s.\n"
 msgstr "Arazoen berri %s-en eman.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Sistema errore ezezaguna"
 
@@ -100,8 +102,8 @@ msgstr "laguntza zerrenda hau eman"
 msgid "give a short usage message"
 msgstr "erabilera mezu labur bat eman"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "IZENA"
 
@@ -139,56 +141,61 @@ msgstr "(PROGRAMA ERROREA) Aukera ezaguna izan beharko zen!?"
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: `%s' aukera anbiguoa da\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: `--%s' aukerak ez du argumenturik onartzen\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: `%c%s' aukerak ez du argumenturik onartzen\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: `%s' aukerak argumentu bat behar du\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: `--%s' aukera ezezaguna\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: `%c%s' aukera ezezaguna\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: -- %c ekintza baliogabea\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: aukerak -- %c argumentu bat behar du.\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' aukera anbiguoa da\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: `-W %s' aukerak ez du argumenturik onartzen\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: `%s' aukerak argumentu bat behar du\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memoria askieza"
@@ -512,188 +519,188 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Ezin da urruneko shell-a abiarazi"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Seek norabidea eremuz kanpo"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Modu baliogabea eman da aukeran"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Tamaina baliogabea: %s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Seek offset-a eremuz kanpo"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Zinta luzera baliogabea"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Seek offset-a eremuz kanpo"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Fitxategi amaiera azkarregia\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Ekintza nagusi modua:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Fitxategi Amaiera Esperogabea"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "ZENBAKIA"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FITXATEGIA"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "Ezin da `%s' ireki"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "argumentu gehiegi"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Zabor komandoa"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Honek ez dirudi tar pakete bat"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Idatziriko byte-ak guztira"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Irakurritako byte-ak guztira"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Ezabaturiko byte-ak guztira: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(tutua)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "balio baliogabea record_size-rentzat"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Ez da fitxategi izenik eman"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Ezin da sarrera/irteera estandar fitxategia egiaztatu"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Fitxategia konprimiturik dago. %s aukera erabili"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Ezin dira konprimituriko fitxategiak eguneratu"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Zintaren hasieran, uzten"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Errore gehiegi, uzten"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Grabazio tamaina = bloke %lu"
 msgstr[1] "Grabazio tamaina = %lu bloke"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Alineatu gabeko blokea (byte %lu) paketean"
 msgstr[1] "Alineatu gabeko blokea (%lu byte) paketean"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: bolumen zenbaki baliogabea du"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Bolumen zenbaki gainezkatzea"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "#%d bolumena %s -rako prestatu eta enter sakatu: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Fitxategi amaiera erabiltzaile erantzuna espero zenean"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "Oharra: Paketea ez dago osaturik"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -704,72 +711,72 @@ msgstr ""
 " q             tar utzi\n"
 " y edo intro  Ekintza jarraitu\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Azpishell bat sortu\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Zerrenda hau inprimatu\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Ez dago bolumen berririk; uzten.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Ez da fitxategi izenik ezarri. Berriz saiatu.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "SArrera baliogabea. ? idatzi laguntzarako.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s komandoak huts egin du"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s posibleki bolumen honen jarraipena da: buruak mozturiko izena du"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s ez da bolumen honen jarraipena"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s okerreko tamaina da (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Bolumen hau sekuentziatik kanpo dago"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr ""
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "%s bolumena ez da %s-ren pareko"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 "%s: fitxategi izen luzeegia GNU bolumen anitzeko buruan gordetzeko, mozturik"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -780,20 +787,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "%lu byte bakarrik irakurri daiteke %lu byte-tatik"
 msgstr[1] "%lu byte bakarrik irakurri daiteke %lu byte-tatik"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Eduki ezberdintasunak"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Esperogabeko Fitxategi amaiaera paketean"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Fixtategi mota ezberdinak"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Modu ezberdinak"
 
@@ -809,144 +816,144 @@ msgstr "Gid ezberdinak"
 msgid "Mod time differs"
 msgstr "Eraldaketa data ezberdinak"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Tamaina ezberdinak"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Ez dago %s-ra loturik"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Lotura sinboliko ezberdinak"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Gailu zenbaki ezberdinak"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Egiaztatu "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: `%c' fitxategi mota ezezaguna, fitxategi arrunt batez ezberdina"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Egiaztapenak huts egin dezake jatorrizko fitxategiak kokatzerakoan."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "EGIAZTAPEN AKATSA: buru baliogabe %d aurkitu da"
 msgstr[1] "EGIAZTAPEN AKATSA: %d buru baliogabe aurkitu dira"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, fuzzy, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: katxe direktorioa marka bat du; ez da irauliko"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "%s eremua %s eremutik %s..%s kanpo: %s aldatzen"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "%s balioa %s eremutik %s..%s kanpo dago"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Zortzitar buru negatiboak sortzen"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: fitxategi izena luzeegia da (gehi. %d); ez da irauliko"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: fitxategi izena luzeegia da (ezin da moztu); ez da irauliko"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: lotura izena luzeegia da; ez da irauliko"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: fitxategia fitxategi sistema ezberdin batetan dago, ez da irauliko"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Fitxategi mota ezezaguna; fitxategia alde batetara utziko da"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "%s-ra lotura falta da.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: fitxategia ez da aldatu, ez da irauliko"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: fitxategia paketea da, ez da irauliko"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 #, fuzzy
 msgid "directory not dumped"
 msgstr "%s: katxe direktorioa marka bat du; ez da irauliko"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: fitxategia aldatu egin da irakurtzen ari zenean"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socket-a alde batetara utzi da"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: atea alde batetara utzia"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Hurrengoa burura salto egiten"
 
@@ -954,75 +961,75 @@ msgstr "Hurrengoa burura salto egiten"
 msgid "Deleting non-header from archive"
 msgstr "paketetik burugabea ezabatzen"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: Sinesgarri izateko zaharregia den denbora marka %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: %s denbora marka %s etorkizunean da"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Esperogabeko inkonsistentziak direktorioa sortzerakoan"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Direktorioa bere egoera atera aurretik berrizendatua izan da"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Alboko fitxategiak fitxategi erregularrak bezala ateratzen"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Lotura sinbolikoak lotura gogor bezala ateratzen saiatzen"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Ezin da atera -- paketea beste bolumen baten jarraipena da"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Buru izen luzera esperogabea"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr ""
 "%s: `%c' fitxategi mota ezezaguna, fitxategi arrunt bat bezala ateratzen"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Unekoa %s berriagoa edo data berdinekoa da"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Ez da gai fitxategi honen babeskopia egiteko"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Ezin da %s %s-ra berrizendatu"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Direktorioa %s-tik berrizendatua izan da"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Direktorioa berrizendatua izan da"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Direktorioa berria da"
@@ -1137,35 +1144,35 @@ msgstr "%s: %s ezabatzen\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Ezin da ezabatu"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Alde batetara uzten"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr ""
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "%s blokea: ** Fitxategi Amaiera **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "%s blokea: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Zuriunea buruan zenbakizko %s balioa espero zenean"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1173,138 +1180,140 @@ msgstr ""
 "direla pentsatuko da"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Paketearen zortzitar %.*s balioa %s eremutik kanpo dago"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Paketeak zaharkituriko base-64 buruak ditu"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Paketeak %.*s du zenbakizko %s balioa espero zenean "
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Pakete %s balioa %s eremutik kanpo dago %s.. %s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " %s-ra lotu\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " %s fitxategi mota ezezaguna\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Lotura Luzea--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Izen Luzea--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Bolumen Burua--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--%s byte-an jarraitzen du--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Direktorioa sortzen:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Ezin da lan direktorioa aldatu"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s %s-ra berrizendatzen\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Ezin da %s-ra berrizendatu"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s %s-ra atzera berrizendatzen\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Ezin da lan direktorioa gorde"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Ezin da lan direktorioa aldatu"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Fitxategia irakurri baino lehen ezabaturik"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Fitxategia irakurri baino lehen ezabaturik"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "ume prozesua"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "prozesu arteko kanala"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Ez da paketean aurkitu"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr ""
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr ""
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1330,7 +1339,7 @@ msgstr ""
 "`%s' markatze estilo ezezaguna. Saiatu `%s --quoting-style=help' zerrenda "
 "eskuratzeko."
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1361,7 +1370,7 @@ msgstr ""
 "erabili\n"
 "  never, simple   beti babeskopia sinpleak egin\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1393,80 +1402,80 @@ msgstr ""
 "erabili\n"
 "  never, simple   beti babeskopia sinpleak egin\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Ekintza nagusi modua:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "pakete baten edukiak zerrendatu"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "pakete batetako fitxategiak atera"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "pakete berri bat sortu"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "paketea eta fitxategi sistema arteko ezberdintasunak bilatu"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "fitxategiak paketearen amaieran gehitu"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 "paketean dauden kopiak baino berriagoak diren fitxategiak bakarrik gehitu"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "gehitu tar fitxategiak pakete batetara"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "paketetik ezabatu (ez mag zintetan!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "pakete bolumen etiketa egiaztatu eta irten"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Ekintza aldagaiak:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "sakabanatutako fitxategiak egoki kudeatu"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "GNU basbeskopia inkremenetal formatu zaharra kudeatu"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "GNU basbeskopia inkremenetal formatu berria kudeatu"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1474,156 +1483,156 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "paketeak `seek' onartzen du"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "paketeak `seek' onartzen du"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 #, fuzzy
 msgid "Overwrite control:"
 msgstr "Gainidazketa kontrola:\n"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "fitxategia egiaztatzen saiatu idatzi aurretik"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "ezabatu fitxategiak paketera gehitu aurretik"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "ez ordezkatu dauden fitxategiak ateratzerakoan"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "ez ordezkatu ateratzerakoan dauden fitxategiak paketeko kopiak baino "
 "berriagoak badira"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "gainidatzi dauden fitxategiak ateratzerakoan"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "dauden direktorioen metadata mantendu"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "dauden direktorioen metadata gainidatzi ateratzerakoan (lehenetsia)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Irteera korrontea hautatu:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "fitxategiak irteera estandarrera atera"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "KOMANDOA"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "bideratu ateratako fitxategiak beste programa batetara"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "alde batetara utzi semeen irteera kodeak"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "zero ez diren semeen irteera kodeekin errore bat bezala jokatu"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Fitxategi atributu kudeaketa:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "indartu IZENA jabe bezala gehituriko fitxategientzat"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "indartu IZENA talde bezala gehituriko fitxategientzat"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATA-EDO-FITXATEGIA"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ALDAKETAK"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "indartu (sinbolikoa) modu ALDAKETAK gehituriko lerroentzat"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METODOA"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "ez atera fitxategi eraldaketa data"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "jabe berdinaren fitxategiak ateratzen saiatu"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "atera fitxategiak zure kabuz"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "beti erabili zenbakiak erabiltzaile/talde izenen ordez"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "fitxategi baimenei buruzko argibideak atera (lehenetsia root "
 "erabiltzailearentzat)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1631,430 +1640,430 @@ msgstr ""
 "erabiltzailearen umask-a erabili paketetik baimenak ateratzerakoan "
 "(lehenetsia erabiltzaile arruntentzat)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "-p eta -s bikotearen berdina"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "--delay-directory-restore aukeraren eragina ezeztatu"
 
-#: src/tar.c:529
+#: src/tar.c:530
 #, fuzzy
 msgid "Device selection and switching:"
 msgstr "Gailu hautapen eta aldaketa:\n"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "PAKETEA"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "pakete fitxategia edo gailu PAKETEA erabili"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "pakete fitxategi lokala da nahiz bi puntu izan"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "Emandako rmt KOMANDOA erabili rmt ordez"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "Urruneko KOMANDOA erabili rsh ordez"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "Gailu eta dentsitatea ezarri"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "sortu/zerrendatu/atera bolumen-anitzeko paketea"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "zinta aldatu ZENBAKIA x 1024 byte idatzi ondoren"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "scipt-a abiarazi zinta bakoitzaren amaieran (-M behar du)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "erabili/eguneratu FITXATEGI bolumen zenbakia"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Gailu blokeak:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKE"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOKE x 512 byte grabazio bakoitzeko"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "grabazio bakoitzeko byte ZENBAKIA, 512-ren multiploa"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "paketean zeroz betetako blokeak alde batetara utzi"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "irakurri ahala berriz bloke egin (4.2BSD tutuentzat)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Pakete formatu hautapena:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMATUA"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "emandako formatuko pakete bat sortu"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMATUA hauetako bat da:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "V7 tar formatu zaharra"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU formatua tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x formatua"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) formatua"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) formatua"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "pax-en berdina"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "--format=v7-ren berdina"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "--format=posix-ren berdina"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "gakoa[[:]=balioavalue][,gakoa[[:]=balioa]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TESTUA"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Elkarjotzen duten konpresio aukerak"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "PROG bidez iragazi (-d onartu behar du)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Fixtategi lokal hautapena:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "Emandako FITXATEGIA paketera gehitu /Erabilgarri izena asaterisko batez "
 "asten bada)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "DIR direktoriora aldatu"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "ateratzeko edo sortzeko izenak FITXATEGIA-tik eskuratu"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATROIA"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "fixtategiak utzi, PATROIA bezala emandakoak"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "FITXATEGIAN zerrendaturiko patroiak alde batetara utzi"
 
-#: src/tar.c:657
+#: src/tar.c:658
 #, fuzzy
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "katxe marka duten direktorioak alde batetara utzi"
 
-#: src/tar.c:660
+#: src/tar.c:661
 #, fuzzy
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "katxe marka duten direktorioak alde batetara utzi"
 
-#: src/tar.c:663
+#: src/tar.c:664
 #, fuzzy
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "katxe marka duten direktorioak alde batetara utzi"
 
-#: src/tar.c:665
+#: src/tar.c:666
 #, fuzzy
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "katxe marka duten direktorioak alde batetara utzi"
 
-#: src/tar.c:668
+#: src/tar.c:669
 #, fuzzy
 msgid "exclude everything under directories containing FILE"
 msgstr "katxe marka duten direktorioak alde batetara utzi"
 
-#: src/tar.c:670
+#: src/tar.c:671
 #, fuzzy
 msgid "exclude directories containing FILE"
 msgstr "katxe marka duten direktorioak alde batetara utzi"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "sahiestu automatikoki direktorioetan zehar jeistea"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "fitxategi sistema lokalean egon paketea sortzerakoan"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "direktorioetan barrena (lehenetsia)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "Ez kendu hasierako  `/' fitxategi izenetatik"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "lotura sinbolikoak jarraitu; lotzen dituzten fitxategiak irauli eta paketean "
 "sartu"
 
-#: src/tar.c:686
+#: src/tar.c:687
 #, fuzzy
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "lotura sinbolikoak jarraitu; lotzen dituzten fitxategiak irauli eta paketean "
 "sartu"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "PARTAIDE IZEN"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATA"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "data eta ordua parekatu data bakarrik aldatzen denean"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "KONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "babeskopia egin ezabatu aurretik, KONTROL bertsioa hautatu"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "KATEA"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Fitxategi izen eraldaketak:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "ESPRESIOA"
 
-#: src/tar.c:707
+#: src/tar.c:708
 #, fuzzy
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "Sed-en ordezko EXPRESIOA erabili fitxategi izenak eraldatzeko"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "kasua alde batetara utzi"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "verbatim kate parekatzea"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr ""
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "irteera informatiboa:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "Gainidazketa kontrola:\n"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "Aurrerapen mezuak bistarazi grabaketa ZENBAKI bakiotzagatik (lehenetsia 10 "
 "da)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "mezu bat inprimatu lotura guztiak ez badira iraultzen"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SEINALEA"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2062,287 +2071,292 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "eraldaketa datak UTC orduan bistarazi"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "irteera luzea FITXATEGIRA bidali"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "Bloke zenbakia bistarazu pakete bakoitzeko mezu bakoitzagatik"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "berrespena eskatu ekintza bakoitzean"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "tar lehenespenak bistarazi"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "fixtategi edo pakete izenak bistarazi eraldaketaren aurretik"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "ESTILOA"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "Gako karaktere gehigarriak KATE-tik"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "gakoak kendu karaktereentzat KATE-tik"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Bateragarritasun aukerak:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Beste aukerak:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "ezgaitu arriskutsu izan daitezken zenbait aukera"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Ezin duzu `-Acdtrux' aukera bat baino gehiago ezarri"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Elkarjotzen duten konpresio aukerak"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Seinale izen ezezaguna: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Data adibide fitxategia ez da aurkitu"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "%s %s data formatu ezezagunagatik aldatzen"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: fitxategi zerrenda irakurria dagoeneko"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "fitxategia gzip bidez iragazi"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "--quoting-style-entzat balio erabilgarriak:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Blokeo faktore baliogabea"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Zinta luzera baliogabea"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "Fitxategi inkremental formatu okerra"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Atari data bat baino gehiago"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' ez da onartzen plataforma honetan"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint balioa ez da zenbaki oso bat"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Talde baliogabea"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Modu baliogabea eman da aukeran"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Zenbaki baliogabea"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Jabe baliogabea"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Grabazio tamaina baliogabea"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Grabaszio tamaina %d-ren multiplo bat izan behar da."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Elementu kopuru baliogabea"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "--to-command aukera bat bakarrik onartzen da"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Gaizki eratutako dentsitate argumentua: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Dentsitate Ezezaguna: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr " `-[0-7][lmh]' aukerak ez dira onartzen tar *honetan*"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FITXATEGIA]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "`%c' zaharkituriko aukerak argumentu bat behar du"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Pakete fitxategi anitzentzat `-M' aukera erabili behar da"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Ezin dira --listed-incremental eta --newer batera erabili"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Bolumen etiketa luzeegia da (muga %lu byte da)"
 msgstr[1] "%s: Bolumen etiketa luzeegia da (muga %lu byte da)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Ezin dira bolumen-anitzeko paketeak egiaztatu"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Ezin dira konprimituriko fitxategiak egiaztatu"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Ezin dira bolumen anitzeko konprimituriko paketeak erabaili"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Ezin dira konprimituriko paketeak kateatu"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option POSIX paketeekin bakarrik erabili daiteke"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr ""
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr " `-Aru' aukerak bateraezinak dira `-f -' rekin"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Behintzat `-Acdtrux' aukeretako bat ezarri behar duzu"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2354,86 +2368,86 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "%s gakoa ezezaguna da edo ez dago inplementaturik oraindik"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Denbora marka eremuz kanpo dago"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "%s patroia ezin da erabili"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "%s gakoa ezin da gainidatzi"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Gaizki eratutako buru luzapena: luzera falta da"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 #, fuzzy
 msgid "Extended header length is out of allowed range"
 msgstr " %*s buru luzapen luzera eremuz kanpo dago"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr " %*s buru luzapen luzera eremuz kanpo dago"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Gaizki eratutako buru luzapena: luzera ondoren hutsunea falta da"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Gaizki eratutako buru luzapena: berdin ikurra falta da"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Gaizki eratutako buru luzapena: lerro berria falta da"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "alde batetara utzi gako buru luzapen ezezaguna `%s'"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "buru luzapena %s=%s eremuz kanpo dago %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Gaizki eratutako buru luzapena: baliogabea %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Gaizki eratutako buru luzapena: gehiegizkoa %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Gaizki eratutako buru luzapena: %s baliogabea: %c mugatzaile esperodageba"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Gaizki eratutako buru luzapena: %s baliogabea: balio kopuru bitxia"
@@ -2474,78 +2488,78 @@ msgstr "Idazketa %u egiaztapen puntua"
 msgid "Read checkpoint %u"
 msgstr "Irakurketa %u egiaztapen puntua"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr ""
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Pakete sortze aukerak:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "TAMAINA"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Emandako TAMAINAko paketea sortu"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Fitxategi IZENEAN idatzi irteera estandarren ordez"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Fitxategi izenak PAKETEtik irakurri"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Bloke tamaina fitxategi sakabanatuentzat"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Fitxategi sakabanatuak sortu. Komanod lerroaren besteak fitxategi mapa dakar."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 #, fuzzy
 msgid "Seek to the given offset before writing data"
 msgstr "fitxategia egiaztatzen saiatu idatzi aurretik"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Fixtategi estatistika aukerak:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Eduki eta egitura estatusa inprimatu emandako fitxategi bakoiztarentzat. "
 "Lehenetsiriko FORMATUA: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Sinkronizatutako exekuzio aukerak:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [AUKERA...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 #, fuzzy
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
@@ -2554,171 +2568,185 @@ msgstr ""
 "Emandako KOMANDOA exekutatu. Erabilgarri --checkpoint eta hauetako batekin; "
 "--cut, --append, --touch"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Ezarri data hurrengo --touch aukerarentzat"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "FITXATEGIAREN irakurketa eta eraldaketa denborak aldatu"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "KOMANDOA exekutatu"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Tamaina baliogabea: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Inodo zenbakia eremuz kanpo dago"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, fuzzy, c-format
 msgid "Negative size: %s"
 msgstr "Tamaina baliogabea: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) -ek huts egin du"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Errorea zenbakia analizatzean hemendi gertu: `%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Data formatu ezezaguna"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARG...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "Ezin da `%s' ireki"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "%s: Ezin da %s-ra seek egin"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "fitxategia izenak karaktere baliogabea du"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "ezin dira sakabanaturiko fitxategiaksortu irteera estandarrean. --file "
 "erabili"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "maskara baliogabea (`%s'-etik gertu)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "`%s' eremu ezezaguna"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "ezin da `%s'-ren denbora ezarri"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "Ezin da `%s' ireki"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Komandoa behar bezala irten da\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Komandoa %d egoerarekin huts egin du\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Komandoa %d seinalearekin amaitu da\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Komandoa %d seinalearekin geratu da\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Komando iraulketa nagusia\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Komandoa amaitua\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat -ek fitxategi izenak behar ditu"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Ezin da lan direktorioa gorde"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "Ezin da %s %s-ra berrizendatu"
+
+#~ msgid "suppress this warning."
+#~ msgstr "ohar hau kendu."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: -- %c legezkanpoko aukera\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "%s irakurtzen\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2726,15 +2754,6 @@ msgstr "--stat -ek fitxategi izenak behar ditu"
 #~ "\n"
 #~ "Erroreen berri <%s>-ra eman.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "%s irakurtzen\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Errorea berreskura ezina da: irteten"
-
-#~ msgid "suppress this warning."
-#~ msgstr "ohar hau kendu."
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "fitxategia bzip2 bidez iragazi"
 
@@ -2786,6 +2805,9 @@ msgstr "--stat -ek fitxategi izenak behar ditu"
 #~ msgid "Premature end of file"
 #~ msgstr "Fitxategi amaiera azkarregia"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Errorea berreskura ezina da: irteten"
+
 #~ msgid "block size"
 #~ msgstr "bloke tamaina"
 
index 900159bd7648e40d61075be6b582daffd65478a7..338d9566571a82d4ab151732f7c776a5c4500c2e 100644 (file)
Binary files a/po/fi.gmo and b/po/fi.gmo differ
index 3ed900d66499a71c14eac5051057f716cb5554bf..da67b080d082ea5a76a68a1f62fe7c03e2b650ab 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -2,14 +2,16 @@
 # Copyright © 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
 # Lauri Nurmi <lanurmi@iki.fi>, 2002-2006.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.16.1\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2006-12-09 18:58+0200\n"
 "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"Language: fi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -85,7 +87,7 @@ msgstr "Komennot ”%s --help” ja ”%s --usage” antavat lisää tietoa.\n"
 msgid "Report bugs to %s.\n"
 msgstr "Ilmoita ohjelmistovioista (englanniksi) osoitteeseen %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Tuntematon järjestelmävirhe"
 
@@ -97,8 +99,8 @@ msgstr "näytä tämä ohje"
 msgid "give a short usage message"
 msgstr "näytä lyhyt käyttöohje"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NIMI"
 
@@ -136,56 +138,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: valitsin ”%s” on moniselitteinen\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: valitsin ”--%s” ei salli argumenttia\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: valitsin ”%c%s” ei salli argumenttia\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: valitsin ”%s” vaatii argumentin\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: tunnistamaton valitsin ”--%s”\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: tunnistamaton valitsin ”%c%s”\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: virheellinen valitsin -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: valitsin vaatii argumentin -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: valitsin ”-W %s” on moniselitteinen\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: valitsin ”-W %s” ei salli argumenttia\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: valitsin ”%s” vaatii argumentin\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "muisti lopussa"
@@ -513,190 +520,190 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Etäkuorta ei voi käynnistää"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Siirtymän suunta sallitun välin ulkopuolella"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Valitsimelle annettiin virheellinen tila"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Virheellinen koko: %s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Siirtymä sallitun välin ulkopuolella"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Virheellinen nauhan pituus"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Siirtymä sallitun välin ulkopuolella"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Ennenaikainen tiedoston loppu\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Päätoimintatila:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Odottamaton tiedoston loppu arkistossa"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "MÄÄRÄ"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "TIED"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Siirtyminen kohtaan %s ei onnistu"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "liian monta argumenttia"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Roskakomento"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Tämä ei näytä tar-arkistolta"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Kirjoitettuja tavuja yhteensä"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Poistettuja tavuja yhteensä: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(putki)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Virheellinen arvo kentälle record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Arkiston nimeä ei ole annettu"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Vakiosyötteessä/tulosteessa olevaa arkistoa ei voi varmistaa"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Arkisto on tiivistetty. Käytä valitsinta %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Pakattuja arkistoja ei voi päivittää"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Nauhan alussa, lopetetaan"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Liian monta virhettä, lopetetaan"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Tietueen koko = %lu lohko"
 msgstr[1] "Tietueen koko = %lu lohkoa"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Kohdistamaton lohko (%lu tavu) arkistossa"
 msgstr[1] "Kohdistamaton lohko (%lu tavua) arkistossa"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Arkistossa ei voi siirtyä taaksepäin; sitä ei ehkä voi lukea ilman "
 "valitsinta -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek ei pysähtynyt tietueen rajalle"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: sisältää virheellisen arkiston osan järjestysnumeron"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Arkisto-osan järjestysnumeron ylivuoto"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Valmistele osa #%d arkistolle %s ja paina return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Tiedoston loppu odotetun käyttäjän syötteen sijaan"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "VAROITUS: Arkisto on epätäydellinen"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -708,67 +715,67 @@ msgstr ""
 " q             Keskeytä tar\n"
 " y tai rivinv. Jatka suoritusta\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Käynnistä alikuori\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Näytä tämä lista\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Ei uutta arkiston osaa, poistutaan.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Tiedostonimeä ei annettu. Yritä uudelleen.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Komento %s epäonnistui"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s jatkuu mahdollisesti tällä arkiston osalla: otsake sisältää typistetyn "
 "nimen"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s ei jatku tällä arkiston osalla"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s on väärän kokoinen (%s ≠ %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Tämä arkiston osa ei ole järjestyksessä"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arkistoa ei ole nimetty täsmää nimiöön %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Arkiston osa %s ei täsmää nimiöön %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -776,7 +783,7 @@ msgstr ""
 "%s: tiedostonimi on liian pitkä tallennettavaksi moniosaisen GNU-arkiston "
 "otsakkeeseen; nimi typistetty"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "rmtlseek ei pysähtynyt tietueen rajalle"
@@ -788,20 +795,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Voitiin lukea vain %lu tavua %lu tavusta"
 msgstr[1] "Voitiin lukea vain %lu tavua %lu tavusta"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Sisällöt eroavat"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Odottamaton tiedoston loppu arkistossa"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Tiedoston tyyppi eroaa"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Tila eroaa"
 
@@ -817,145 +824,145 @@ msgstr "GID eroaa"
 msgid "Mod time differs"
 msgstr "Muutosaika eroaa"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Koko eroaa"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Ei ole linkitetty tiedostoon %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symlinkki eroaa"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Laitenumero eroaa"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Tarkasta "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Tuntematon tiedostotyyppi ”%c”, vertailtu normaalina tiedostona"
 
 # Mitäh?
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Arkisto sisältää tiedostonimiä, joiden etuliitteet on poistettu."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Tarkastus ei ehkä löydä alkuperäisiä tiedostoja."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "TARKASTUSVIRHE: havaittu %d virheellinen otsake"
 msgstr[1] "TARKASTUSVIRHE: havaittu %d virheellistä otsaketta"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Yksinäinen nollalohko kohdassa %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, fuzzy, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: näyttää välimuistihakemistolta, ei lisätä"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "arvo %s on sallitun %s-välin %s..%s ulkopuolella, korvataan arvolla %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "arvo %s on sallitun %s-välin %s..%s ulkopuolella"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Luodaan otsakkeet negatiivisilla oktaaleilla"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: tiedostonimi on liian pitkä (maksimi %d), ei lisätä"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: tiedostonimi on liian pitkä (ei voida jakaa), ei lisätä"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: linkin nimi on liian pitkä, ei lisätä"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Tiedosto kutistui %s tavun verran, tasataan nollilla"
 msgstr[1] "%s: Tiedosto kutistui %s tavun verran, tasataan nollilla"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: tiedosto ei ole samalla tiedostojärjestelmällä, ei lisätä"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tuntematon tiedostotyyppi, tiedostoa ei huomioida"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Puuttuvat linkit tiedostoon %s.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: tiedosto on muuttumaton, ei lisätä"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: tiedosto on arkistossa, ei lisätä"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 #, fuzzy
 msgid "directory not dumped"
 msgstr "%s: näyttää välimuistihakemistolta, ei lisätä"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: tiedosto muuttui lukemisen aikana"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: pistoketta ei huomioida"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: ovea ei huomioida"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Siirrytään seuraavaan otsakkeeseen"
 
@@ -963,75 +970,75 @@ msgstr "Siirrytään seuraavaan otsakkeeseen"
 msgid "Deleting non-header from archive"
 msgstr "Poistetaan epäotsake arkistosta"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: epätodennäköisen vanha aikaleima %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: aikaleima %s on %s sekuntia tulevaisuudessa"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Odottamaton ristiriita luotaessa hakemistoa"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Hakemisto nimettiin uudelleen ennen kuin sen tilaa voitiin purkaa"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Puretaan jatkuvat tiedostot normaaleiksi tiedostoiksi"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Yritetään purkaa symboliset linkit koviksi linkeiksi"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Ei voi purkaa -- tiedosto on jatkoa toisesta arkiston osasta"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Odottamaton tiedoston loppu sovitetuissa nimissä"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Tuntematon tiedostotyyppi ”%c”, purettiin normaaliksi tiedostoksi"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Nykyinen %s on uudempi tai yhtä vanha"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Tätä tiedostoa ei voitu varmuuskopioida"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Uudelleennimeäminen nimelle %s ei onnistu"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Hakemisto %s on nimetty uudelleen"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Hakemisto on nimetty uudelleen"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Hakemisto on uusi"
@@ -1144,35 +1151,35 @@ msgstr "%s: Poistetaan %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Ei voi poistaa"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Jätetään pois"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "lohko %s: ** NUL-lohko **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "lohko %s: ** Tiedoston loppu **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "lohko %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Tyhjiä merkkejä otsakkeessa, odotettiin numeerista %s-arvoa"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1180,143 +1187,145 @@ msgstr ""
 "kahden komplementiksi"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Arkiston oktaaliarvo %.*s on sallitun %s-välin ulkopuolella"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arkisto sisältää käytöstä poistuvia base-64-otsakkeita"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 "Arkiston etumerkillinen base-64-merkkijono %s on sallitun %s-välin "
 "ulkopuolella"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Arkiston base-256-arvo on sallitun %s-välin ulkopuolella"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arkisto sisältää merkkijonon %.*s, odotettiin numeerista %s-arvoa"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Arkiston arvo %s on sallitun %s-välin %s..%s ulkopuolella"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " linkki tiedostoon %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tuntematon tiedostotyyppi %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Pitkä linkki--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Pitkä nimi--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Arkiston osan otsake--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Jatkuu tavusta %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Luodaan hakemisto:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Työhakemistoa ei voi vaihtaa"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Nimetään uudelleen %s -> %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Uudelleennimeäminen nimelle %s ei onnistu"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Nimetään %s takaisin nimelle %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Työhakemistoa ei voi tallentaa"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Työhakemistoa ei voi vaihtaa"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Tiedosto oli poistettu ennen sen lukemista"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Tiedosto oli poistettu ennen sen lukemista"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "lapsiprosessi"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "prosessienvälinen kanava"
 
 # ... ja sen pitää päätyä kääntäjien ongelmaksi?
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "Tiedostonimissä on käytetty jokerimerkkejä. Käytä"
 
-#: src/names.c:603
+#: src/names.c:596
 #, fuzzy
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr "valitsinta --wildcards täsmäyksen käyttöön ottamiseksi, tai"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Ei löytynyt arkistosta"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Vaadittua esiintymää ei löytynyt arkistosta"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arkistoa ei ole nimetty täsmää nimiöön %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1341,7 +1350,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1359,7 +1368,7 @@ msgstr ""
 "  %s -tvf arkisto.tar          # Listaa kaikki arkisto.tar:in tiedostot.\n"
 "  %s -xf arkisto.tar           # Pura kaikki tiedostot arkisto.tar:ista.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1380,79 +1389,79 @@ msgstr ""
 "                  muuten yksinkertaisia\n"
 "  never, simple   tee aina yksinkertaisia varmuuskopioita\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Päätoimintatila:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "listaa arkiston sisältö"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "pura tiedostoja arkistosta"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "luo uusi arkisto"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "etsi arkiston ja tiedostojärjestelmän väliset erot"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "lisää tiedostoja arkiston loppuun"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "lisää vain arkistokopiota uudemmat tiedostot"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "lisää tar-tiedostoja arkistoon"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "poista tiedostoja arkistosta (ei toimi magneettinauhoilla!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Toimintovalinnat:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "käsittele harvat tiedostot tehokkaasti"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "käsittele vanha GNU-muotoinen lisääntyvä varmuuskopio"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "käsittele uusi GNU-muotoinen lisääntyvä varmuuskopio"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "jatka lukukelvottomista tiedostoista huolimatta"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1465,308 +1474,308 @@ msgstr ""
 "annettu komentirivillä tai -T-valitsimella; oletusMÄÄRÄ on 1"
 
 # Muualla seek on siirtymistä...
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "arkisto on selattava"
 
 # Muualla seek on siirtymistä...
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "arkisto on selattava"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "yritä varmistaa arkisto kirjoittamisen jälkeen"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "poista tiedostot arkistoon lisäämisen jälkeen"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "älä korvaa olemassaolevia tiedostoja purettaessa"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "älä korvaa olemassaolevia tiedostoja, jotka ovat arkistokopioitaan uudempia"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "ylikirjoita olemassaolevat tiedostot purettaessa"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "poista jokainen tiedosto ennen sen päälle purkamista"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "tyhjennä rakenne ennen hakemiston purkamista"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "säilytä olemassaolevien hakemistojen metatiedot"
 
-#: src/tar.c:466
+#: src/tar.c:467
 #, fuzzy
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "ylikirjoita olemassaolevat tiedostot purettaessa"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Valitse tulostusvirta:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "pura tiedostot vakiotulosteeseen"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "KOMENTO"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "putkita puretut tiedostot toiselle ohjelmalle"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "jätä lapsiprosessien paluuarvot huomiotta"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "käsittele lapsiprosessien nollasta poikkeavat paluuarvot virheinä"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Tiedostojen ominaisuuksien käsittely:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "pakota NIMI lisättyjen tiedostojen omistajaksi"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "pakota NIMI lisättyjen tiedostojen ryhmäksi"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "PÄIVÄYS-TAI-TIED"
 
-#: src/tar.c:493
+#: src/tar.c:494
 #, fuzzy
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "tallenna vain PÄIVÄYS-TAI-TIEDostoa uudemmat tiedostot"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "MUUTOS"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "pakota (symbolinen) tila MUUTOS lisätyille"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "älä pura tiedoston muutosaikaa"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "yritä purkaa tiedostot samalla omistajuudella"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "pura tiedostot itsenäsi"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "käytä aina numeroita käyttäjän/ryhmän nimissä"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "lajittele purettavat tiedostonimet täsmäämään arkistoon"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "sama kuin -p ja -s yhdessä"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 #, fuzzy
 msgid "Device selection and switching:"
 msgstr "Laitteen valinta ja vaihtaminen:\n"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARKISTO"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "käytä arkistotiedostoa tai -laitetta ARKISTO"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "arkisto on paikallinen vaikka nimessä olisi kaksoispiste"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "käytä rmt-KOMENTOA rmt:n sijaan"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "käytä etäKOMENTOa rsh:n sijaan"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "anna asema ja tiheys"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "luo/listaa/pura moniosainen arkisto"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "vaihda nauhaa MÄÄRÄ × 1024 kirjoitetun tavun jälkeen"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "aja skripti joka nauhan lopussa (valitsin -M tulee käyttöön)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "käytä/päivitä arkiston osan numero TIEDostossa"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Laitteen lohkot:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "LOHKOT"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "LOHKOT × 512 tavua tietuetta kohti"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "MÄÄRÄ tavua tietuetta kohti, 512:n monikerta"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "älä huomioi nollattuja lohkoja arkistossa (merkitsee tiedoston loppua)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "suorita lohkominen uudelleen luettaessa (4.2BSD-putkia varten)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Arkistomuodon valinta:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "MUOTO"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "luo annetun muotoinen arkisto"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "MUOTO on yksi seuraavista:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "vanha V7-tar-muoto"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU-muoto tar-versioilla ≤ 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x -muoto"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) -muoto"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) -muoto"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "sama kuin pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "sama kuin --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "sama kuin --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "avainsana[[:]=arvo][,avainsana[[:]=arvo]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "määrittele pax-avainsanoja"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEKSTI"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1774,174 +1783,174 @@ msgstr ""
 "luo arkisto nimiöllä TEKSTI. Listattaessa/purettaessa käytä TEKSTIä "
 "nimiönhakulausekkeena"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Ristiriitaiset pakkausvalitsimet"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "OHJ"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "ohjaa OHJelman läpi (on hyväksyttävä -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Paikallisten tiedostojen valinta:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "lisää annettu TIEDosto arkistoon (hyödyllinen, jos nimi alkaa viivalla)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "HAK"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "siirry hakemistoon HAK"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "hae purettavat/luotavat nimet TIEDOSTOsta"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T lukee nollaan päättyviä nimiä, poistaa käytöstä -C:n"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "HAHMO"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "jätä pois HAHMOn mukaiset tiedostot"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "jätä pois TIEDOSTOssa listatut hahmot"
 
-#: src/tar.c:657
+#: src/tar.c:658
 #, fuzzy
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "jätä pois välimuistihakemistot"
 
-#: src/tar.c:660
+#: src/tar.c:661
 #, fuzzy
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "jätä pois TIEDOSTOn sisältävät hakemistot"
 
-#: src/tar.c:663
+#: src/tar.c:664
 #, fuzzy
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "jätä pois TIEDOSTOn sisältävät hakemistot"
 
-#: src/tar.c:665
+#: src/tar.c:666
 #, fuzzy
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "jätä pois TIEDOSTOn sisältävät hakemistot"
 
-#: src/tar.c:668
+#: src/tar.c:669
 #, fuzzy
 msgid "exclude everything under directories containing FILE"
 msgstr "jätä pois TIEDOSTOn sisältävät hakemistot"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "jätä pois TIEDOSTOn sisältävät hakemistot"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "estä automaattinen eteneminen alihakemistoihin"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "pysy nykyisessä tiedostojärjestelmässä arkistoa luotaessa"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "etene alihakemistoihin (oletus)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "älä poista ”/”-merkkiä tiedostonimien alusta"
 
-#: src/tar.c:684
+#: src/tar.c:685
 #, fuzzy
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "seuraa symlinkkejä; "
 
-#: src/tar.c:686
+#: src/tar.c:687
 #, fuzzy
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "seuraa symlinkkejä; "
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "TIED-NIMI"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "aloita arkiston tiedostosta TIED-NIMI"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "tallenna vain PÄIVÄYS-TAI-TIEDostoa uudemmat tiedostot"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "PÄIVÄYS"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "vertaa vain tiedoston muutosaikaa"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "HALLINTA"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "varmuuskopiointi ennen poistoa, valitse versionHALLINTA"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "MERKKIJONO"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1949,103 +1958,103 @@ msgstr ""
 "varmuuskopiointi ennen poistoa, älä käytä tavanomaista jälkiliitettä (joka "
 "on ”~”, ellei muuttujaa SIMPLE_BACKUP_SUFFIX ole asetettu)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 #, fuzzy
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "poista MÄÄRÄn verran osia tiedostonimien alusta"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 #, fuzzy
 msgid "ignore case"
 msgstr "poisjättäminen ei huomioi kirjainkokoa"
 
-#: src/tar.c:718
+#: src/tar.c:719
 #, fuzzy
 msgid "patterns match file name start"
 msgstr "poisjättöhahmoja verrataan nimen alkuun"
 
-#: src/tar.c:720
+#: src/tar.c:721
 #, fuzzy
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "poisjättöhahmoja verrataan jokaisen ”/”:n jälkeen"
 
-#: src/tar.c:722
+#: src/tar.c:723
 #, fuzzy
 msgid "case sensitive matching (default)"
 msgstr "poisjättäminen huomioi kirjainkoon (oletus)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "poisjättöhahmon jokerimerkit eivät täsmää ”/”-merkkiin"
 
-#: src/tar.c:730
+#: src/tar.c:731
 #, fuzzy
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "poisjättöhahmon jokerimerkit vastaavat merkkiä ”/”"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Tietoja antava tuloste:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "listaa käsiteltävät tiedostot"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 #, fuzzy
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "näytä edistymisviesti 10 sekunnin välein"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "näytä viesti, ellei kaikkia linkkejä lisätty"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2053,58 +2062,63 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "näytä tiedostojen muutosajat UTC-aikoina"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "ohjaa monisanainen tuloste TIEDostoon"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "näytä lohkonumero arkistossa viestien yhteydessä"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "kysy varmistusta jokaiselle toiminnolle"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "näytä tarin oletukset"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 "luettele hakuehtoihin täsmäämättömät hakemistot luetellessa tai purettaessa"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Yhteensopivuusvalitsimet:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 #, fuzzy
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
@@ -2112,65 +2126,65 @@ msgid ""
 msgstr ""
 "luotaessa sama kuin --old-archive purettaessa sama kuin --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Muut valitsimet:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "poista käytöstä joitakin potentiaalisesti vahingollisia valitsimia"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Vain yhtä valitsimista ”-Acdtrux” voi käyttää kerrallaan"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Ristiriitaiset pakkausvalitsimet"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Tuntematon signaalin nimi: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Päiväystiedostoa ei löytynyt"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Korvataan tuntematon päiväysmuoto %2$s arvolla %1$s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Valitsin %s: Käsittellään päiväys %s arvona %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: tiedosto on arkistossa, ei lisätä"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: tiedostonimi sisältää nul-merkin"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "ohjaa arkisto gzip-ohjelman läpi"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Kelvolliset argumentit --quoting-style -valitsimille ovat:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2178,168 +2192,168 @@ msgstr ""
 "\n"
 "*Tämä* tar käyttää oletuksena:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Virheellinen lohkomiskerroin"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Virheellinen nauhan pituus"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Annettu useampi kuin yksi kynnyspäiväys"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' ei ole tuettu tällä alustalla"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Virheellinen ryhmä"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Valitsimelle annettiin virheellinen tila"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Virheellinen määrä"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Virheellinen omistaja"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Virheellinen tietueen koko"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Tietueen koon on oltava %d:n monikerta."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Virheellinen osien määrä"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Kelvoton tiheysargumentti: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Tuntematon tiheys: ”%c”"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "*Tämä* tar ei tue valitsimia ”-[0-7][lmh]”"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[TIEDOSTO]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Vanha valitsin ”%c” vaatii argumentin."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "valitsin --occurence on merkityksetön ilman tiedostoluetteloa"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "valitsinta --occurence ei voi käyttää pyydetyssä toimintatilassa"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Usean arkistotiedoston käyttäminen vaatii valitsimen ”-M”"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Valitsimia --listed-incremental ja --newer ei voi käyttää yhdessä"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "valitsin --occurence on merkityksetön ilman tiedostoluetteloa"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Arkiston osan nimiö on liian pitkä (raja on %lu tavu)"
 msgstr[1] "%s: Arkiston osan nimiö on liian pitkä (raja on %lu tavua)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Moniosaisia arkistoja ei voi tarkastaa"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Pakattuja arkistoja ei voi varmistaa"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Pakattuja moniosaisia arkistoja ei voi käyttää"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Pakattuja arkistoja ei voi liittää toisiinsa"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "Valitsinta --pax-option voi käyttää vain POSIX-arkistoille"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Kieltäydytään pelkurimaisesti luomasta tyhjää arkistoa"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Valitsimet ”-Aru” eivät ole yhteensopivia valitsinten ”-f -” kanssa"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Vähintään yhtä valitsimista ”-Acdtrux” on käytettävä"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2351,65 +2365,65 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Tiedosto kutistui %s tavun verran"
 msgstr[1] "%s: Tiedosto kutistui %s tavun verran"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Avainsana %s on tuntematon tai sillä ei vielä ole toteutusta"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Aikaleima ei ole sallitulla välillä"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Hahmoa %s ei voi käyttää"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Avainsanaa %s ei voi ohittaa"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 #, fuzzy
 msgid "Malformed extended header: missing length"
 msgstr "Väärän muotoinen laajennettu otsake: yhtäsuuruusmerkki puuttuu"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 #, fuzzy
 msgid "Extended header length is out of allowed range"
 msgstr ""
 "Arkiston etumerkillinen base-64-merkkijono %s on sallitun %s-välin "
 "ulkopuolella"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr ""
 "Arkiston etumerkillinen base-64-merkkijono %s on sallitun %s-välin "
 "ulkopuolella"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 #, fuzzy
 msgid "Malformed extended header: missing blank after length"
 msgstr "Väärän muotoinen laajennettu otsake: tyhje puuttuu pituuden jälkeen"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Väärän muotoinen laajennettu otsake: yhtäsuuruusmerkki puuttuu"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 #, fuzzy
 msgid "Malformed extended header: missing newline"
 msgstr "Väärän muotoinen laajennettu otsake: yhtäsuuruusmerkki puuttuu"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2417,28 +2431,28 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Laajennettu otsake %s=%s on sallitun välin %s..%s ulkopuolella"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Väärän muotoinen laajennettu otsake: virheellinen %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, fuzzy, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Väärän muotoinen laajennettu otsake: yhtäsuuruusmerkki puuttuu"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Väärän muotoinen laajennettu otsake: virheellinen %s: odottamaton rajoitin %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Väärän muotoinen laajennettu otsake: yhtäsuuruusmerkki puuttuu"
@@ -2479,248 +2493,262 @@ msgstr "Kirjoituksen tarkistuspiste %u"
 msgid "Read checkpoint %u"
 msgstr "Lukemisen tarkistuspiste %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Luo datatiedostot GNU tar:in testausta varten.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Muut valitsimet:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 #, fuzzy
 msgid "Create file of the given SIZE"
 msgstr "luo annetun muotoinen arkisto."
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "pura tiedostot vakiotulosteeseen"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 #, fuzzy
 msgid "Read file names from FILE"
 msgstr "Luettiin %s tavua arkistosta %s"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T lukee nollatavuun päättyviä nimiä"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 #, fuzzy
 msgid "Seek to the given offset before writing data"
 msgstr "yritä varmistaa arkisto kirjoittamisen jälkeen"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [VALITSIN...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Suorita KOMENTO"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Virheellinen koko: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "I-solmun numero ei ole sallitulla välillä"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, fuzzy, c-format
 msgid "Negative size: %s"
 msgstr "Virheellinen koko: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) epäonnistui"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Tuntematon järjestelmävirhe"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARG...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "%s: Siirtyminen kohtaan %s ei onnistu"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "tiedostonimi sisältää nollatavun"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " tuntematon tiedostotyyppi %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Siirtyminen kohtaan %s ei onnistu"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Siirtyminen kohtaan %s ei onnistu"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Komennon suoritus päättyi onnistuneesti\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "Lapsiprosessi kuoli signaalilla %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Komento keskeytyi signaaliin %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Komento pysähtyi signaaliin %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Komento keskeytyi\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Sovitetut tiedostonimet--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Työhakemistoa ei voi tallentaa"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Uudelleennimeäminen nimelle %s ei onnistu"
+
+#~ msgid "suppress this warning."
+#~ msgstr "--no-wildcards tämän varoituksen vaientamiseksi."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: virheellinen valitsin -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Luetaan %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2729,15 +2757,6 @@ msgstr "--Sovitetut tiedostonimet--\n"
 #~ "Ohjelmistovioista voi ilmoittaa (englanniksi) osoitteeseen\n"
 #~ "<%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Luetaan %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Virhe ei ole korjattavissa, poistutaan nyt"
-
-#~ msgid "suppress this warning."
-#~ msgstr "--no-wildcards tämän varoituksen vaientamiseksi."
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "ohjaa arkisto bzip2-ohjelman läpi"
 
@@ -2784,6 +2803,9 @@ msgstr "--Sovitetut tiedostonimet--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Ennenaikainen tiedoston loppu"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Virhe ei ole korjattavissa, poistutaan nyt"
+
 #~ msgid "block size"
 #~ msgstr "lohkokoko"
 
index ef19c5d53ccdc395e149ccc75834d71a2292e949..46894b947d6c56f398f8db98303ee5b8cc377296 100644 (file)
Binary files a/po/fr.gmo and b/po/fr.gmo differ
index 53184fc6929d17d9ab417fb4253585fd384464b8..839b5b652903f3c7550928fc347267150648d8a4 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,17 +1,19 @@
 # Messages français pour GNU concernant tar.
-# Copyright © 2007 Free Software Foundation, Inc.
+# Copyright © 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
 # Michel Robitaille <robitail@IRO.UMontreal.CA>, jusqu'en 2004
-# Christophe Combelles <ccomb@free.fr>, 2007, 2008, 2009
+# Christophe Combelles <ccomb@free.fr>, 2007, 2008, 2009, 2010
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar-1.22\n"
+"Project-Id-Version: tar-1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2009-12-06 17:08+0100\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-23 01:11+0100\n"
 "Last-Translator: Christophe Combelles <ccomb@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -87,7 +89,7 @@ msgstr "Pour en savoir davantage, faites : « %s --help » ou « %s --usage ».\
 msgid "Report bugs to %s.\n"
 msgstr "Rapportez toute anomalie à %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Erreur système inconnue"
 
@@ -99,8 +101,8 @@ msgstr "Afficher cette aide-mémoire"
 msgid "give a short usage message"
 msgstr "Afficher un court mode d'emploi"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NOM"
 
@@ -138,56 +140,61 @@ msgstr "(PROGRAM ERROR) L'option devrait avoir été reconnue !?"
 msgid "write error"
 msgstr "erreur d'écriture"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s : l'option « %s » est ambiguë\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s : l'option « --%s » n'a pas d'argument\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s : l'option « %c%s » n'a pas d'argument\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s : l'option « %s » doit avoir un argument\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s : l'option « --%s » doit avoir un argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s : l'option « --%s » est inconnue\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s : l'option « %c%s » est inconnue\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s : l'option « -- %c » n'est pas valable\n"
+msgstr "%s : l'option -- '%c' n'est pas valable\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s : l'option « -- %c » a besoin d'un argument\n"
+msgstr "%s : l'option -- '%c' a besoin d'un argument\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s : l'option « -W %s » est ambiguë\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s : l'option « -W %s » ne prend pas d'argument\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s : l'option « -W %s » doit avoir un argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "mémoire épuisée"
@@ -252,12 +259,12 @@ msgstr "^[nN]"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Packagé par %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Packagé par %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
@@ -396,33 +403,34 @@ msgstr ""
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
-msgstr "Rapportez toute anomalie à %s.\n"
+msgstr ""
+"\n"
+"Signalez toute anomalie à : %s\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
-msgstr "Rapportez toute anomalie à %s.\n"
+msgstr "Signalez les anomalies de %s à : %s\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "Page d'accueil de %s : <%s>\n"
 
 #: gnu/version-etc.c:255
-#, fuzzy, c-format
+#, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr "Page d'accueil de %s : <http://www.gnu.org/software/%s/>.\n"
+msgstr "Page d'accueil de %s : <http://www.gnu.org/software/%s/>\n"
 
 #: gnu/version-etc.c:258
-#, fuzzy
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
-"Aide générale sur l'utilisation de programmes GNU : <http://www.gnu.org/"
-"gethelp/>.\n"
+"Aide générale sur l'utilisation des programmes GNU : <http://www.gnu.org/"
+"gethelp/>\n"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -431,7 +439,7 @@ msgstr ""
 #: lib/paxerror.c:58 lib/paxerror.c:71
 #, c-format
 msgid "%s: Cannot %s"
-msgstr "%s : la fonction %s a échoué"
+msgstr "%s : %s impossible"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -440,7 +448,7 @@ msgstr "%s : la fonction %s a échoué"
 #: lib/paxerror.c:84
 #, c-format
 msgid "%s: Warning: Cannot %s"
-msgstr "%s : AVERTISSEMENT : la fonction %s a échoué"
+msgstr "%s : AVERTISSEMENT : %s impossible"
 
 #: lib/paxerror.c:93
 #, c-format
@@ -533,200 +541,195 @@ msgstr "stdout"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Impossible de se connecter à %s : échec de résolution"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Impossible de lancer un interpréteur de commandes distant"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Direction de positionnement hors plage"
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Mode non valable donné en option"
+msgstr "Direction de recherche non valable"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Taille non valable : %s"
+msgstr "Décalage de recherche non valable"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Positionnement relatif hors plage"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Longueur de cartouche non valable"
+msgstr "Nombre d'octets non valable"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "Positionnement relatif hors plage"
+msgstr "Nombre d'octets hors plage"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd : fin de fichier prématurée\n"
+msgstr "Fin de fichier prématurée"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "Mode d'opération principal :"
+msgstr "Code d'opération non valable"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Opération non prise en charge"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "Fin prématurée rencontrée dans l'archive."
+msgstr "Arguments inattendus"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
+"Manipule un lecteur de cartouches en acceptant des commandes d'un processus "
+"distant"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NOMBRE"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "définit le niveau de débogage"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FICHIER"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "définit le nom de fichier de sortie de débogage"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
-msgstr "Impossible d'ouvrir « %s »"
+msgstr "impossible d'ouvrir %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "trop d'arguments"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Commande rejetée"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Ceci ne ressemble pas à une archive de type « tar »"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Nombre total d'octets écrits"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Nombre total d'octets lus"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Nombre total d'octets effacés : %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(tube)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Valeur incorrecte pour « record_size »"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Aucun nom d'archive donné"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr ""
 "Une archive utilisant l'entrée/sortie standard ne peut pas être vérifiée"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "L'archive est compressée. Utilisez l'option %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Une archive compressée ne peut pas être mise à jour"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Début de la cartouche atteinte ; arrêt du programme."
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Trop d'erreurs, arrêt du programme."
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Taille de l'enregistrement = %lu bloc"
 msgstr[1] "Taille de l'enregistrement = %lu blocs"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Bloc non aligné (%lu octet) dans l'archive"
 msgstr[1] "Bloc non aligné (%lu octets) dans l'archive"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Impossible de reculer dans le fichier d'archive ; il se peut qu'il soit "
 "illisible sans l'option « -i »"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek ne s'est pas arrêté à une limite d'enregistrement"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s : contient un numéro de volume non valable"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Débordement du numéro de volume"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Préparez le volume n°%d pour %s et appuyez sur Entrée : "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr ""
 "Fin de fichier rencontrée alors qu'une réponse de l'utilisateur était "
 "attendue"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "AVERTISSEMENT : l'archive est incomplète"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -737,67 +740,67 @@ msgstr ""
 " q             Arrêter tar\n"
 " y ou newline  Continuer le traitement\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Générer un sous-shell\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Afficher cette liste\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Pas de nouveau volume ; fin du traitement.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Nom de fichier non spécifié. Essaye encore :).\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Données non valables en entrée. Tapez « ? » pour obtenir de l'aide.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Échec de la commande %s"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "La suite de %s est probablement sur ce volume : l'en-tête contient un nom "
 "tronqué."
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "La suite de %s n'est pas sur ce volume."
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s a une taille incorrecte (%s != %s + %s)."
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Ce volume est hors séquence (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Archive non étiquetée pour correspondre à %s."
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Le volume %s ne correspond pas à %s."
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -805,7 +808,7 @@ msgstr ""
 "%s : nom de fichier tronqué, car trop long pour être stocké dans un en-tête "
 "GNU multi-volumes"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "l'écriture ne s'est pas arrêté sur une limite de bloc"
 
@@ -816,20 +819,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Seulement %lu octet sur %lu a pu être lu"
 msgstr[1] "Seulement %lu octets sur %lu ont pu être lus"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Les contenus sont différents."
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Fin prématurée rencontrée dans l'archive."
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Le type de fichier est différent."
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Le mode est différent."
 
@@ -845,150 +848,150 @@ msgstr "Le GID est différent."
 msgid "Mod time differs"
 msgstr "La date de modification est différente."
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "La taille est différente."
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "N'est pas lié à %s."
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Le lien symbolique est différent."
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Le numéro de périphérique est différent."
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Vérification "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s : type de fichier inconnu « %c », recherche de différence comme pour un "
 "fichier normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "L'archive contient des noms de fichiers dont le préfixe a été enlevé"
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 "La vérification peut échouer lors de la localisation des fichier originaux."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "ÉCHEC DE VÉRIFICATION : %d en-tête non valable détecté."
 msgstr[1] "ÉCHEC DE VÉRIFICATION : %d en-têtes non valables détectés."
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Bloc zéro solitaire repéré à %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s : contient une étiquette de répertoire cache %s ; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "Valeur %s en dehors de la plage de %s : %s..%s ; remplacement par %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "Valeur %s en dehors de la plage de %s : %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Génération d'en-têtes octaux négatifs"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s : le nom de fichier est trop long (%d max) ; fichier non archivé"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s : le nom de fichier est trop long (ne peut être scindé) ; fichier non "
 "archivé"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s : le nom du lien est trop long ; fichier non archivé"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s : fichier réduit de %s octet ; remplissage avec des zéros"
 msgstr[1] "%s : fichier réduit de %s octets ; remplissage avec des zéros"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr ""
 "%s : le fichier est sur un système de fichiers différent ; fichier non "
 "archivé"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "contenu non archivé"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s : type de fichier inconnu ; fichier ignoré"
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr "Liens manquants vers %s.\n"
+msgstr "Liens manquants vers %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s : le fichier n'est pas modifié ; fichier non archivé"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s : le fichier est l'archive elle-même ; fichier non archivé"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "répertoire non archivé"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s : fichier modifié pendant sa lecture"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s : socket ignorée"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s : porte ignorée"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "On saute à l'en-tête suivant"
 
@@ -996,74 +999,74 @@ msgstr "On saute à l'en-tête suivant"
 msgid "Deleting non-header from archive"
 msgstr "Suppression d'un « non en-tête » de l'archive"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s : l'horodatage %s est trop vieux pour être plausible"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s : l'horodatage %s est situé %s secondes dans le futur."
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s : incohérence inattendue lors de la création du répertoire"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s : répertoire renommé avant l'extraction de son état"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extraction des fichiers contigus comme des fichiers réguliers"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Tentative d'extraction des liens symboliques comme des liens physiques"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s : extraction impossible (morceau de fichier issu d'un autre volume)"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "En-tête à nom long inattendu"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s : type de fichier inconnu « %c », extrait comme un fichier normal."
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Le %s actuel est au moins aussi récent"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s : impossible d'archiver ce fichier."
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Impossible de renommer %s en %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s : le répertoire a été renommé depuis %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s : le répertoire a été renommé."
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s : le répertoire est nouveau."
@@ -1174,36 +1177,36 @@ msgstr "%s : suppression de %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s : suppression impossible"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s : omis"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloc %s : ** Bloc de NULs **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloc %s : ** Fin de fichier **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "bloc %s : "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 "Blancs dans l'en-tête alors qu'une valeur numérique de type %s était attendue"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1211,27 +1214,27 @@ msgstr ""
 "complément à 2 supposé"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "La valeur octale de l'archive %.*s est en dehors de la plage de %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "L'archive contient des en-têtes obsolètes en base 64."
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Une chaîne en base 64 signée %s de l'archive est hors de la plage %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Une valeur en base 256 de l'archive est en dehors de la plage %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr ""
@@ -1239,122 +1242,121 @@ msgstr ""
 "attendue."
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "La valeur de l'archive %s est hors des limites de %s : %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " lien vers %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " type de fichier inconnu %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Lien long--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Nom long--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--En-tête de volume--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Suite à l'octet %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Création du répertoire :"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Impossible de changer le répertoire de travail"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s renommé en %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s : impossible de renommer en %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s finalement renommé en %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Le répertoire de travail ne peut pas être sauvegardé"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Impossible de changer le répertoire de travail"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s : fichier supprimé avant d'avoir été lu"
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s : fichier supprimé avant d'avoir été lu"
+msgstr "%s : Répertoire supprimé avant d'avoir été lu"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "processus enfant"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "canal inter-processus"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
-"Caractères de correspondance de motif utilisé dans le nom de fichier. "
-"Veuillez "
+"Caractères de correspondance de motif utilisé dans les noms de fichiers."
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
-"utiliser « --wildcards » pour activer la correspondance de motif ou « --no-"
-"wildcards » pour"
+"Utilisez « --wildcards » pour activer la correspondance de motif ou « --no-"
+"wildcards » pour supprimer cet avertissement"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s : non trouvé dans l'archive"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s : occurence requise non trouvée dans l'archive"
 
-#: src/names.c:894
-#, fuzzy
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Mauvaise correspondance d'étiquette d'archive"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
-msgstr "--preserve-order n'est pas compatible avec --listed-incremental"
+msgstr ""
+"L'utilisation de l'option -C à l'intérieur de la liste de fichiers n'est pas "
+"permise avec --listed-incremental"
 
-#: src/names.c:900
-#, fuzzy
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr "--preserve-order n'est pas compatible avec --listed-incremental"
+msgstr "Une seule option -C est autorisée avec --listed-incremental"
 
 #: src/tar.c:81
 #, c-format
@@ -1380,7 +1382,7 @@ msgstr ""
 "Type de protection de caractères inconnu « %s ». Essayez « %s --quoting-"
 "style=help » pour avoir une liste."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1401,7 +1403,7 @@ msgstr ""
 "manière détaillée.\n"
 "  tar -xf archive.tar          # Extrait tous les fichiers de archive.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1414,92 +1416,92 @@ msgid ""
 msgstr ""
 "Le suffixe de sauvegarde est « ~ », à moins qu'il ne soit défini avec « --"
 "suffix » ou SIMPLE_BACKUP_SUFFIX.\n"
-"Le contrôle de version peut être défini avec « --backup » ou VERSION_CONTROL, "
-"les valeurs sont :\n"
+"Le contrôle de version peut être défini avec « --backup » ou "
+"VERSION_CONTROL, les valeurs sont :\n"
 "\n"
 "  none, off       Ne jamais faire de sauvegarde.\n"
 "  t, numbered     Faire des sauvegardes numérotées.\n"
 "  nil, existing   Numérotées si déjà numérotées, sinon simples.\n"
 "  never, simple   Faire toujours des sauvegardes simples.\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Mode d'opération principal :"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "Afficher le contenu de l'archive"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "Extraire les fichiers de l'archive"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "Créer une nouvelle archive"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "Trouver les différences entre l'archive et le système de fichiers"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "Ajouter des fichiers à la fin de l'archive"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 "Ajouter seulement les fichiers plus récents que les copies présentes dans "
 "l'archive"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "Ajouter des fichiers tar à une archive"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "Effacer de l'archive (pas sur les bandes magnétiques !)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "Tester l'étiquette du volume d'archive et terminer"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Modificateurs d'opération :"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 "Économiser efficacement l'espace dans les fichiers dispersés (fichiers à "
 "trous)"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJEUR[.MINEUR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "Définir la version du format de dispersion à utiliser (implique « --sparse »)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "Prendre en charge les sauvegardes incrémentales à l'ancien format GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "Prendre en charge les sauvegardes incrémentales au nouveau format GNU"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "niveau de vidage d'archive incrémentale au nouveau format GNU"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "Ne pas s'arrêter à cause des non-zéros sur les fichiers illisibles"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1512,167 +1514,168 @@ msgstr ""
 "fichiers est fournie soit sur la ligne de commande, soit avec l'option « -T "
 "». NOMBRE vaut 1 par défaut."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "L'archive peut être parcourue"
 
-#: src/tar.c:436
-#, fuzzy
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr "L'archive peut être parcourue"
+msgstr "L'archive ne peut pas être parcourue"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 "Ne pas vérifier les numéros de périphériques lors de la création d'archives "
 "incrémentales"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "vérifier les numéros de périphériques lors de la création d'archives "
 "incrémentales (par défaut)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Contrôle de l'écrasement :"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "Tenter de vérifier l'archive après écriture"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "Supprimer les fichiers après les avoir ajoutés à l'archive"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "Ne pas écraser les fichiers préexistants lors de l'extraction"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "Ne pas écraser les fichier préexistants qui sont plus récents que leur copie "
 "dans l'archive"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "Écraser les fichiers préexistants lors de l'extraction"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "Effacer chaque fichier préexistant avant l'extraction"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "Vider les hiérarchies avant d'extraire les répertoires"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "Préserver les métadonnées des répertoires préexistants"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "Écraser les métadonnées des répertoires préexistants lors de l'extraction "
 "(comportement par défaut)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Choix du flux de sortie :"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "Extraire les fichiers vers la sortie standard"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "COMMANDE"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "Renvoyer par tube les fichiers extraits vers un autre programme"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "Ignorer les codes de retour des processus enfants"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 "Traiter les codes de retours non nuls des processus enfants comme des erreurs"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Traitement des attributs de fichiers :"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "Utiliser NOM comme propriétaire des fichiers ajoutés"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "Utiliser NOM comme groupe des fichiers ajoutés"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATE-OU-FICHIER"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 "Définir la date de modification des fichiers ajoutés avec DATE-OU-FICHIER"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "CHANGEMENTS"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 "Utiliser les CHANGEMENTS de mode (symboliques) pour les fichiers ajoutés"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "MÉTHODE"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 "Préserve la date d'accès des fichiers archivés, soit en la restaurant après "
-"lecture (MÉTHODE = « replace » par défaut) ou en ne définissant pas les dates "
-"initialement (MÉTHODE = « system »)"
+"lecture (MÉTHODE = « replace » par défaut) ou en ne définissant pas les "
+"dates initialement (MÉTHODE = « system »)"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "Ne pas extraire la date de modification du fichier"
 
-#: src/tar.c:504
-#, fuzzy
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
-msgstr "Essayer d'extraire les fichiers avec le même propriétaire"
+msgstr ""
+"essayer d'extraire les fichiers avec le même propriétaire que dans l'archive "
+"(par défaut pour le superutilisateur)"
 
-#: src/tar.c:506
-#, fuzzy
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
-msgstr "Vous approprier les fichiers extraits"
+msgstr ""
+"S'approprier les fichiers lors de l'extraction (par défaut pour les "
+"utilisateurs ordinaires)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "Toujours utiliser les valeurs numériques des utilisateurs/groupes"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "Extraire les informations de permissions sur les fichiers (par défaut pour "
 "le superutilisateur)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1680,15 +1683,15 @@ msgstr ""
 "Appliquer l'umask de l'utilisateur lors de l'extraction des permissions (par "
 "défaut pour les utilisateurs normaux)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "Trier les noms à extraire dans le même ordre que l'archive"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "Équivalent à « -p -s » à la fois"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1696,139 +1699,139 @@ msgstr ""
 "Reporter à la fin de l'extraction le changement des dates de modification et "
 "des permissions des répertoires extraits"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "Annule l'effet de l'option « --delay-directory-restore »"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Sélection et option de périphérique :"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIVE"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "Utiliser le fichier ou le périphérique ARCHIVE"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "Le fichier d'archive est local même si « : » a été spécifié"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "Utiliser la COMMANDE rmt fournie au lieu de rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "Utiliser la COMMANDE distante à la place de rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "Spécifier le lecteur et la densité"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "Créer/lister/extraire une archive multi-volumes"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "Changer de cartouche après avoir écrit NOMBRE x 1024 octets"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "Exécuter le script à la fin de chaque cartouche (implique « -M »)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "Utiliser/mettre à jour le numéro de volume dans le FICHIER"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blocs du périphérique :"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOCS"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOCS x 512 octets par enregistrement"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "NOMBRE d'octets par enregistrement (multiple de 512)"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "Ignorer les blocs de zéros dans l'archive (càd EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "Refaire les blocs pendant la lecture (pour les tubes BSD 4.2)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Sélection du format d'archive :"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "Créer l'archive au format désiré."
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT peut prendre une des valeurs suivantes :"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "Vieux format tar V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "Format GNU issu de tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "Format GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "Format POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "Format POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "Identique à pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "Identique à « --format=v7 »"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "Identique à « --format=posix »"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "mot_clé[[:]=valeur][,mot_clé[[:]=valeur]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "Mots-clés de contrôle pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXTE"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1837,85 +1840,85 @@ msgstr ""
 "l'extraction, utiliser le TEXTE comme motif de correspondance (glob) au nom "
 "de volume."
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Options de compression :"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 "Utiliser le suffixe de l'archive pour déterminer le programme de compression"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 "Ne pas utiliser l'extension du fichier d'archive pour déterminer le "
 "programme de compression"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "Filtrer à travers le PROG (doit accepter l'option « -d »)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Sélection des fichiers locaux :"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "Ajouter le FICHIER donné à l'archive (utile si son nom commence par un tiret)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "RÉP"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "Utiliser RÉP comme répertoire de travail"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "Lire depuis le FICHIER la liste des noms à extraire ou à créer"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
-"« -T » permet de lire les noms terminés par un NULL et désactive l'option « -"
-"»"
+"« -T » permet de lire les noms terminés par un NULL et désactive l'option « -"
+"»"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "désactive l'effet de l'option --null précédente"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
-"Enlever la protection de caractères des noms de fichiers lus avec « -T » (par "
-"défaut)"
+"Enlever la protection de caractères des noms de fichiers lus avec « -T "
+"» (par défaut)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
-"Ne pas enlever la protection de caractères des noms de fichiers lus avec « -"
-"»"
+"Ne pas enlever la protection de caractères des noms de fichiers lus avec « -"
+"»"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MOTIF"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "Exclure les fichiers correspondant au MOTIF"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "Exclure les motifs listés dans le FICHIER"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1923,99 +1926,99 @@ msgstr ""
 "Exclure le contenu des répertoires contenant CACHEDIR.TAG, sauf le fichier "
 "de tag lui-même"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "Tout exclure dans les répertoires contenant CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "Exclure les répertoires contenant CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "Exclure le contenu des répertoires contenant le FICHIER, sauf le FICHIER lui-"
 "même"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "Tout exclure dans les répertoires contenant le FICHIER"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "Exclure les répertoires contenant le FICHIER"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "Exclure les répertoires de contrôle de version (CVS, .svn, etc.)"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "exclure les fichiers de sauvegarde et de verrou"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "Empêcher la descente automatique dans les sous-répertoires"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 "Rester dans le système de fichiers local lors de la création de l'archive"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "Parcourir les sous-répertoires de manière récursive (par défaut)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "Ne pas enlever le « / » au début des noms de fichiers"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "Suivre les liens symboliques ; archiver les fichiers vers lesquels ils "
 "pointent"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "Suivre les liens physiques : archiver les fichiers vers lesquels ils pointent"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NOM-DE-MEMBRE"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "Débuter au NOM-DE-MEMBRE dans l'archive"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "Stocker seulement les fichiers plus récents que DATE-OU-FICHIER"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATE"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "Ne comparer que la date et l'heure de modification des données"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTRÔLE"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 "Faire une copie de sauvegarde avant suppression, choisir le CONTRÔLE de "
 "version"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "CHAÎNE"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -2024,109 +2027,108 @@ msgstr ""
 "habituel (« ~ » sauf s'il est définit par la variable d'environnement "
 "SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Transformation des noms de fichiers :"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 "Supprimer NOMBRE composants au début des noms de fichiers à l'extraction"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "EXPRESSION"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 "Utiliser l'EXPRESSION de remplacement « sed » pour transformer les noms de "
 "fichiers"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Options de correspondance de noms de fichiers (pour les motifs d'exclusion "
 "et d'inclusion)"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "Ignorer la casse (majuscules/minuscules)"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "Les motifs doivent correspondre au début des noms de fichiers"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 "Les motifs peuvent correspondre après n'importe quel « / » (par défaut pour "
 "l'exclusion)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "Correspondance sensible à la casse (comportement par défaut)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 "Utiliser des caractères de correspondance (par défaut pour l'exclusion)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "Correspondance exacte de chaîne"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "« / » ne correspond à aucun caractère de correspondance"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 "« / » peut correspondre à un caractère de correspondance (par défaut pour "
 "l'exclusion)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Options d'affichage :"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "Afficher de manière détaillée les fichiers traités"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "MOTCLÉ"
 
-#: src/tar.c:740
-#, fuzzy
+#: src/tar.c:741
 msgid "warning control"
-msgstr "Contrôle de l'écrasement :"
+msgstr "Contrôle d'avertissement"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "Afficher un message de progression tous les NOMBRE enregistrements (10 par "
 "défaut)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ACTION"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "exécuter l'ACTION à chaque point de contrôle"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 "Afficher un message si tous les liens n'ont pas pu être suivis et archivés"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2138,27 +2140,31 @@ msgstr ""
 "sont : SIGHUP, SIGQUIT, SIGINT, SIGUSR1 et SIGUSR2. Les noms sans préfixe « "
 "SIG » sont aussi acceptés"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "Afficher les dates de modification de fichier en UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "afficher l'heure du fichier en pleine résolution"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "Envoyer la sortie détaillée vers le FICHIER"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "Afficher le numéro du bloc de l'archive avec chaque message"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "Demander confirmation pour chaque action"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "Afficher les paramètres par défaut de tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2166,33 +2172,33 @@ msgstr ""
 "Lors du listage ou de l'extraction, lister chaque répertoire qui ne concorde "
 "pas avec le critère de recherche"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "Afficher les noms des fichiers ou des archives après transformation"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STYLE"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "Définir le style de protection de caractères appliqués aux noms. Voir ci-"
 "dessous pour les valeurs du STYLE"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "Protéger aussi les caractères faisant partie de la CHAÎNE"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "Enlever la protection des caractères faisant partie de la CHAÎNE"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Options de compatibilité :"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2200,64 +2206,64 @@ msgstr ""
 "Lors de la création, identique à « --old-archive ». Lors de l'extraction, "
 "identique à « --no-same-owner »"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Autres options :"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "Désactiver certaines options potentiellement néfastes"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Vous ne pouvez pas sélectionner plus d'une option parmi « -Acdtrux »"
+msgstr ""
+"Vous ne pouvez pas sélectionner plus d'une option parmi « -Acdtrux » ou « --"
+"test-label »"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Options de compression non compatibles entre elles"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Type de signal inconnu : %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Fichier d'échantillon de date non trouvé"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Remplacement par %s du format de date inconnu %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Option %s : date « %s » traitée comme %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s : la liste de fichiers est déjà lue"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s : le nom de fichier lu contient un caractère nul"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "Filtrer l'archive à travers « xz »"
+msgstr "Filtrer l'archive à travers %s"
 
-#: src/tar.c:1290
-#, fuzzy
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
-msgstr "Les arguments valables pour les options « --quoting-style » sont :"
+msgstr "Les arguments valables pour l'option « --quoting-style » sont :"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2265,54 +2271,52 @@ msgstr ""
 "\n"
 "Les valeurs par défaut de *ce* tar sont :\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Facteur de bloc non valable"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Longueur de cartouche non valable"
 
-#: src/tar.c:1511
-#, fuzzy
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr "Mauvais format de fichier incrémental"
+msgstr "Mauvaise valeur pour le niveau incrémental"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Plus d'une date seuil"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Version de la dispersion non valable"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 "--atime-preserve='system' n'est pas pris en charge sur cette plateforme"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "la valeur de « --checkpoint » n'est pas un entier"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s : groupe non valable"
+msgstr "Groupe non valable"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Mode non valable donné en option"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Nombre non valable"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Propriétaire non valable"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2320,69 +2324,69 @@ msgstr ""
 "L'option --preserve est obsolète, utilisez --preserve-permissions --preserve-"
 "order à la place"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Taille d'enregistrement non valable"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "La taille d'un enregistrement doit être un multiple de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Nombre d'éléments incorrect"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Une seule option « --to-command » est permise"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Argument de densité incorrect : %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Densité inconnue : « %c »"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Les options « -[0-7][lmh] » ne sont pas prises en charge par *ce* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FICHIER]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "L'ancienne option « %c » a besoin d'un argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence n'a pas de sens sans une liste de fichiers"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
-msgstr "« --occurrence » ne peut être utilisée dans le mode d'opération demandé"
+msgstr ""
+"« --occurrence » ne peut être utilisée dans le mode d'opération demandé"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Les fichiers d'archives multiples ont besoin de l'option « -M »"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Impossible de combiner « --listed-incremental » avec « --newer »"
 
-#: src/tar.c:2387
-#, fuzzy
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "--preserve-order n'est pas compatible avec --listed-incremental"
+msgstr "--level n'a aucun sens sans --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2391,50 +2395,49 @@ msgstr[0] ""
 msgstr[1] ""
 "%s: l'étiquette du volume est trop longue (la limite est %lu octets)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Impossible de vérifier des archives multi-volumes"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Impossible de vérifier des archives compressées"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Impossible d'utiliser des archives multi-volumes compressées"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Impossible de concaténer des archives compressées"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option peut être utilisée uniquement avec des archives POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 "La longueur du volume ne peut pas être inférieure à la taille de "
 "l'enregistrement"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order n'est pas compatible avec --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Je refuse de créer un fichier d'archive vide (oui je suis lâche)"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Les options « -Aru » sont incompatibles avec « -f - »"
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "Vous devez choisir une des options « -Acdtrux » "
+msgstr "Vous devez choisir une option parmi « -Acdtrux » ou « --test-label »"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Arrêt avec code d'échec à cause des erreurs précédentes"
@@ -2446,57 +2449,56 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s : fichier réduit de %s octet"
 msgstr[1] "%s: fichier réduit de %s octets"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Le mot clé %s est inconnu ou n'est pas encore implémenté"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "Nombre en dehors de la plage permise : %s"
+msgstr "L'horodatage est en dehors de la plage permise"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Le motif %s ne peut être utilisé"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Le mot clé %s ne peut pas être surdéfini"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "En-tête étendu incorrect : longueur manquante"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "La longueur de l'en-tête étendu est hors plage"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "La longueur de l'en-tête étendu %*s est hors plage"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "En-tête étendu incorrect : espace blanche manquante après la longueur"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "En-tête étendu incorrect : signe d'égalité manquant"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "En-tête étendu incorrect : retour à la ligne manquant"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Le mot clé inconnu « %s » pour l'en-tête étendu a été ignoré"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2504,27 +2506,27 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "L'en-tête étendu %s=%s est hors plage %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "En-tête étendu incorrect : %s=%s non valable"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "En-tête étendu incorrect : %s=%s en trop"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "En-tête étendu incorrect : %s non valable : délimiteur %c non prévu"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "En-tête étendu incorrect : %s non valable : nombre impair de valeurs"
@@ -2565,7 +2567,7 @@ msgstr "Point de contrôle d'écriture %u"
 msgid "Read checkpoint %u"
 msgstr "Point de contrôle de lecture %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2574,98 +2576,96 @@ msgstr ""
 "GNU paxutils.\n"
 "Les options sont :\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Options de création de fichier :"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "TAILLE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Créer le fichier à la TAILLE donnée"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Écrire dans le fichier NOM, plutôt que sur la sortie standard"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Lire les noms de fichier depuis le FICHIER"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T permet de lire les noms terminés par un NULL"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Remplir le fichier avec le MOTIF donné. MOTIF est « default » ou « zeros »"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Taille d'un bloc pour le fichier dispersé"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Générer un fichier dispersé (avec des trous). Le reste de la ligne de "
 "commande définit la carte du fichier."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "DÉCALAGE"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Se déplacer du DÉCALAGE donné avant d'écrire des données"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Options des statistiques de fichiers :"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Afficher le contenu des structures « stat » pour chaque fichier donné. Le "
 "FORMAT par défaut est :"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Options d'exécution synchrone :"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [OPTION...]"
+msgstr "OPTION"
 
-#: tests/genfile.c:165
-#, fuzzy
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
-"Exécuter la COMMANDE donnée. Utile avec « --checkpoint » et l'une des options "
-"« --cut Â», Â« --append Â» ou Â« --touch »"
+"Exécuter les ARGS. Utile avec « --checkpoint » et l'une des options « --cut "
+"», Â« --append Â», Â« --touch Â» ou Â« --unlink »"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Exécuter l'action donnée (voir plus bas) dès qu'un point de contrôle NOMBRE "
 "est atteint"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Définir la date pour la prochaine option « --touch »"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 "Afficher les points de contrôle exécutés et les codes de sortie de la "
 "COMMANDE"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2673,7 +2673,7 @@ msgstr ""
 "Actions d'exécution synchrone. Celles-ci sont exécutées lorsque le numéro du "
 "point de contrôle donné par « --checkpoint » est atteint."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2681,145 +2681,148 @@ msgstr ""
 "Tronquer le FICHIER à la taille donnée par la précédente option « --length "
 "» (ou 0 si elle n'est pas fournie)."
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Ajouter TAILLE octets au FICHIER. La TAILLE est fournie par la précédente "
 "option « --length »"
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Mettre à jour les dates d'accès et de modification du FICHIER"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Exécuter la COMMANDE"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "Supprimer FICHIER"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Taille non valable : %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Nombre en dehors de la plage permise : %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Taille négative : %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "La fonction stat(%s) a échoué"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "taille de fichier demandée : %lu, taille réelle : %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "le fichier créé n'est pas dispersé"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Erreur à la lecture du nombre près de « %s »"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Format de date inconnu"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGS...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "Impossible d'ouvrir « %s »"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "Impossible à parcourir"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "Le nom de fichier contient un caractère nul"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "Un fichier dispersé ne peut pas être généré sur la sortie standard. Utilisez "
 "l'option « --file »"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "Masque incorrect (près de « %s »)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Champ inconnu « %s »"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "Impossible de définir la date de « %s »"
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "Impossible d'ouvrir « %s »"
+msgstr "Impossible de supprimer « %s »"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "La commande s'est terminée correctement\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "La commande a échoué avec le code %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "La commande s'est terminée sur le signal %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "La commande s'est interrompue sur le signal %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "La commande a généré un core dump\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "La commande s'est terminée\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat nécessite un nom de fichier"
 
+#~ msgid "Cannot save working directory"
+#~ msgstr "Le répertoire de travail ne peut pas être sauvegardé"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s : l'option « -- %c » n'est pas permise\n"
 
index c5106d3b5ca65c560578334f0e3442715313e29d..96a04199296d011c092a2fd319dc04a24db8d802 100644 (file)
Binary files a/po/ga.gmo and b/po/ga.gmo differ
index dbf60ef730ced364babc1eef5ad0a668c710fbdd..60f49fa85574c0481e96d3bf0b15d553533bd24f 100644 (file)
--- a/po/ga.po
+++ b/po/ga.po
@@ -2,14 +2,16 @@
 # Copyright (C) 2003, 2004 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
 # Kevin Patrick Scannell <scannell@SLU.EDU>, 2003, 2004, 2006, 2007, 2008, 2009.
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.22\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2009-03-25 20:27-0600\n"
 "Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -88,7 +90,7 @@ msgstr ""
 msgid "Report bugs to %s.\n"
 msgstr "Seol tuairiscí fabhtanna chuig %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Earráid anaithnid chórais"
 
@@ -100,8 +102,8 @@ msgstr "taispeáin an chabhair seo"
 msgid "give a short usage message"
 msgstr "taispeáin beagán eolais faoin úsáid"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "AINM"
 
@@ -140,56 +142,61 @@ msgstr ""
 msgid "write error"
 msgstr "earráid sa scríobh"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: Tá an rogha `%s' débhríoch\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `--%s'\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `%c%s'\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: rogha anaithnid `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: rogha anaithnid `%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: rogha neamhbhailí -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `-W %s'\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "cuimhne ídithe"
@@ -548,144 +555,144 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Ní féidir cianbhlaosc a rith"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Treo 'seek' as raon"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Mód neamhbhailí ar rogha"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Méid neamhbhailí: %s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Fritháireamh 'seek' as raon"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Fad téipe neamhbhailí"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Fritháireamh 'seek' as raon"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Comhadchríoch gan choinne\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Príomh-mhód oibre:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Comhadchríoch gan choinne"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "UIMHIR"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "COMHAD"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "ní féidir `%s' a oscailt"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "an iomarca argóintí"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Ordú dramhaíola"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Ní cosúil le cartlann `tar' é seo"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Bearta scríofa go hiomlán"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Bearta léite go hiomlán"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Bearta scriosta go hiomlán: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(píopa)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Luach neamhbhailí do record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Ní thugtar ainm na cartlainne"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Ní féidir cartlann stdin/stdout a fhíorú"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Is cartlann chomhbhrúite í seo. Úsáid an rogha %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Ní féidir cartlanna comhbhrúite a nuashonrú"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Tosach na téipe, ag scor anois"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "An iomarca earráidí, ag scor"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
@@ -695,7 +702,7 @@ msgstr[2] "Méid taifid = %lu bhloc"
 msgstr[3] "Méid taifid = %lu mbloc"
 msgstr[4] "Méid taifid = %lu bloc"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
@@ -705,38 +712,38 @@ msgstr[2] "Bloc neamhailínithe (%lu bheart) sa chartlann"
 msgstr[3] "Bloc neamhailínithe (%lu mbeart) sa chartlann"
 msgstr[4] "Bloc neamhailínithe (%lu beart) sa chartlann"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Ní féidir an chartlann a chúlú; is dócha gur doléite í gan -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "Níor stopadh rmtlseek ag teorainn taifid"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: tá uimhir imleabhair neamhbhailí ann"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Uimhir imleabhair thar maoil"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr ""
 "Socraigh an t-imleabhar #%d le haghaidh %s agus brúigh an eochair iontrála: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Fuarthas comhadchríoch in áit freagra ón úsáideoir"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "RABHADH: Tá an chartlann neamhiomlán"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -748,67 +755,67 @@ msgstr ""
 " q             Tobscoir tar\n"
 " y nó líne nua Lean ar aghaidh\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Sceith fobhlaosc\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Priontáil an liosta seo\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Níl aon imleabhar nua; ag scor.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Ainm an chomhaid gan sonrú. Bain triail eile as.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Ionchur neamhbhailí. Iontráil ? chun cabhair a fháil.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Theip ar ordú %s"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "Seans go leanann %s ar aghaidh ar an imleabhar seo: tá ainm teasctha sa "
 "cheanntásc"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "Ní leanann %s ar an imleabhar seo"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "Níl %s an méid ceart (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Tá an t-imleabhar seo as ord (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Lipéad ar chartlann nach comhoiriúnaithe le %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Níl an t-imleabhar %s comhoiriúnaithe le %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -816,7 +823,7 @@ msgstr ""
 "%s: ní féidir an comhadainm seo a stóráil i gceanntásc il-imleabhar GNU; "
 "teasctha"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "níor stop an scríobh ag teorainn bhloic"
 
@@ -830,20 +837,20 @@ msgstr[2] "Níorbh fhéidir ach %lu de %lu bheart a léamh"
 msgstr[3] "Níorbh fhéidir ach %lu de %lu mbeart a léamh"
 msgstr[4] "Níorbh fhéidir ach %lu de %lu beart a léamh"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Tá difríocht idir na hábhair"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Comhadchríoch gan choinne i gcartlann"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Tá difríocht idir na cineálacha comhaid"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Tá difríocht idir na móid"
 
@@ -859,42 +866,42 @@ msgstr "Tá difríocht idir na GIDanna"
 msgid "Mod time differs"
 msgstr "Tá difríocht idir na hamanna modhnaithe"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Tá difríocht idir na méideanna"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Ní ceangailte le %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Tá difríocht idir na naisc shiombalacha"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Tá difríocht idir na huimhreacha gléis"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Fíoraigh "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Cineál anaithnid comhaid `%c', déan diff mar ghnáthchomhad"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Tá comhaid sa chartlann agus a réimíreanna scriosta."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Nach féidir i gcónaí na bunchomhaid a aimsiú agus le linn fíoraithe."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
@@ -904,46 +911,46 @@ msgstr[2] "THEIP AR DHEIMHNIÚ: aimsíodh %d cheanntásc neamhbhailí"
 msgstr[3] "THEIP AR DHEIMHNIÚ: aimsíodh %d gceanntásc neamhbhailí"
 msgstr[4] "THEIP AR DHEIMHNIÚ: aimsíodh %d ceanntásc neamhbhailí"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Bloc nialasach scoite ag %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: tá clib chomhadlainne taisce %s ann; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "tá an luach %s as raon %s: %s..%s; ag cur %s ina ionad"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "tá an luach %s as raon %s: %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Ceanntásca ochtnártha diúltacha á gcruthú"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: ainm comhaid rófhada (uasmhéid %d); gan dumpáil"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: ainm comhaid rófhada (ní féidir é a scoilt); gan dumpáil"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: ainm naisc rófhada; gan dumpáil"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -953,55 +960,55 @@ msgstr[2] "%s: %s bheart níos lú sa chomhad; ag stuáil le nialais"
 msgstr[3] "%s: %s mbeart níos lú sa chomhad; ag stuáil le nialais"
 msgstr[4] "%s: %s beart níos lú sa chomhad; ag stuáil le nialais"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: is ar chóras comhad eile é an comhad; gan dumpáil"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "ábhar gan dumpáil"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Cineál anaithnid comhaid; ag déanamh neamhshuim air"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Naisc le %s ar iarraidh.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: comhad gan athrú; gan dumpáil"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: is ionann é agus an chartlann féin; gan dumpáil"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "níor dumpáladh an chomhadlann"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: athraíodh an comhad agus á léamh"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: rinneadh neamhshuim ar an soicéad"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: rinneadh neamhshuim ar an doras"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Ag bogadh go dtí an chéad cheanntásc eile"
 
@@ -1009,76 +1016,76 @@ msgstr "Ag bogadh go dtí an chéad cheanntásc eile"
 msgid "Deleting non-header from archive"
 msgstr "Comhad nach ceanntásc á scriosadh ón chartlann"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: ní dócha go bhfuil an stampa ama ársa %s ceart"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: tá an stampa ama %s %s soicind amach anseo"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Bunoscionntacht gan choinne agus comhadlann á cruthú"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 "%s: Athainmníodh an chomhadlann sularbh fhéidir a stádas a bhaint amach"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Comhaid theorantacha á mbaint amach mar ghnáthchomhaid"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr ""
 "Ag déanamh iarracht ar naisc shiombalacha a bhaint amach mar naisc chrua"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Ní féidir an comhad a bhaint amach -- ar lean ó imleabhar eile"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Ceanntásc ainm fada gan choinne"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Cineál anaithnid comhaid `%c', á bhaint amach mar ghnáthchomhad"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Tá an %s reatha níos nuaí nó ar comhaois"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Níorbh fhéidir cúltaca a dhéanamh"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Ní féidir %s a athainmniú go %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Athainmníodh an chomhadlann ó %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Athainmníodh an chomhadlann"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Comhadlann nua"
@@ -1190,35 +1197,35 @@ msgstr "%s: %s á scriosadh\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Ní féidir scriosadh a dhéanamh"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: ag fágáil ar lár"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloc %s: ** bloc de NULanna **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloc %s: ** Deireadh comhaid **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "bloc %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Bearnaí sa cheanntásc; ag súil le luach uimhriúil %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1226,141 +1233,143 @@ msgstr ""
 "ag glacadh le comhlánú dénártha"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Tá an luach ochtnártha %.*s as raon %s sa chartlann"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Tá ceanntásca le bunuimhir 64 i léig sa chartlann"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Teaghrán %s le sín agus bunuimhir 64 as raon %s sa chartlann"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Tá an luach le bunuimhir 256 as raon %s sa chartlann"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Tá %.*s sa chartlann; ag súil le luach uimhriúil %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Tá an luach cartlainne %s as raon %s: %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " nasc le %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " cineál anaithnid comhaid %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Nasc Fada--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Ainm Fada--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Ceanntásc Imleabhair--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Ar lean ag beart %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Comhadlann á cruthú:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Ní féidir an chomhadlann reatha a athrú"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s á athainmniú go %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Ní féidir athainmniú go %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s á athainmniú go %s arís\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Ní féidir an chomhadlann reatha a shábháil"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Ní féidir an chomhadlann reatha a athrú"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Scriosadh an comhad sular léadh é"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Scriosadh an comhad sular léadh é"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "macphróiseas"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "bealach idir próisis"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "Aimsíodh saoróga in ainmneacha comhaid."
 
-#: src/names.c:603
+#: src/names.c:596
 #, fuzzy
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr "Úsáid --wildcards chun comhoiriúnú patrún a chumasú, nó --no-wildcards"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Ní sa chartlann é"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Níl rud riachtanach sa chartlann"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Lipéad ar chartlann nach comhoiriúnaithe le %s"
+
+#: src/names.c:953
 #, fuzzy
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr "Níl --preserve-order comhoiriúnach do --listed-incremental"
 
-#: src/names.c:900
+#: src/names.c:959
 #, fuzzy
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Níl --preserve-order comhoiriúnach do --listed-incremental"
@@ -1387,7 +1396,7 @@ msgstr ""
 "Stíl anaithnid athfhriotail `%s'. Bain triail as `%s --quoting-style=help' "
 "chun liosta a fheiceáil."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1407,7 +1416,7 @@ msgstr ""
 "(foclach).\n"
 "  tar -xf cartlann.tar        # Bain gach comhad amach as cartlann.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1429,80 +1438,80 @@ msgstr ""
 "bhfuil\n"
 "  never, simple   déan cúltacaí simplí i gcónaí\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Príomh-mhód oibre:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "taispeáin an t-ábhar i gcartlann"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "bain comhaid as cartlann"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "cruthaigh cartlann nua"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "taispeáin difríochtaí idir cartlann agus córas comhaid"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "iarcheangail le deireadh cartlainne"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "ná hiarcheangail ach comhaid mhionathraithe leis an gcartlann"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "iarcheangail comhaid tar le cartlann"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "scrios as an gcartlann (nach ar théipeanna maighnéadacha!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "tástáil lipéad imleabhair na cartlainne agus scoir"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Mionathraitheoirí oibríochta:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "caith le gannchomhaid go héifeachtach"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "PRÍOMH[.MION]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "socraigh leagan fhormáid na ngannchomhad le húsáid (--sparse intuigthe)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "déan cúltaca incriminteach de shean-nós GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "déan cúltaca incriminteach nua-aoise GNU"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "ná scoir le stádas earráide má tá comhad doléite ann"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1514,126 +1523,126 @@ msgstr ""
 "extract nó --list agus nuair a thugtar liosta comhad ar líne na n-orduithe "
 "nó leis an rogha -T; de réir réamhshocraithe UIMHIR=1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "tá an chartlann inchuardaithe"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "tá an chartlann inchuardaithe"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 "ná seiceáil uimhreacha gléasanna agus cartlanna incriminteacha á gcruthú"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "seiceáil uimhreacha gléasanna agus cartlanna incriminteacha á gcruthú "
 "(réamhshocrú)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Rialú forscríofa:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "fíoraigh an chartlann i ndiaidh ag scríobh"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "scrios comhaid i ndiaidh iad a chur leis an gcartlann"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "ná forscríobh comhaid atá ann le linn baint amach"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "ná forscríobh comhaid atá ann má tá siad níos nuaí ná na cinn sa chartlann"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "forscríobh comhaid atá ann le linn baint amach"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "scrios gach comhaid sula scríobhtar air"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "folmhaigh géagchóras sula mbaintear comhadlann amach"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "ná forscríobh meiteashonraí comhadlainne"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "forscríobh meiteashonraí de chomhadlanna atá ann agus cartlanna á mbaint "
 "amach (réamhshocrú)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Roghnaigh sruth aschurtha:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "bain comhaid amach agus scríobh ar an ngnáth-aschur"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "ORDÚ"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "píopaigh comhaid bhainte go ríomhchlár eile"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "ná bac le cóid scortha na macphróiseas"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "láimhseáil cóid scortha nach nialas ó mhacphróisis mar earráidí"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Tréithe comhaid á láimhseáil:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "éiligh AINM mar úinéir de chomhaid bhreise"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "éiligh AINM mar ghrúpa de chomhaid bhreise"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DÁTA-NÓ-COMHAD"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "socraigh am mionathraithe na gcomhad nua de réir DÁTA-NÓ-COMHAD"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ATHRUITHE"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "déan ATHRUITHE ar mhód de chomhaid bhreise"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "MODH"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1643,31 +1652,31 @@ msgstr ""
 "ndiaidh na comhaid a léamh (MODH='replace', réamhshocraithe), nó gan a "
 "bheith ag socrú na n-amanna sa chéad áit (MODH='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "ná bain am mionathraithe an chomhaid"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "bain triail as úinéireacht a choinneáil"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "bain comhaid amach mar thusa féin"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "bain úsáid as uimhreacha d'ainmneacha úsáideora/grúpa"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "bain eolas faoi cheadanna (réamhshocrú don fhorúsáideoir)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1675,15 +1684,15 @@ msgstr ""
 "cuir umask an úsáideora i bhfeidhm agus ceadanna á mbaint ón chartlann "
 "(réamhshocrú do ghnáthúsáideoirí)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "sórtáil ainmneacha le cur in oiriúint"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "ar comhbhrí le -p agus -s araon"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1691,139 +1700,139 @@ msgstr ""
 "ná socraigh amanna mionathraithe ná ceadanna de na comhadlanna go dtí go "
 "bhfuil an bhaint curtha i gcrích"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "cealaigh an éifeacht de rogha --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Roghnú gléis agus malartú:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "CARTLANN"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "bain úsáid as cartlann chomhaid nó gléas CARTLANN"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "is logánta í an chartlann fiú má tá idirstad ina hainm"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "bain úsáid as ORDÚ in ionad rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "bain úsáid as ORDÚ cian in ionad rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "sonraigh tiomántán agus a dhlús"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "cruthaigh/liostaigh/bain amach cartlann le hiliomad imleabhair"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "athraigh téip i ndiaidh UIMHIR × 1024 beart"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "rith script i ndiaidh gach téip (-M intuigthe)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "úsáid/nuashonraigh an uimhir imleabhair i gCOMHAD"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blocáil ghléis:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOIC"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOIC × 512 beart sa taifead"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "UIMHIR beart sa taifead, iolraí de 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "déan neamhshuim ar bhloic nialasacha sa chartlann (is ionann le EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "athbhlocáil le linn léimh (le píopaí 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Roghnú formáide:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMÁID"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "cruthaigh cartlann san fhormáid seo"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "Is FORMÁID ceann de na rudaí seo:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "seanfhormáid V7 tar"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "formáid de réir GNU tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "formáid de réir GNU tar 1.13"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "formáid POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "formáid POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "ar comhbhrí le pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "is ionann le --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "is ionann le --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "lorgfhocal[[:]=luach][,lorgfhocal[[:]=luach]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "rialaigh lorgfhocail pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TÉACS"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1831,79 +1840,79 @@ msgstr ""
 "cruthaigh cartlann le TÉACS mar ainm imleabhair; úsáid TÉACS mar phatrún "
 "globála ar an ainm imleabhair agus an chartlann á liostú/baint amach"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Roghanna comhbhrúite:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "úsáid iarmhír na cartlainne chun an modh comhbhrúite a dhéanamh amach"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 "ná húsáid iarmhír na cartlainne chun an clár comhbhrúite a dhéanamh amach"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "CLÁR"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "scag le CLÁR (ní foláir -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Roghnú comhaid logánta:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "cuir an COMHAD sainithe leis an gcartlann (is áisiúil an rogha seo nuair atá "
 "dais ag tosach an chomhadainm)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "COMHADLANN"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "athraigh go dtí COMHADLANN"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "tóg ainmneacha le baint/cruthú as comhad COMHAD"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "léigh ainmneacha, foirceanta le NULanna; múch -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "díchumasaigh an rogha --null roimhe seo"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "bain comharthaí athfhriotail ó chomhadainmneacha a léadh le -T (réamhshocrú)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "ná bain comharthaí athfhriotail ó chomhadainmneacha a léadh le -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATRÚN"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "fág comhaid as an áireamh, tugtha mar PHATRÚN"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "fág as an áireamh aon phatrún atá i gCOMHAD"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1911,94 +1920,94 @@ msgstr ""
 "gabh thar ábhar na gcomhadlann ina bhfuil CACHEDIR.TAG, seachas an comhad "
 "clibe féin"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "gabh thar gach rud faoi chomhadlanna ina bhfuil CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "gabh thar chomhadlanna ina bhfuil CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "gabh thar ábhar na gcomhadlann ina bhfuil COMHAD, seachas COMHAD féin"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "gabh thar gach rud faoi chomhadlanna ina bhfuil COMHAD"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "gabh thar chomhadlanna a bhfuil COMHAD iontu"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "gabh thar chomhadlanna a bhaineann le córas rialaithe foinsí"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "ná téigh isteach i bhfochomhadlanna go huathoibríoch"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "ná fág an córas comhaid seo agus cartlann á cruthú"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "téigh isteach i gcomhadlanna (réamhshocrú)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "ná struipeáil `/' tosaigh ó ainmneacha comhaid"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "lean naisc shiombalacha; cartlannaigh agus dumpáil na comhaid a nascann na "
 "naisc leo"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "lean naisc chrua; cartlannaigh agus dumpáil na comhaid a nascann na naisc leo"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "AINM-BAILL"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "tosaigh ag ball AINM-BAILL sa chartlann"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "ná sábháil comhaid níos nuaí ná DÁTA-NÓ-COMHAD"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DÁTA"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "déan comparáid le dáta/am modhnaithe"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "MODH"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "déan cúltaca sula scriostar, roghnaigh modh oibre maidir le leaganacha"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "TEAGHRÁN"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -2006,101 +2015,101 @@ msgstr ""
 "déan cúltaca roimh bhaint, agus sáraigh an gnáth-iarmhír ('~' mura dtugtar é "
 "leis an athróg thimpeallachta SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Trasfhoirmiú ainmneacha comhaid:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "struipeáil UIMHIR comhpháirt tosaigh ó ainmneacha comhaid"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "SLONN"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 "Úsáid ordú ionadaíochta SLONN, i bhformáid \"sed\", chun ainmneacha comhaid "
 "a thrasfhoirmiú"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Roghanna maidir le comhoiriúnú ainmneacha comhaid (cuirfear iad seo i "
 "bhfeidhm do phatrúin eisiata agus do phatrúin iniata araon):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "ná bí cásíogair"
 
 # subject is "exclude patterns"
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "comhoiriúnaíonn patrúin do thosach ainm an chomhaid"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "comhoiriúnaíonn patrúin tar éis gach `/' (réamhshocrú i gcás eisiata)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "dealaigh idir litreacha beaga/móra (réamhshocrú)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "úsáid saoróga (réamhshocrú do phatrúin eisiata)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "comhoiriúnú teaghráin carachtar ar charachtar"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "ní ghlacann saoróga le `/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "comhoiriúnaíonn saoróga do `/' (réamhshocrú le patrúin eisiata)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Aschur faisnéiseach:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "taispeáin gach comhad atá próiseáilte, go foclach"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "Rialú forscríofa:"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "cuir dul chun cinn ar taispeáint, gach UIMHIRú taifid (réamhshocrú 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "GNÍOMH"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "déan GNÍOMH ag gach seicphointe"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "taispeáin eolas mura bhfuil gach nasc dumpáilte"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "COMHARTHA"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2112,27 +2121,32 @@ msgstr ""
 "Ceadaítear na comharthaí seo a leanas: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 agus "
 "SIGUSR2; glacfar leis na hainmneacha céanna gan an réimír SIG freisin"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "taispeáin dátaí mionathraithe de réir UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "scríobh aschur foclach i gCOMHAD"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "taispeáin bloc sa chartlann le gach teachtaireacht"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "iarr deimhniú ar gach gníomh"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "taispeáin réamhshocruithe tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2140,33 +2154,33 @@ msgstr ""
 "agus á liostú nó á bhaint amach, taispeáin gach comhadlann nach bhfuil "
 "comhoiriúnaithe don chuardach"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "taispeáin ainmneacha comhaid/cartlainne i ndiaidh trasfhoirmithe"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STÍL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "socraigh stíl athfhriotail ainmneacha; féach thíos le haghaidh luachanna "
 "bailí do STÍL"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "cuir carachtair athfhriotail timpeall na carachtair ó TEAGHRÁN"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "ná húsáid comharthaí athfhriotail timpeall carachtair ó TEAGHRÁN"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Roghanna Comhoiriúnachta:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2174,64 +2188,64 @@ msgstr ""
 "is ionann le --old-archive le linn cruthaithe; is ionann le --no-same-owner "
 "le linn baint"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Roghanna eile:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "cuir bac ar úsáid de roghanna gurbh fhéidir leo a bheith urchóideach"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Ná tabhair ach ceann de na roghanna `-Acdtrux'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Roghanna contrártha comhbhrúite"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Comhartha anaithnid: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Comhad samplach dáta gan aimsiú"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Formáid dáta anaithnid; ag baint úsáid as %s in ionad %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Rogha %s: Ag caitheamh le dáta `%s' mar %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: léadh an liosta comhad cheana"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: tá carachtar nialasach sa chomhadainm a léadh"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "scag an chartlann le xz"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Argóintí bailí do roghanna --quoting-style:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2239,53 +2253,53 @@ msgstr ""
 "\n"
 "Luachanna réamhshocraithe don tar *seo*:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Fachtóir bacainneach neamhbhailí"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Fad téipe neamhbhailí"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "Drochfhormáid incriminteach"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Níos mó ná spriocdháta amháin"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Leagan neamhbhailí ar fhormáid na ngannchomhad"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "ní thacaítear le --atime-preserve='system' ar an chóras seo"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "ní mór do luach --checkpoint a bheith ina slánuimhir"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Grúpa neamhbhailí"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Mód neamhbhailí ar rogha"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Uimhir neamhbhailí"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Úinéir neamhbhailí"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2293,69 +2307,69 @@ msgstr ""
 "tá an rogha --preserve dulta i léig, bain úsáid as --preserve-permissions --"
 "preserve-order ina háit"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Méid taifid neamhbhailí"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Ní foláir méid taifid a bheith iolraí de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Tá líon na mball neamhbhailí"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Ní cheadaítear ach aon rogha --to-command amháin"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Tá an argóint dlúis míchumtha: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Dlús anaithnid: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Níl na roghanna `-[0-7][lmh]' ar fáil sa leagan seo tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[COMHAD]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Tá gá le hargóint ar an seanrogha `%c'."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "tá an rogha --occurrence gan bhrí in éagmais liosta comhad"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "níl an rogha --occurrence ar fáil sa mhód iarrtha"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Ní foláir an rogha `-M' le níos mó ná cartlann amháin"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Ní féidir --listed-incremental a úsáid le --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "Níl --preserve-order comhoiriúnach do --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2365,48 +2379,48 @@ msgstr[2] "%s: Lipéad imleabhair rófhada (%lu bheart ar a mhéad)"
 msgstr[3] "%s: Lipéad imleabhair rófhada (%lu mbeart ar a mhéad)"
 msgstr[4] "%s: Lipéad imleabhair rófhada (%lu beart ar a mhéad)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Ní féidir cartlanna le hiliomad imleabhair a fhíorú"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Ní féidir cartlanna comhbhrúite a fhíorú"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Ní féidir úsáid a bhaint as cartlanna il-ranna comhbhrúite"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Ní féidir cartlanna comhbhrúite a iarcheangal"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "níl an rogha --pax-option le fáil ach le cartlanna POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Ní cheadaítear fad an imleabhair a bheith níos lú ná an mhéid taifid"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "Níl --preserve-order comhoiriúnach do --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Ní chruthófar cartlann fholamh (go cladhartha)"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Níl na roghanna `-Aru' ar fáil in éineacht le `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Ní foláir rogha amháin de `-Acdtrux' ar a laghad"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Scor le stádas teipthe de bharr earráidí roimhe seo"
@@ -2421,58 +2435,58 @@ msgstr[2] "%s: Chrap an comhad %s bheart"
 msgstr[3] "%s: Chrap an comhad %s mbeart"
 msgstr[4] "%s: Chrap an comhad %s beart"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Tá an lorgfhocal %s anaithnid nó nach bhfuil sé curtha i bhfeidhm fós"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Stampa ama as raon"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Ní féidir an patrún %s a úsáid"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Ní féidir an lorgfhocal %s a shárú"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Ceanntásc míchumtha breisithe: fad ar iarraidh"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Fad an cheanntáisc breisithe as raon"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Fad %*s as raon sa cheanntásc breisithe"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Ceanntásc míchumtha breisithe: spás bán ar iarraidh tar éis an fhaid"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Ceanntásc míchumtha breisithe: sín chothroime ar iarraidh"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Ceanntásc míchumtha breisithe: líne nua ar iarraidh"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 "Lorgfhocal anaithnid `%s' sa cheanntásc breisithe; ag déanamh neamhshuim air"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2480,29 +2494,29 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Tá an ceanntásc breisithe %s=%s as raon %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Ceanntásc míchumtha breisithe: %s=%s neamhbhailí"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Ceanntásc míchumtha breisithe: %s=%s sa bhreis"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Ceanntásc míchumtha breisithe: %s neamhbhailí: bhíothas ag súil le "
 "teormharcóir %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Ceanntásc míchumtha breisithe: %s neamhbhailí: corruimhir de luachanna"
@@ -2543,7 +2557,7 @@ msgstr "Seicphointe scríofa %u"
 msgid "Read checkpoint %u"
 msgstr "Seicphointe léimh %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2552,73 +2566,73 @@ msgstr ""
 "paxutils.\n"
 "Is iad na ROGHANNA:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Roghanna - cruthú comhad:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "MÉID"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Cruthaigh comhad leis an MÉID seo"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Scríobh i gcomhad AINM, in ionad an ghnáth-aschuir"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Léigh ainmneacha comhaid ó COMHAD"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "Léann -T ainmneacha, foirceanta le NULanna"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Líon an comhad leis an PATRÚN sonraithe. Is é PATRÚN 'default' nó 'zeros'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Méid bhloic sa gannchomhad"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Cruthaigh gannchomhad. Tugtar an mapa comhaid ar an chuid eile de líne na n-"
 "orduithe."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "FRITHÁIREAMH"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Léim go dtí an FRITHÁIREAMH roimh scríobh na sonraí"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Roghanna - staitisticí comhaid"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Taispeáin inneachar an struct stat le haghaidh gach comhad sonraithe. "
 "FORMÁID réamhshocraithe: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Roghanna - feidhmiú sioncrónach:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [ROGHA...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 #, fuzzy
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
@@ -2627,20 +2641,20 @@ msgstr ""
 "Rith an tORDÚ sonraithe. Is áisiúil an rogha seo le --checkpoint agus ceann "
 "de --cut, --append, nó --touch"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Déan an gníomh sonraithe (féach thíos) nuair a shroichtear seicphointe UIMHIR"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Socraigh an dáta le haghaidh an chéad rogha --touch eile"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Taispeáin na seicphointí a ritheadh agus stádas scortha den ORDÚ"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2648,7 +2662,7 @@ msgstr ""
 "Gníomhartha rite sioncrónaigh. Ritear iad seo nuair a shroichtear an uimhir "
 "sheicphointe a sonraíodh leis an rogha --checkpoint"
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2656,146 +2670,160 @@ msgstr ""
 "Teasc COMHAD go dtí an mhéid a sonraíodh leis an rogha --length roimhe seo "
 "(nó teasc go dtí 0, mura sonraítear an rogha seo)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Iarcheangail MÉID beart le COMHAD. Tógtar MÉID ón rogha --length roimhe seo."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Nuashonraigh na hamanna rochtana/mionathraithe de CHOMHAD"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Rith ORDÚ"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Méid neamhbhailí: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Uimhir as raon: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Méid diúltach: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "theip ar stat(%s)"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "fad iarrtha %lu, fíorfhad %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "ní gannchomhad é an comhad cruthaithe"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Earráid agus uimhir á parsáil i ngar do `%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Formáid anaithnid ar an dáta"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGÓINTÍ...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "ní féidir `%s' a oscailt"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "ní féidir 'seek' a dhéanamh"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "tá carachtar nialasach sa chomhadainm"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "ní féidir gannchomhaid a chruthú ar an ngnáth-aschur; úsáid rogha --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "masc mícheart (i ngar do `%s')"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Réimse anaithnid `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "ní féidir an t-am a shocrú ar `%s'"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "ní féidir `%s' a oscailt"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "D'éirigh leis an ordú\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Theip ar an ordú le stádas %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Stopadh an t-ordú le comhartha %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Stopadh an t-ordú ar chomhartha %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Rinne an t-ordú córdhumpa\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Ordú críochnaithe\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "Tá ainmneacha comhaid de dhíth ar --stat"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Ní féidir an chomhadlann reatha a shábháil"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "Ní féidir %s a athainmniú go %s"
+
+#~ msgid "suppress this warning."
+#~ msgstr "chun an rabhadh seo a mhúchadh."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: rogha neamhcheadaithe -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "%s á léamh\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2803,15 +2831,6 @@ msgstr "Tá ainmneacha comhaid de dhíth ar --stat"
 #~ "\n"
 #~ "Seol tuairiscí fabhtanna chuig <%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "%s á léamh\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Ní féidir biseach a dhéanamh i ndiaidh earráid: ag scor"
-
-#~ msgid "suppress this warning."
-#~ msgstr "chun an rabhadh seo a mhúchadh."
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "scag an chartlann le bzip2"
 
@@ -2861,6 +2880,9 @@ msgstr "Tá ainmneacha comhaid de dhíth ar --stat"
 #~ msgid "Premature end of file"
 #~ msgstr "Comhadchríoch gan choinne"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Ní féidir biseach a dhéanamh i ndiaidh earráid: ag scor"
+
 #~ msgid "Warning: the -I option is not supported; perhaps you meant -j or -T?"
 #~ msgstr "Rabhadh: níl an rogha -I ar fáil; ar mhaith leat -j nó -T?"
 
index 80ef7438bc6e43bcebca3ae81310f1b82f79243a..33e4d429fe219679f559571bc9354403139bfaab 100644 (file)
Binary files a/po/gl.gmo and b/po/gl.gmo differ
index 170fc842351483bedaf026811e8c1662c81e7ca5..3e50950d645ad215405302499c571d22de679014 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -2,14 +2,16 @@
 # Copyright (C) 2002 Free Software Foundation, Inc.
 # Jacobo Tarrío Barreiro <jtarrio@iname.com>, 2002.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.13.25\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2002-03-26 19:17+0100\n"
 "Last-Translator: Jacobo Tarrío Barreiro <jtarrio@iname.com>\n"
 "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
+"Language: gl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -88,7 +90,7 @@ msgstr ""
 "Informe dos erros no programa a <bug-tar@gnu.org>.\n"
 "Informe dos erros na traducción a <proxecto@trasno.net>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Erro do sistema descoñecido"
 
@@ -100,8 +102,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -139,56 +141,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: a opción \"%s\" é ambigua\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: a opción \"--%s\" non admite un argumento\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: a opción \"%c%s\" non admite un argumento\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: a opción \"%s\" precisa dun argumento\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opción \"--%s\" non recoñecida\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opción \"%c%s\" non recoñecida\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: opción non válida -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: a opción precisa dun argumento -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: a opción \"-W %s\" é ambigua\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: a opción \"-W %s\" non admite un argumento\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: a opción \"%s\" precisa dun argumento\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memoria esgotada"
@@ -517,189 +524,189 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Non se pode executar un intérprete de comandos remoto"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Dirección de desprazamento fóra de rango"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Proporcionouse na opción un modo non válido"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Marca de tempo non válida"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Desprazamento fóra de rango"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Lonxitude da fita non válida"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Desprazamento fóra de rango"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Fin de ficheiro prematura\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "%s: opción non válida -- %c\n"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Fin de ficheiro inesperado nos nomes alterados"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "Non se puido abrir %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Comando lixo"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Isto non semella un arquivo tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Bytes totais escritos: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Bytes totais escritos: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(canalización)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Valor non válido para record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Non se proporcionou o nome do arquivo"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Non se poden verifica-los arquivos da entrada/saída estándar"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Non se poden actualiza-los arquivos comprimidos"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "No comezo da cinta, saíndo agora"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Demasiados erros, saíndo"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Tamaño do rexistro = %lu bloques"
 msgstr[1] "Tamaño do rexistro = %lu bloques"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, fuzzy, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Bloque desaliñado (%lu bytes) no arquivo"
 msgstr[1] "Bloque desaliñado (%lu bytes) no arquivo"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Non se pode recuar no arquivo; pode ser ilexible sen -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: contén un número de volume non válido"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Desbordamento no número de volume"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Prepare o volume #%d para %s e prema enter: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Chegouse á fin de ficheiro onde se esperaba unha resposta do usuario"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "AVISO: O arquivo está incompleto"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -711,71 +718,71 @@ msgstr ""
 " !          Executar outro intérprete de comandos\n"
 " ?          Amosar esta lista\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Non hai novos volumes; saíndo.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "O comando \"%s\" fallou"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s non continúa neste volume"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s non continúa neste volume"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s ten un tamaño incorrecto (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Este volume está fora da secuencia"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "O arquivo non está etiquetado para coincidir con %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "O volume %s non coincide con %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "A fin do ficheiro (EOF) do arquivo %s non se atopa no límite do bloque"
@@ -787,20 +794,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "So se puido ler %lu de %lu bytes"
 msgstr[1] "So se puido ler %lu de %lu bytes"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "O contido é diferente"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Fin de ficheiro inesperado no arquivo"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "O tipo de ficheiro é diferente"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "O modo é diferente"
 
@@ -816,145 +823,145 @@ msgstr "Os gid son diferentes"
 msgid "Mod time differs"
 msgstr "A data de modificación é diferente"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "O tamaño é diferente"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Non ligado a %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "A ligazón simbólica é diferente"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "O número de dispositivo é diferente"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verificar "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s: Tipo de ficheiro \"%c\" descoñecido; trátase coma un ficheiro normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "FALLO NA VERIFICACION: detectáronse %d cabeceiras non válidas"
 msgstr[1] "FALLO NA VERIFICACION: detectáronse %d cabeceiras non válidas"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "valor %s fóra do rango de %s %s..%s; substituíndo %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "valor %s fóra do rango de %s %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Xerando cabeceiras octais negativas"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: ficheiro sen cambios; non se envorca"
 
-#: src/create.c:634
+#: src/create.c:621
 #, fuzzy, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: ficheiro sen cambios; non se envorca"
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: ficheiro sen cambios; non se envorca"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: O ficheiro encolleu %s bytes; enchendo con ceros"
 msgstr[1] "%s: O ficheiro encolleu %s bytes; enchendo con ceros"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: o ficheiro está nun sistema de ficheiros diferente; non se envorca"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 #, fuzzy
 msgid "contents not dumped"
 msgstr " (memoria volcada)"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tipo de ficheiro descoñecido; ignórase este ficheiro"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " ligazón a %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: ficheiro sen cambios; non se envorca"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: o ficheiro é o arquivo; non se envorca"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: o ficheiro cambiou mentres se lía"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: ignórase o socket"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: ignórase a porta"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Pasando á seguinte cabeceira"
 
@@ -962,76 +969,76 @@ msgstr "Pasando 
 msgid "Deleting non-header from archive"
 msgstr "Borrando o que non sexan cabeceiras do arquivo"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: a marca de tempo %s está %lu segundos no futuro"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Inconsistencia inesperada ao crea-lo directorio"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Renomeouse o directorio antes de poder estrae-lo seu estado"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extraendo os ficheiros contiguos coma ficheiros normais"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Tentando extrae-las ligazóns simbólicas coma ligazóns duras"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Non se pode extraer -- o ficheiro é continuación doutro volume"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Fin de ficheiro (EOF) inesperado no arquivo"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr ""
 "%s: Tipo de ficheiro \"%c\" descoñecido, extraéndoo coma ficheiro normal"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Non se puido copiar este ficheiro"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Non se pode renomear a %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Renomeouse o directorio"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Renomeouse o directorio"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: O directorio é novo"
@@ -1145,36 +1152,36 @@ msgstr "%s: Borrando %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Non se pode eliminar"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Omitíndoo"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloque %s: ** Bloque de nulos **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloque %s: ** Fin de Ficheiro **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "bloque %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 "Atopáronse espacios na cabeceira onde se esperaba un valor númerico de %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1182,138 +1189,140 @@ msgstr ""
 "a 2"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "O valor octal do arquivo %.*s está fóra do rango de %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "O arquivo contén cabeceiras base-64 obsoletas"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "A cadea base-64 asinada do arquivo %s está fóra do rango de %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "O valor base-256 do arquivo está fóra do rango de %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "O arquivo contén %.*s onde se esperaba un valor numérico de %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "O valor do arquivo %s está fóra do rango de %s %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " ligazón a %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " Tipo de ficheiro %s descoñecido\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Cabeceira de Volume--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Continúa no byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Creando o directorio:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Non se pode cambia-lo directorio de traballo"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Renomeando %s a %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Non se pode renomear a %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Renomeando %s a %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Non se pode armacena-lo directorio de traballo"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Non se pode cambia-lo directorio de traballo"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Ficheiro eliminado antes da súa lectura"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Ficheiro eliminado antes da súa lectura"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proceso fillo"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "canle interproceso"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Non atopado no arquivo"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Non atopado no arquivo"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "O arquivo non está etiquetado para coincidir con %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1337,7 +1346,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1358,7 +1367,7 @@ msgstr ""
 "                               # dando moitos datos\n"
 "  %s -xf arquivo.tar           # Extraer tódolos ficheiros de arquivo.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1380,80 +1389,80 @@ msgstr ""
 "  nil, existing   numera se existen copias de seguridade numeradas\n"
 "  never, simple   sempre fai copias de seguridade sinxelas\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Fin de ficheiro inesperado no arquivo"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1461,568 +1470,568 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 #, fuzzy
 msgid "remove files after adding them to the archive"
 msgstr "Borrando a especificación de unidade dos nomes do arquivo"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 #, fuzzy
 msgid "extract files to standard output"
 msgstr "Erro ao gravar na saída estándar"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Non se pode verifica-los arquivos multi-volume"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Arquivar da entrada estándar"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Opcións de compresión conflictivas"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "Non se puido escribir no programa de compresión"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "Non se puido escribir no programa de compresión"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Non se pode cambia-lo directorio de traballo"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Eliminadndo o \"%.*s\" inicial dos nomes dos membros"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "O volume %s non coincide con %s"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2030,291 +2039,296 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Proporcionouse na opción un modo non válido"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 #, fuzzy
 msgid "ask for confirmation for every action"
 msgstr "Non se puido le-la confirmación do usuario"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Non pode especificar máis dunha das opcións \"-Acdtrux\""
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Opcións de compresión conflictivas"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " Tipo de ficheiro %s descoñecido\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Non se atopou o ficheiro de data"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Substituíndo o formato de data descoñecido %2$s por %1$s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: o ficheiro é o arquivo; non se envorca"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "%s: o ficheiro é o arquivo; non se envorca"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Factor de bloqueo non válido"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Lonxitude da fita non válida"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Máis dunha data de umbral"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Grupo non válido"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Proporcionouse na opción un modo non válido"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 #, fuzzy
 msgid "Invalid number"
 msgstr "Número de inode non válido"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Propietario non válido"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Tamaño de rexistro non válido"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "O tamaño do rexistro debe ser múltiplo de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 #, fuzzy
 msgid "Invalid number of elements"
 msgstr "Lonxitude da fita non válida"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, fuzzy, c-format
 msgid "Unknown density: `%c'"
 msgstr "Patrón descoñecido `%s'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Opcións `-[0-7][lmh]' non soportadas por *este* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "A antiga opción \"%c\" precisa dun argumento."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Varios ficheiros de arquivo requiren a opción \"-M\""
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Non se pode combinar --listed-incremental con --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, fuzzy, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: A etiqueta do volume é longa de máis (o límite é %lu bytes)"
 msgstr[1] "%s: A etiqueta do volume é longa de máis (o límite é %lu bytes)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Non se pode verifica-los arquivos multi-volume"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Non se poden verifica-los arquivos comprimidos"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Non se poden empregar arquivos comprimidos multi-volume"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Non se poden actualiza-los arquivos comprimidos"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "De xeito cobarde rexéitase crear un ficheiro baleiro"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "As opcións \"-Aru\" son incompatibles con \"-f -\""
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Debe especificar unha das opcións \"-Acdtrux\""
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2326,84 +2340,84 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: O ficheiro encolleu %s bytes"
 msgstr[1] "%s: O ficheiro encolleu %s bytes"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Marca de tempo fóra de rango"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "A cadea base-64 asinada do arquivo %s está fóra do rango de %s"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "O valor do arquivo %s está fóra do rango de %s %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2444,248 +2458,259 @@ msgstr "Punto de control de escritura %d"
 msgid "Read checkpoint %u"
 msgstr "Punto de control de lectura %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Xera-los ficheiros de datos para a suite de probas de GNU tar.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Opcións de compresión conflictivas"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "Erro ao gravar na saída estándar"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Emprego: %s [OPCIÓN]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 #, fuzzy
 msgid "Update the access and modification times of FILE"
 msgstr "%s: Non se puido cambia-la hora de acceso e modificación"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Marca de tempo non válida"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Número de inode fóra de rango"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Erro do sistema descoñecido"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, fuzzy, c-format
 msgid "cannot open `%s'"
 msgstr "Non se puido abrir %s"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Non se pode pechar"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr "Patrón descoñecido `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "Non se puido evalua-lo ficheiro %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "Non se puido abrir %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "O fillo morreu co sinal %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Nomes de ficheiro alterados--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Non se pode armacena-lo directorio de traballo"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Non se pode renomear a %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: opción non admitida -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Lendo %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "\n"
@@ -2695,12 +2720,6 @@ msgstr "--Nomes de ficheiro alterados--\n"
 #~ "Informe dos erros no programa a <bug-tar@gnu.org>.\n"
 #~ "Informe dos erros na traducción a <proxecto@trasno.net>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Lendo %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "O erro non é recuperable: sáese agora"
-
 #, fuzzy
 #~ msgid "filter the archive through compress"
 #~ msgstr "%s: o ficheiro é o arquivo; non se envorca"
@@ -2743,6 +2762,9 @@ msgstr "--Nomes de ficheiro alterados--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Fin de ficheiro prematura"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "O erro non é recuperable: sáese agora"
+
 #~ msgid "block size"
 #~ msgstr "tamaño de bloque"
 
index 05afdbc28c9819229c97688e595747bdf531afaf..779da718e0ef459b341f5d1904bad2d75a25b6c7 100644 (file)
Binary files a/po/hr.gmo and b/po/hr.gmo differ
index 78dac0856ca3b273158c4f8f25c853c89234e492..5281adfc366162eae89972cd768763c6cf1149a0 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
@@ -4,14 +4,16 @@
 #     ... wishes to thank everybody who helped in good faith.
 #
 # Well, in 03:12 hrs (for 1st pass)!! who beats me I owe him a pizza ;-) -- TM
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.13.25\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2002-04-26 10:49+MET(DST)(UTC+2)\n"
 "Last-Translator: Mirsad Todorovac <mtodorov_69@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"Language: hr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -89,7 +91,7 @@ msgstr ""
 "\n"
 "Prijavi gre¹ke i bugove na <bug-tar@gnu.org>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Nepoznata pogre¹ka u sistemu"
 
@@ -101,8 +103,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -140,56 +142,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: opcija `%s' nije jednoznaèna\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: opcija `--%s' ne dozvoljava argument\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: opcija `%c%s' ne dozvoljava argument\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: za opciju `%s' neophodan je argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: ne prepoznajem opciju `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: ne prepoznajem opciju `%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: pogre¹na opcija -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: opcija zahtijeva neophodan argument -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: opcija `-W %s' nije jednoznaèna\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: opcija `-W %s' ne dozvoljava argument\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: za opciju `%s' neophodan je argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "iscrpljena memorija"
@@ -520,193 +527,193 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Ne mogu pokrenuti udaljenu (remote) ljusku"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Seek smjer izvan opsega"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Pogre¹an mod dan opcijom"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Pogre¹na oznaka vremena"
 
 # FIXME -- find xlation for 'seek offset' -- TM
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Seek ofset izvan opsega"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Pogre¹na duljina trake"
 
 # FIXME -- find xlation for 'seek offset' -- TM
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Seek ofset izvan opsega"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Prerani eof\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "%s: pogre¹na opcija -- %c\n"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Neoèekivani EOF u arhivi"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Neuspjeli seek na %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Neispravna naredba"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Ovo ne izgleda kao tar arhiva"
 
 # FIXME -- ovo neæe raditi ako je prevedeno -- Denis?
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Ukupno ispisano bajtova: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
 # FIXME -- ovo neæe raditi ako je prevedeno -- Denis?
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Ukupno ispisano bajtova: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(cjevovod - pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Pogre¹na vrijednost za record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Nije dano ime arhive"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Ne mogu verificirati stdin/stdout arhive"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Ne mogu a¾urirati komprimirane arhive"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Poèetak trake, zavr¹avam"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Previ¹e pogre¹aka, zavr¹avam"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Velièina sloga = %lu blokova"
 msgstr[1] "Velièina sloga = %lu blokova"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, fuzzy, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Neporavnat (unaligned) blok (%lu bajtova) unutar arhive"
 msgstr[1] "Neporavnat (unaligned) blok (%lu bajtova) unutar arhive"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Ne mogu se pomicati unazad unutar arhive; mo¾e biti neèitljiva bez -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: sadr¾i pogre¹an broj dijela arhive"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Prekoraèenje u broju dijela arhive"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Pripremite dio arhive #%d za %s i pritisni <RETURN>:"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Naðen EOF gdje sam oèekivao odgovor korisnika"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "UPOZORENJE: Arhiva nije kompletirana"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -718,72 +725,72 @@ msgstr ""
 " !          Pokreni podljusku operativnog sistema\n"
 " ?          Ispi¹i ovu listu\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Nema novog dijela arhive; zavr¹avam.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "Neuspjela `%s' naredba"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s nije nastavljen za ovom dijelu arhive"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s nije nastavljen za ovom dijelu arhive"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s je pogre¹ne velièine (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Ovaj dio arhive je izvan slijeda"
 
 # FIXME -- clean against source! (TM)
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arhiva nije oznaèena labelom da odgovara %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Dio arhive %s ne odgovara %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -794,20 +801,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Uspio proèitati samo %lu od %lu bajtova"
 msgstr[1] "Uspio proèitati samo %lu od %lu bajtova"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Sadr¾aji se razlikuju"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Neoèekivani EOF u arhivi"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Tipovi datoteka se razlikuju"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Mod se razlikuje"
 
@@ -823,145 +830,145 @@ msgstr "Gid se razlikuje"
 msgid "Mod time differs"
 msgstr "Mod time (vrijeme modifikacije) se razlikuje"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Velièina se razlikuje"
 
 # FIXME -- language purists might lynch me for this "polinkan" -- TM
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Nije polinkan na %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Simbolièki link se razlikuje"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Broj ureðaja (device number) se razlikuje"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verificiraj "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Nepoznat tip datoteke '%c', diff-iran kao normalna datoteka"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "NEUSPJELA VERIFIKACIJA: detektirano %d pogre¹nih zaglavlja"
 msgstr[1] "NEUSPJELA VERIFIKACIJA: detektirano %d pogre¹nih zaglavlja"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "vrijednost %s izvan %s raspona %s..%s; substituiram %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "vrijednost %s izvan %s raspona %s..%s"
 
 # FIXME -- find `pade¾' here from source
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Generiram negativna oktalna zaglavlja"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: datoteka nepromijenjena; ne arhiviram ju"
 
-#: src/create.c:634
+#: src/create.c:621
 #, fuzzy, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: datoteka nepromijenjena; ne arhiviram ju"
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: datoteka nepromijenjena; ne arhiviram ju"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Datoteka se skratila za %s bajtova; nadopunjujemo nulama"
 msgstr[1] "%s: Datoteka se skratila za %s bajtova; nadopunjujemo nulama"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: datoteka je na drugom datoteènom sustavu; ne arhiviram ju"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Nepoznat tip datoteke; datoteka ignorirana"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " link do %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: datoteka nepromijenjena; ne arhiviram ju"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: datoteka je arhiva; ne arhiviram ju"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: datoteka se promijenila dok smo ju èitali"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socket ignoriran"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door ignoriran"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Preskaèem do slijedeæeg zaglavlja"
 
@@ -970,77 +977,77 @@ msgstr "Preska
 msgid "Deleting non-header from archive"
 msgstr "Bri¹em neispravno zaglavlje iz arhive"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: oznaka vremena %s je %lu sekundi u buduænost"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Neoèekivana nekonzistentnost kod otvaranja direktorija"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Direktoriju promijenjeno ime prije nego ¹to mu je dobavljen status"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Ekstrahiram neprekinute datoteke kao regularne datoteke"
 
 # FIXME -- 'hard links' -- TM
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Poku¹avam ekstrakciju simbolièkih linkova kao hard linkova"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr ""
 "%s: Ne mogu ekstrahirati -- datoteka se nastavlja iz drugog dijela arhive"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Neoèekivan EOF u mangliranim imenima"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Nepoznat tip datoteke '%c', ekstrahiran kao normalna datoteka"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Nisam uspio napraviti backup ove datoteke"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Ne mogu preimenovati u %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Direktoriju promijenjeno ime"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Direktoriju promijenjeno ime"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Novi direktorij"
@@ -1153,35 +1160,35 @@ msgstr "%s: Bri
 msgid "%s: Cannot remove"
 msgstr "%s: Ne mogu obrisati"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Izostavljam"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok ispunjen NULama **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Kraj datoteke **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Razmaci u zaglavlju gdje se oèekuje numerièka %s vrijednost"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1189,141 +1196,144 @@ msgstr ""
 "komplement"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Oktalna vrijednost iz arhive %.*s je izvan %s opsega"
 
 # FIXME -- obsolescent -- TM
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arhiva sadr¾i base-64 zaglavlja zastarjelog formata"
 
 # FIXME??
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Base-64 vrijednost s predznakom %s iz arhive je izvan %s opsega"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Base-256 vrijednost iz arhive je izvan %s opsega"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arhiva sadr¾i %.*s gdje je oèekivana numerièka %s vrijednost"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Vrijednost %s iz arhive je izvan %s opsega %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " link do %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " nepoznat tip datoteke %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Zaglavlje dijela arhive--\n"
 
 # FIXME -- clarify against source -- TM
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Nastavljeno s bajtom %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Kreiram direktorij:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Ne mogu promijeniti radni direktorij"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Preimenujem %s u %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Ne mogu preimenovati u %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Preimenujem %s natrag u %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Ne mogu pohraniti radni direktorij"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Ne mogu promijeniti radni direktorij"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Datoteka uklonjena (removed) prije nego ¹to smo ju proèitali"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Datoteka uklonjena (removed) prije nego ¹to smo ju proèitali"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "podproces"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "meðuprocesni kanal"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Nije naðeno u arhivi"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Nije naðeno u arhivi"
 
-#: src/names.c:894
+# FIXME -- clean against source! (TM)
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arhiva nije oznaèena labelom da odgovara %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1347,7 +1357,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1367,7 +1377,7 @@ msgstr ""
 "op¹irno.\n"
 "  %s -xf arhiva.tar           # Ekstrahiraj sve datoteke iz arhiva.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1388,80 +1398,80 @@ msgstr ""
 "  nil, existing   pobrojani ako pobrojani veæ postoje, inaèe jednostavni\n"
 "  never, simple   uvijek radi jednostavne backupe\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Neoèekivani EOF u arhivi"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1469,566 +1479,566 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr ""
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 #, fuzzy
 msgid "extract files to standard output"
 msgstr "Pogre¹ka u pisanju na standardni izlaz"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
 # FIXME -- volume -- find more suitable (ask others) -- TM
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Ne mogu verificirati vi¹edjelne arhive"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Konfliktne opcije formata arhive"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Konfliktne opcije za kompresiju"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Ne mogu promijeniti radni direktorij"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Uklanjam vodeæe `%.*s' iz imena èlanova"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "Dio arhive %s ne odgovara %s"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2036,242 +2046,247 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Pogre¹an mod dan opcijom"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr ""
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Ne mo¾ete navesti vi¹e od jedne od `-Acdtrux' opcija"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Konfliktne opcije za kompresiju"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " nepoznat tip datoteke %s\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Datoteka s datumom nije pronaðena"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Substituiram %s za nepoznat format datuma %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: datoteka je arhiva; ne arhiviram ju"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "%s: datoteka je arhiva; ne arhiviram ju"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
 # FIXME -- clarify this against source and man -- TM
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Pogre¹an faktor pakiranja u blokove"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Pogre¹na duljina trake"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Vi¹e od jednog datuma s pragom (threshold)"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Pogre¹na grupa"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Pogre¹an mod dan opcijom"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 #, fuzzy
 msgid "Invalid number"
 msgstr "Pogre¹an inode broj"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Pogre¹an vlasnik"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Pogre¹na velièina sloga (record)"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Velièina sloga (record) mora biti vi¹ekratnik %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 #, fuzzy
 msgid "Invalid number of elements"
 msgstr "Pogre¹na duljina trake"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr ""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Opcije `-[0-7][lmh]' nisu podr¾ane od strane *ovog* tar-a"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Stara opcija `%c' zahtijeva obavezan argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Vi¹edjelne arhive zahtijevaju `-M' opciju"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Ne mogu kombinirati --listed-incremental s --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, fuzzy, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2279,50 +2294,50 @@ msgstr[0] "%s: Oznaka dijela arhive je preduga
 msgstr[1] "%s: Oznaka dijela arhive je predugaèka (limit je %lu bajtova)"
 
 # FIXME -- volume -- find more suitable (ask others) -- TM
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Ne mogu verificirati vi¹edjelne arhive"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Ne mogu verificirati komprimirane arhive"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Ne mogu koristiti vi¹edjelne komprimirane arhive"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Ne mogu a¾urirati komprimirane arhive"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
 # LOL -- TM
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Kukavièki odbijam kreirati praznu arhivu!"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Opcije `-Aru' nisu kompatibilne s `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Morate specificirati jednu od `-Acdtrux' opcija"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2334,85 +2349,85 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Datoteka se skratila za %s bajtova"
 msgstr[1] "%s: Datoteka se skratila za %s bajtova"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Oznaka vremena izvan opsega"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
 # FIXME??
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Base-64 vrijednost s predznakom %s iz arhive je izvan %s opsega"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Vrijednost %s iz arhive je izvan %s opsega %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2453,248 +2468,259 @@ msgstr "To
 msgid "Read checkpoint %u"
 msgstr "Toèka provjere èitanja %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Generiraj podatkovne datoteke za GNU tar skup test programa.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Konfliktne opcije za kompresiju"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "Pogre¹ka u pisanju na standardni izlaz"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Kori¹tenje: %s [OPCIJA]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Pogre¹na oznaka vremena"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Inode broj izvan opsega"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Nepoznata pogre¹ka u sistemu"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Ne mogu zatvoriti"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " nepoznat tip datoteke %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Neuspjeli seek na %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Neuspjeli seek na %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "Potproces zavr¹io uz signal %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
 # FIXME -- 'mangled filenames'???
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Manglirana imena datoteka--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Ne mogu pohraniti radni direktorij"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Ne mogu preimenovati u %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: ilegalna opcija -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Èitam %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "\n"
@@ -2703,12 +2729,6 @@ msgstr "--Manglirana imena datoteka--\n"
 #~ "\n"
 #~ "Prijavi gre¹ke i bugove na <bug-tar@gnu.org>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Èitam %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Gre¹ka iz koje se ne mogu oporaviti: zavr¹avam s radom"
-
 #, fuzzy
 #~ msgid "filter the archive through compress"
 #~ msgstr "%s: datoteka je arhiva; ne arhiviram ju"
@@ -2752,6 +2772,9 @@ msgstr "--Manglirana imena datoteka--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Prerani kraj datoteke"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Gre¹ka iz koje se ne mogu oporaviti: zavr¹avam s radom"
+
 #~ msgid "block size"
 #~ msgstr "velièina bloka"
 
index 1640973853d0b1c7014a5c173a97f27d6197337a..9618a295b2fd5d18ffff7077ed4ed89716c0c119 100644 (file)
Binary files a/po/hu.gmo and b/po/hu.gmo differ
index 76fadda15a47926869e45a8469c74f29c447089d..9a5eaff005c9a5be21f36e0dbb0764efad094a89 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -4,14 +4,16 @@
 #
 # Gábor István <stive@mezobereny.hu>, 2002.
 # Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2007, 2008, 2009, 2010.
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-23 20:01+0100\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-03-10 16:57+0100\n"
 "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"Language: hu\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -90,7 +92,7 @@ msgstr ""
 msgid "Report bugs to %s.\n"
 msgstr "A hibák a(z) %s címen jelenthetők.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Ismeretlen rendszerhiba"
 
@@ -102,8 +104,8 @@ msgstr "ezen súgószöveg megjelenítése"
 msgid "give a short usage message"
 msgstr "rövid használati utasítás megjelenítése"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NÉV"
 
@@ -141,56 +143,61 @@ msgstr "(PROGRAMHIBA) A kapcsolót fel kellett volna ismerni???"
 msgid "write error"
 msgstr "íráshiba"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: a(z) „%s” kapcsoló nem egyértelmű\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: a(z) „--%s” kapcsoló nem enged meg argumentumot\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: a(z) „%c%s” kapcsoló nem enged meg argumentumot\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, c-format
-msgid "%s: option '%s' requires an argument\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, fuzzy, c-format
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: a(z) „%s” kapcsolóhoz argumentum szükséges\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: a(z) „--%s” kapcsoló ismeretlen\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: a(z) „%c%s” kapcsoló ismeretlen\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: érvénytelen kapcsoló -- „%c”\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: a kapcsoló egy argumentumot igényel -- „%c”\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: a „-W %s” kapcsoló nem egyértelmű\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: a „-W %s” kapcsoló nem enged meg argumentumot\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: a(z) „%s” kapcsolóhoz argumentum szükséges\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "elfogyott a memória"
@@ -536,191 +543,191 @@ msgstr "szabványos kimenet"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Nem lehet csatlakozni ehhez: %s: a feloldás meghiúsult"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Nem futtatható távoli parancssor"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "A keresési irány kívül esik a tartományon"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Érvénytelen pozicionálási irány"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Érvénytelen pozicionálási eltolás"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "A keresési eltolás kívül esik a tartományon"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Érvénytelen bájtszám"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "A bájtszám kívül esik a tartományon"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "Idő előtti fájlvége"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Érvénytelen működési kód"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "A művelet nem támogatott"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Váratlan paraméterek"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 "Szalagos meghajtó manipulálása, parancsok elfogadása távoli folyamattól"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "SZÁM"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "hibakeresési szint beállítása"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FÁJL"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "hibakeresés kimeneti fájlnevének beállítása"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "a(z) %s nem nyitható meg"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "túl sok argumentum"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Értelmetlen parancs"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Ez nem úgy néz ki, mint egy tar archívum"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Kiírt bájtok teljes száma"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Olvasott bájtok teljes száma"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Törölt bájtok teljes száma: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(cső)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "A record_size értéke érvénytelen"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Nem adott meg archívumnevet"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Nem ellenőrizhető az archívum, ha a szabványos be/kimenetet használja"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Az archívum tömörített. Használja a(z) %s kapcsolót."
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Tömörített archívumok nem frissíthetők"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "A szalag eleje, most kilépek"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Túl sok hiba, kilépek"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Rekordméret = %lu blokk"
 msgstr[1] "Rekordméret = %lu blokk"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Kitöltetlen blokk (%lu bájt) az archívumban"
 msgstr[1] "Kitöltetlen blokk (%lu bájt) az archívumban"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Nem törölhető vissza az archív fájl, lehet hogy olvashatatlan lesz a -i "
 "nélkül"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "az rmtlseek nem állt meg egy rekord határán"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: érvénytelen kötetszámot tartalmaz"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Kötetszám-túlcsordulás"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Készítse elő a(z) %d kötetet %s számára és üssön entert:"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Fájlvége a várt felhasználói válasz helyett"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "FIGYELMEZTETÉS: Az archívum befejezetlen"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -731,67 +738,67 @@ msgstr ""
 " q          A Tar megszakítása\n"
 " y vagy újsor  A művelet folytatása\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !          Új parancsértelmező hívása\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?          Ezen lista kiírása\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Nincs új kötet, kilépés.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Nincs megadva fájlnév, próbálkozzon újra.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Érvénytelen bemenet. A súgó a ? beírásával kérhető le.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "A(z) „%s” parancs meghiúsult"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s lehetséges, hogy ezen a köteten folytatódott: a fejléc csonkolt nevet "
 "tartalmaz"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s nem folytatódik ezen a köteten"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s mérete hibás (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Ez a kötet kívül esik a sorozaton (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Az archívum nincs úgy címkézve, hogy megfeleljen a következőhöz: %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "A(z) %s kötet nem felel meg a következőnek: %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -799,7 +806,7 @@ msgstr ""
 "%s: a fájlnév túl hosszú egy GNU többkötetes fejlécben való tároláshoz, "
 "csonkításra került"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "az írás nem egy rekord határán fejeződött be"
 
@@ -810,20 +817,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Csak %lu bájt olvasható %lu bájtból"
 msgstr[1] "Csak %lu bájt olvasható %lu bájtból"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "A tartalom eltér"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Váratlan fájlvége jel az archívumban"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "A fájltípus eltér"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "A mód eltér"
 
@@ -839,147 +846,147 @@ msgstr "A Gid eltér"
 msgid "Mod time differs"
 msgstr "A módosítási idő eltér"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "A méret eltér"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Nincs a következőre linkelve: %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "A szimbolikus link eltér"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Az eszközszám eltér"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Ellenőrzés "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s: A(z) „%c” fájltípus ismeretlen, a diffelés normális fájlként történt"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Az archívum eltávolított előtagokkal rendelkező fájlneveket tartalmaz."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 "Lehetséges, hogy az ellenőrzés nem fogja megtalálni az eredeti fájlokat."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "AZ ELLENŐRZÉS SIKERTELEN: %d érvénytelen fejléc található"
 msgstr[1] "AZ ELLENŐRZÉS SIKERTELEN: %d érvénytelen fejléc található"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Egy magányos nulla blokk %s helyen"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: fájl gyorsítótár-könyvtár címkét tartalmaz (%s); %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 "a(z) %s érték a(z) %s %s...%s tartományán kívül esik, helyettesítve a "
 "következővel: %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "a(z) %s érték a(z) %s %s...%s tartományán kívül esik"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Negatív oktális fejlécek előállítása"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: a fájlnév túl hosszú (maximum: %d), nem kerül kiírásra"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: a fájlnév túl hosszú (nem darabolható), nem kerül kiírásra"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: a fájlnév túl hosszú, nem kerül kiírásra"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: a fájl zsugorítva %s bájtra, nullákkal kerül kitöltésre"
 msgstr[1] "%s: a fájl zsugorítva %s bájtra, nullákkal kerül kitöltésre"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: a fájl eltérő fájlrendszeren van, nem kerül kiírásra"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "a tartalom nem került kiírásra"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Ismeretlen fájltípus, fájl a figyelmen kívül hagyva"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "Hiányzó linkek a következőre: „%s”."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: a fájl változatlan, nem kerül kiírásra"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: a fájl az archívumban van, nem kerül kiírásra"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "a könyvtár nem került kiírásra"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: a fájl módosult olvasás közben"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: a foglalat figyelmen kívül hagyva"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: ajtó figyelmen kívül hagyva"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Ugrás a következő fejlécre"
 
@@ -987,74 +994,74 @@ msgstr "Ugrás a következő fejlécre"
 msgid "Deleting non-header from archive"
 msgstr "A nem fejlécek törlése az archívumból"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: valószínűtlenül régi időbélyeg: %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: a(z) %s időbélyeg %s másodperccel a jövőbe mutat"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Váratlan inkonzisztencia a könyvtár létrehozása során"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: a könyvtár átnevezésre került az állapotának kinyerése előtt"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "A folytonos fájlok kibontása normál fájlként"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Kísérlet a szimbolikus linkek kibontására közvetlen linkként"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: nem lehet kibontani -- a fájl egy másik köteten folytatódik"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Váratlan hosszú névfejléc"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Ismeretlen fájltípus: „%c”, normál fájlként lesz kibontva"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "A jelenlegi „%s” újabb vagy egyező korú"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Nem sikerült biztonsági mentést készíteni erről a fájlról"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Nem nevezhető át a következőre: %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: A könyvtár át lett nevezve a következőről: %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: a könyvtár át lett nevezve"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: a könyvtár új"
@@ -1169,36 +1176,36 @@ msgstr "%s: %s törlése\n"
 msgid "%s: Cannot remove"
 msgstr "%s: nem távolítható el"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: kihagyás"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blokk %s: ** A blokk üres **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blokk %s: ** Fájlvége **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blokk %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 "Üres értékek a fejléc azon részében, ahol a program a(z) %s számértéket várta"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1206,145 +1213,145 @@ msgstr ""
 "feltételezi, hogy kettes komplemens"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Az archívum %.*s oktális értéke túllépi a(z) %s tartományt"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Az archívum elavulófélben levő base-64-es fejléceket tartalmaz"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 "Az archívum előjeles base-64 karakterlánca (%s) túllépi a(z) %s tartományt"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Az archívum base-256-os értéke túllépi a(z) %s tartományt"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Az archívum %.*s értéket tartalmaz, ahol a program %s számértéket vár"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Az archívum %s értéke túllépi a(z) %s %s..%s tartományát"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " link a következőre: %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " ismeretlen fájltípus: %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Hosszú link--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Hosszú név--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Kötetfejléc--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Folytatva %s bájttól--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Könyvtár létrehozása:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "A munkakönyvtár nem módosítható"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s átnevezése a következőre: %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Nem nevezhető át a következőre: %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s helyreállítása a következő névre: %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "A munkakönyvtár nem menthető"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "A munkakönyvtár nem módosítható"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: a fájl el lett távolítva a beolvasás előtt"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: a könyvtár el lett távolítva a beolvasás előtt"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "gyermekfolyamat"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "folyamatközi csatorna"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Mintaillesztő karaktereket használt a fájlnevekben"
+msgstr "Mintaillesztő karaktereket használt a fájlnevekben"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
-"Használja a --wildcards kapcsolót a mintaillesztés engedélyezéséhez vagy a --"
-"no-wildcards kapcsolót "
+"Használja a --wildcards kapcsolót a mintaillesztés engedélyezéséhez, vagy a "
+"--no-wildcards kapcsolót ezen figyelmeztetés letiltásához"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Nem található az archívumban"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: A szükséges előfordulás nem található az archívumban"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Az archívum nincs úgy címkézve, hogy megfeleljen a következőhöz: %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "A -C használata fájllistán belül nem engedélyezett a --listed-incremental "
 "kapcsolóval"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Csak egy -C engedélyezett a --listed-incremental kapcsolóval"
 
@@ -1371,7 +1378,7 @@ msgstr ""
 "A(z) „%s” idézési stílus ismeretlen. Próbálja a „%s --quoting-style=help” "
 "parancsot segítségért."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1392,7 +1399,7 @@ msgstr ""
 "  tar -xf archívum.tar         # Kibontja az összes fájlt az archívum.tar\n"
 "                                   fájlból.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1414,81 +1421,81 @@ msgstr ""
 "                  egyébként egyszerű\n"
 "  never, simple   mindig egyszerű mentés létrehozása\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Fő működési mód:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "felsorolja egy archívum tartalmát"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "fájlok kibontása egy archívumból"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "új archívum létrehozása"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "különbségek keresése az archívum és a fájlrendszer között"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "fájlok hozzáfűzése egy archívum végéhez"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "csak az archívumban lévő másolatnál újabb fájlok hozzáfűzése"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "tar fájlok hozzáfűzése egy archívumhoz"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "törlés az archívumból (szalagon nem működik!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "az archívum kötetcímkéjének tesztelése és kilépés"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Műveletmódosítók:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "ritka fájlok hatékony kezelése"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAGAS[.ALACSONY]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "a használandó ritka formátum verziójának beállítása (magával vonja\n"
 " a --sparse kapcsolót)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "régi GNU formátumú növekményes mentés kezelése"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "új GNU formátumú növekményes mentés kezelése"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "kiíratási szint a létrehozott listázott növekményes archívumhoz"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "ne lépjen ki nem nulla értékkel ha a fájl olvashatatlan"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1501,122 +1508,122 @@ msgstr ""
 "átadásra a parancssoron vagy a -T kapcsolón keresztül. A SZÁM "
 "alapértelmezett értéke az 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "az archívum kereshető"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "az archívumban nem lehet pozicionálni"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "ne ellenőrizze az eszközszámokat növekményes archívumok létrehozásakor"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "eszközszámok ellenőrzése növekményes archívumok létrehozásakor "
 "(alapértelmezett)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Felülírás felügyelete:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "kísérlet az archívum ellenőrzésére annak kiírása után"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "fájlok eltávolítása azok archívumhoz adása után"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "ne cserélje a meglévő fájlokat kibontáskor"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "ne cserélje az archív változatuknál újabb meglévő fájlokat"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "meglévő fájlok felülírása kibontáskor"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "minden egyes fájl eltávolítása a rá történő kibontás előtt"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "hierarchiák kiürítése könyvtár kibontása előtt"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "meglévő könyvtárak metaadatainak megőrzése"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "meglévő könyvtárak metaadatainak felülírása kibontáskor (alapértelmezett)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Kimeneti adatfolyam kiválasztása:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "fájlok kibontása a szabványos kimenetre"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "PARANCS"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "kibontott fájlok továbbítása másik program számára"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "utódok kilépési kódjainak figyelmen kívül hagyása"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "az utódok nem nulla kilépési kódjainak kezelése hibaként"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Fájlattribútumok kezelése:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "a NÉV kényszerítése a hozzáadott fájlok tulajdonosaként"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "a NÉV kényszerítése a hozzáadott fájlok csoportjaként"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DÁTUM-VAGY-FÁJL"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "a DÁTUM-VAGY-FÁJL dátumnál újabb fájlok mtime értékének beállítása"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "MÓDOSÍTÁSOK"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "a (szimbolikus) mód módosítások kényszerítése a hozzáadott fájlokra"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "MÓDSZER"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1626,11 +1633,11 @@ msgstr ""
 "olvasás után történő visszaállításával (MÓDSZER='replace'; alapértelmezett) "
 "vagy az időpontok be nem állításával az első helyen (MÓDSZER='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "ne bontsa ki a fájl módosításának időpontját"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1638,22 +1645,22 @@ msgstr ""
 "próbálja az archívumban létezővel azonos tulajdonossal kibontani a fájlokat "
 "(alapértelmezett a rendszergazdának)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 "fájlok kibontása a saját nevében (alapértelmezett normál felhasználóknak)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "mindig számok használata a felhasználó- vagy csoportnevekhez"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "a fájl jogosultságaival kapcsolatos információk kibontása (alapértelmezett a "
 "rendszergazda számára)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1661,15 +1668,15 @@ msgstr ""
 "a felhasználó umask értékének alkalmazása a jogosultságok kibontásakor az "
 "archívumból (alapértelmezett az egyszerű felhasználók számára)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "kibontandó nevek rendezése, az archívumnak való megfelelés érdekében"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "azonos, mint a -p és -s egyszerre"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1677,139 +1684,139 @@ msgstr ""
 "kibontott könyvtárak módosítási idői és jogosultságai beállításának "
 "késleltetése a kibontás befejeztéig"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "a --delay-directory-restore kapcsoló hatásának megszüntetése"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Eszköz kiválasztása és váltása:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHÍVUM"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "az ARCHÍVUM archívumfájl vagy -eszköz használata"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "az archívumfájl helyi, még ha tartalmaz is kettőspontot"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "az adott rmt PARANCS használata az rmt helyett"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "a távoli PARANCS használata az rsh helyett"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "meghajtó és sűrűség megadása"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "többkötetes archívum létrehozása/listázása/kibontása"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "szalagváltás a SZÁM x 1024 bájt kiírása után"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "parancsfájl futtatása minden egyes szalag végén (-M esetén)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "a FÁJLBAN található számú kötet használata/frissítése"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Eszközblokkolás:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKK"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "rekordonként BLOKK x 512 bájt"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "SZÁM bájt rekordonként, az 512 többszöröse"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "nullázott blokkok (EOF) mellőzése az archívumban"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "újrablokkolás olvasáskor (4.2BSD csövekhez)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Archívumformátum kiválasztása:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMÁTUM"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "az adott formátumú archívum létrehozása"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "A FORMÁTUM a következők egyike:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "régi V7 tar formátum"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "A tar <= 1.12 által használt GNU formátum"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x formátum"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) formátum"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) formátum"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "azonos a pax formátummal"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "azonos a --format=v7 formátummal"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "azonos a --format=posix formátummal"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "kulcsszó[[:]=érték][,kulcsszó[[:]=érték]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "a pax kulcsszavak irányítása"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "SZÖVEG"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1817,80 +1824,80 @@ msgstr ""
 "archívum létrehozása a SZÖVEG kötetnévvel. Listázáskor vagy kibontáskor "
 "használja a kötetnév keresési mintájaként a SZÖVEGET"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Tömörítési kapcsolók:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "archívum kiterjesztésének használata a tömörítőprogram meghatározására"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 "ne használja az archívum kiterjesztését a tömörítőprogram meghatározására"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "tömörítése a PROG használatával (el kell fogadnia a -d kapcsolót)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Helyi fájlválasztás:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "az adott FÁJL hozzáadása az archívumhoz (hasznos, ha neve kötőjellel "
 "kezdődik)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "KÖNYVTÁR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "váltás a KÖNYVTÁR könyvtárba"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "kibontandó nevek lekérdezése vagy létrehozás a FÁJLBÓL"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "a -T nullal lezárt neveket olvas, letiltja a -C kapcsolót"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "a korábbi --null kapcsoló hatásának letiltása"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "a -T segítségével beolvasott fájlnevek idézettségének megszüntetése "
 "(alapértelmezett)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "ne szüntesse meg a -T segítségével beolvasott fájlnevek idézettségét"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MINTA"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "a MINTAKÉNT megadott fájlok kihagyása"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "a FÁJLBAN megadott minták kihagyása"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1898,96 +1905,96 @@ msgstr ""
 "a CACHEDIR.TAG-et tartalmazó könyvtárak tartalmának kihagyása, a címkefájl "
 "kivételével"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "a CACHEDIR.TAG-et tartalmazó könyvtárak alatt minden kihagyása"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "a CACHEDIR.TAG-et tartalmazó könyvtárak kihagyása"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "a FÁJLT tartalmazó könyvtárak tartalmának kihagyása, a FÁJL kivételével"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "a FÁJLT tartalmazó könyvtárak alatt minden kihagyása"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "a FÁJLT tartalmazó könyvtárak kihagyása"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "verziókezelő-könyvtárak kihagyása"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "mentési és zárolási fájlok kihagyása"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "ne lépjen be automatikusan a könyvtárakba"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "az archívum létrehozásakor maradjon a helyi fájlrendszeren"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "belépés a könyvtárakba rekurzívan (alapértelmezett)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "ne vágja le a kezdő „/” jelet a fájlnevekből"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "szimbolikus linkek követése; az általuk mutatott fájlok archiválása és "
 "kiíratása"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "közvetlen linkek követése; az általuk mutatott fájlok archiválása és "
 "kiíratása"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "TAGNÉV"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "kezdés a TAGNÉV tagnál az archívumban"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "csak a DÁTUM-VAGY-FÁJL dátumnál újabb fájlok tárolása"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DÁTUM"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "dátum és idő összehasonlítása ha csak a dátum módosult"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "FELÜGYELET"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "mentés eltávolítás előtt, a FELÜGYELET verzió kiválasztása"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "KARAKTERLÁNC"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1995,102 +2002,102 @@ msgstr ""
 "mentés eltávolítás előtt, a szokásos utótag („~”, hacsak a "
 "SIMPLE_BACKUP_SUFFIX környezeti változó nem bírálja felül) felülbírálása"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Fájlnév-átalakítások:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "a fájlnevek SZÁM darab kezdő összetevőjének levágása kibontáskor"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "KIFEJEZÉS"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 "A KIFEJEZÉS sed helyettesítőkifejezés használata fájlnevek átalakítására"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Fájlnévillesztés beállításai (érintik mind a kihagyási, mind a felvételi "
 "mintákat):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "kis- és nagybetűk figyelmen kívül hagyása"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "a minták illesztése a fájlnevek elejére"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "a minták illesztése bármely / után (alapértelmezett kihagyáskor)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "kis- és nagybetűkre érzékeny illesztés (alapértelmezett)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "helyettesítő karakterek használata (alapértelmezett kihagyáskor)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "szó szerinti karakterlánc-illesztés"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "a helyettesítő karakterek nem illeszkednek a perjelre"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 "a helyettesítőkarakterek illeszkednek a „/” jelre (alapértelmezett "
 "kihagyáskor)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informatív kimenet:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "feldolgozott fájlok bőbeszédű listázása"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "KULCSSZÓ"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "figyelmeztetés felügyelete"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "előrehaladási üzenetek megjelenítése minden SZÁM. rekordnál (alapértelmezés: "
 "10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "MŰVELET"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "a MŰVELET végrehajtása minden ellenőrzőponton"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "üzenet kiírása, ha nem minden link került kiíratásra"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SZIGNÁL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2102,27 +2109,32 @@ msgstr ""
 "Az engedélyezett szignálok: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 és SIGUSR2; a "
 "SIG előtag nélküli nevek is elfogadottak"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "a fájlmódosítási dátumok kiírása UTC szerint"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "bőbeszédű kimenet küldése a FÁJLBA"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "az archívumon belüli blokkszám megjelenítése minden egyes üzenettel"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "megerősítés kérése minden egyes művelethez"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "a tar alapértelmezéseinek megjelenítése"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2130,31 +2142,31 @@ msgstr ""
 "listázáskor vagy kibontáskor minden egyes, a keresési feltételnek meg nem "
 "felelő könyvtár listázása"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "fájl- vagy archívumnevek megjelenítése átalakítás után"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STÍLUS"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "az idézési stílus beállítása, az érvényes STÍLUS értékeket lásd alább"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "a KARAKTERLÁNCBÓL származó karakterek kiegészítő idézése"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "a KARAKTERLÁNCBÓL származó karakterek idézésének letiltása"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Kompatibilitási kapcsolók:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2162,64 +2174,64 @@ msgstr ""
 "létrehozáskor megegyezik a --old-archive kapcsolóval; kibontáskor a --no-"
 "same-owner kapcsolóval"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Egyéb kapcsolók:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "néhány potenciálisan káros kapcsoló használatának letiltása"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 "A következő kapcsolók közül egynél többet nem használhat: „-Acdtrux” vagy „--"
 "test-label”"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "A tömörítési kapcsolók ütköznek"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Ismeretlen szignálnév: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "A dátummintafájl nem található"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "%s cseréje az ismeretlen %s dátumformátumhoz"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "„%s” kapcsoló: A(z) „%s” dátum kezelése mint %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: a fájllista már be van olvasva"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: a beolvasott fájlnév null karaktert tartalmaz"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "az archívum tömörítése a(z) %s használatával"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "A --quoting-style kapcsoló érvényes paraméterei:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2227,52 +2239,52 @@ msgstr ""
 "\n"
 "*Ezen* tar alapértelmezései:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Érvénytelen blokkolási tényező"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Érvénytelen szalagméret"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Hibás növekményszintérték"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Egynél több küszöbdátum"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Érvénytelen ritka verzió érték"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 "Az --atime-preserve='system' nem támogatott ezen az operációs rendszeren"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "A --checkpoint értéke nem egy egész"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Érvénytelen csoport"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Érvénytelen mód került megadásra a kapcsolóban"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Érvénytelen szám"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Érvénytelen tulajdonos"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2280,117 +2292,117 @@ msgstr ""
 "A --preserve kapcsoló elavult, használja a --preserve-permissions --preserve-"
 "order kapcsolókat helyette"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Érvénytelen rekordméret"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "A rekordméretnek %d többszörösének kell lennie."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Érvénytelen elemszám"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Csak egy --to-command kapcsoló engedélyezett"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Rosszul formázott sűrűségargumentum: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Ismeretlen sűrűség: „%c”"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "A „-[0-7][lmh]” kapcsolókat *ez* a tar NEM támogatja"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FÁJL]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "A régi „%c” kapcsoló paramétert igényel."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "a --occurrence értelmetlen fájllista nélkül"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "a --occurrence nem használható a kért működési módban"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Több archívumfájl esetén szükséges a „-M” kapcsoló"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr ""
 "A --listed-incremental és a --newer kapcsolók nem használhatók egyszerre"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "a --level értelmetlen a --listed-incremental nélkül"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: A kötetcímke túl hosszú (a korlát %lu bájt)"
 msgstr[1] "%s: A kötetcímke túl hosszú (a korlát %lu bájt)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "A többkötetes archívumok nem ellenőrizhetők"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "A tömörített archívumok nem ellenőrizhetők"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Nem használhatók többkötetes tömörített archívumok"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Tömörített archívumok nem fűzhetők össze"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "a --pax kapcsoló csak POSIX archívumokon használható"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "A kötet hossza nem lehet kisebb a rekord méreténél"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "a --preserve-order nem kompatibilis a --listed-incremental kapcsolóval"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Üres archívum létrehozása visszautasítva"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Az „-Aru” kapcsolók összeférhetetlenek a „-f” kapcsolóval"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr ""
 "Meg kell adnia a következő kapcsolók egyikét: „-Acdtrux” vagy „--test-label”"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Kilépés hibaállapottal a korábbi hibák miatt"
@@ -2402,88 +2414,88 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: A fájl zsugorítva %s bájttal"
 msgstr[1] "%s: A fájl zsugorítva %s bájttal"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "A(z) %s kulcsszó ismeretlen vagy még nincs megvalósítva"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Az időbélyeg kívül esik az engedélyezett tartományon"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "A(z) %s minta nem használható"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "A(z) %s minta nem bírálható felül"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Rosszul formázott kiterjesztett fejléc: a hossz hiányzik"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "A kiterjesztett fejléc hossza kívül esik a tartományon"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "A kiterjesztett fejléc %*s hossza kívül esik a tartományon"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 "Rosszul formázott kiterjesztett fejléc: a hossz után hiányzik egy üres hely "
 "karakter"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "A kiterjesztett fejléc hibás: egy egyenlőségjel hiányzik"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Rosszul formázott kiterjesztett fejléc: az újsor hiányzik"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 "A(z) „%s” ismeretlen kiterjesztett fejléc kulcsszó figyelmen kívül marad"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Az előállított kulcsszó/érték pár túl hosszú (kulcsszó: %s, hossz: %s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "A kiterjesztett fejléc %s=%s értéke túllépi a(z) %s..%s tartományát"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Rosszul formázott kiterjesztett fejléc: érvénytelen %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Rosszul formázott kiterjesztett fejléc: többlet %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
-"Rosszul formázott kiterjesztett fejléc: érvénytelen %s: váratlan határoló (%"
-"c)"
+"Rosszul formázott kiterjesztett fejléc: érvénytelen %s: váratlan határoló "
+"(%c)"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2526,7 +2538,7 @@ msgstr "%u. írási ellenőrzőpont"
 msgid "Read checkpoint %u"
 msgstr "%u. olvasási ellenőrzőpont"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2534,72 +2546,72 @@ msgstr ""
 "a genfiles adatfájlokat kezel a GNU paxutils tesztcsomag számára.\n"
 "A KAPCSOLÓK:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Fájllétrehozási kapcsolók:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "MÉRET"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Az adott MÉRETŰ fájl létrehozása"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Írás a NÉV nevű fájlba a szabványos kimenet helyett"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Fájlnevek beolvasása a FÁJLBÓL"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "a -T nullal lezárt neveket olvas"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "A fájl feltöltése az adott MINTÁVAL. A MINTA a 'default' (alapértelmezett) "
 "vagy 'zeros' (nullák) egyike"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Egy blokk mérete ritka fájlhoz"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Ritka fájl előállítása. A parancssor többi része megadja a fájlleképezést."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "ELTOLÁS"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Az adott eltolásra pozicionálás az adatok kiírása előtt"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Fájlstatisztika kapcsolói:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "A stat struktúra tartalmának kiírása minden egyes megadott fájlhoz. Az "
 "alapértelmezett FORMÁTUM: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Szinkron végrehajtási kapcsolók:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "KAPCSOLÓ"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2607,22 +2619,22 @@ msgstr ""
 "Az adott ARGS végrehajtása. Hasznos a --checkpoint és a --cut, --append, --"
 "touch vagy --unlink egyikével"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Az adott művelet (lásd alább) végrehajtása a SZÁM-adik ellenőrzőpont elérése "
 "után"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Dátum beállítása a következő --touch kapcsoló számára"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 "Végrehajtott ellenőrzőpontok és a PARANCS kilépési állapotának megjelenítése"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2630,7 +2642,7 @@ msgstr ""
 "Szinkron végrehajtási tevékenységek. Ezek a --checkpoint kapcsoló által "
 "megadott számú ellenőrzőpont elérésekor kerülnek végrehajtásra."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2638,147 +2650,145 @@ msgstr ""
 "A FÁJL csonkolása az előző --length kapcsoló által megadott méretre (vagy "
 "nullára, ha nincs megadva)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "MÉRET bájt hozzáfűzése a FÁJLHOZ. A MÉRETET az előző --length kapcsoló adja "
 "meg."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "A FÁJL hozzáférési és módosítási idejének frissítése"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "A PARANCS végrehajtása"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "A FÁJL törlése"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Érvénytelen méret: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "A szám kívül esik az engedélyezett tartományon: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Negatív méret: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "a stat(%s) meghiúsult"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "a kért fájlhossz %lu, a tényleges %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "a létrehozott fájl nem ritka"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Hiba a(z) „%s” közelében található szám elemzésekor"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Ismeretlen dátumformátum"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENTUMOK...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "a(z) „%s” nem nyitható meg"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "Nem lehet pozicionálni"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "a fájlnév null karaktert tartalmaz"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "nem állíthatók elő ritka fájlok a szabványos kimeneten, használja a --file "
 "kapcsolót"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "helytelen maszk (a(z) „%s” közelében)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Ismeretlen mező: „%s”"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "nem állítható be az idő a következőn: „%s”"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "a(z) „%s” nem törölhető"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "A parancs sikeresen befejeződött\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "A parancs meghiúsult a következő állapottal: %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "A parancs befejeződött a következő szignállal: %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "A parancs leállítva a következő szignállal: %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "A parancs hibakeresési kimenetet adott vissza\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "A parancs befejeződött\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "a --stat fájlneveket igényel"
 
-#~ msgid "Cannot resolve hostname %s"
-#~ msgstr "Nem oldható fel a gépnév (%s)"
-
-#~ msgid "suppress this warning."
-#~ msgstr "ezen figyelmeztetés elnyomásához."
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "A munkakönyvtár nem menthető"
index df037d0ecb874f5dc274e692ea99dd6eeae13a85..c89b46372a8b557875a241e529e739dd56cc217c 100644 (file)
Binary files a/po/id.gmo and b/po/id.gmo differ
index 0127933a83e1a2ca5094893b95e2c4d8137baf5f..afa425815cdaf29e66af6d25a42067e21790508e 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -4,14 +4,16 @@
 # Tedi Heriyanto <tedi_h@gmx.net>, 1999, 2002.
 # Arif E. Nugroho <arif_endro@yahoo.com>, 2008, 2009, 2010.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-14 07:00+0700\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-14 10:00+0700\n"
 "Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"Language: id\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -87,7 +89,7 @@ msgstr "Coba `%s --help' atau `%s --usage' untuk informasi lebih lanjut.\n"
 msgid "Report bugs to %s.\n"
 msgstr "Laporkan bug ke %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Kesalahan sistem tidak dikenal"
 
@@ -99,8 +101,8 @@ msgstr "berikan daftar bantuan ini"
 msgid "give a short usage message"
 msgstr "berikan sebuah pesan penggunaan singkat"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NAMA"
 
@@ -138,56 +140,61 @@ msgstr "(APLIKASI ERROR) Pilihan seharusnya telah dikenali!?"
 msgid "write error"
 msgstr "error menulis"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: pilihan '%s' ambigu\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: pilihan '--%s' tidak mengijinkan sebuah argumen\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: pilihan '%c%s' tidak mengijinkan sebuah argumen\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: pilihan '%s' membutuhkan sebuah argumen\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: pilihan '--%s' membutuhkan sebuah argumen\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: pilihan tidak dikenal '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: pilihan tidak dikenal '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: pilihan -- '%c' tidak valid\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: pilihan membutuhkan sebuah argumen -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: pilihan '-W %s' ambigu\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: pilihan '-W %s' tidak mengijinkan sebuah argumen\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: pilihan '-W %s' membutuhkan sebuah argumen\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "kehabisan memori"
@@ -529,189 +536,189 @@ msgstr "stdout"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Tidak dapat menghubungi ke %s: penelusuran gagal"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Tidak dapat menjalankan remote shell"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Arah pencarian di luar jangkauan"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Arah pencarian tidak valid"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Ofset pencarian tidak valid"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Offset pencarian di luar jangkauan"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Jumlah byte tidak valid"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "Jumlah byte di luar jangkauan"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "EOF prematur"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Kode operasi tidak valid"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "Operasi tidak didukung"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Unexpected tidak terduga"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr "Manipulasi sebuah tape drive, menerima perintah dari proses remote"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NOMOR"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "tentukan tingkat penelusuran"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "BERKAS"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "tentukan keluaran nama berkas penelusuran"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "tidak dapat membuka %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "terlalu banyak argumen"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Perintah sampah"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Ini sepertinya bukan sebuah tar archive"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Total byte ditulis"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Total byte dibaca"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Total byte dihapus: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Nilai record_size tidak valid"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Tidak diberikan nama archive"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Tidak dapat memverifikasi stdin/stdout archive"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Archive terkompres. Gunakan %s pilihan"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Tidak dapat update compressed archives"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Berada pada awal tape, berhenti sekarang"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Terlalu banyak errors, berhenti"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Ukuran record = %lu blok"
 msgstr[1] "Ukuran record = %lu blok"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Blok tidak sesuai (%lu byte) dalam arsip"
 msgstr[1] "Blok tidak sesuai (%lu byte) dalam arsip"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Tidak dapat backspace file archives; kemungkinan tidak bisa dibaca tanpa -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek tidak dapat berhenti di sebuah batas rekaman"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: berisi nomor volum yang tidak valid"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Nomor volum overflow"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Mempersiapkan volume #%d untuk %s dan tekan return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF pada saat user reply diharapkan"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "PERINGATAN: Archive tidak lengkap"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -723,65 +730,65 @@ msgstr ""
 " q             Batalkan tar\n"
 " y or newline  Lanjutkan operasi\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Spawn sebuah subshell\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Tampilkan daftar ini\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Tidak ada new volume; keluar.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Nama berkas tidak dispesifikasikan. Coba lagi.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Masukan tidak valid. Ketik ? untuk bantuan.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Perintah %s gagal"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s mungkin dilanjutkan di volume ini: header berisi nama terpotong"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s tidak dilanjutkan di volume ini"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s adalah ukuran yang salah (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Volume ini di luar urutan (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Label archive tidak cocok dengan %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Volume %s tidak sesuai dengan %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -789,7 +796,7 @@ msgstr ""
 "%s: nama berkas terlalu panjang untuk diurutkan dalam sebuah GNU multivolume "
 "header, dipotong"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "tulis tidak berhenti di batas blok"
 
@@ -800,20 +807,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Hanya dapat membaca %lu dari %lu byte"
 msgstr[1] "Hanya dapat membaca %lu dari %lu byte"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Isi berbeda"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Unexpected EOF dalam archive"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Tipe berkas berbeda"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Mode berbeda"
 
@@ -829,144 +836,144 @@ msgstr "Gid berbeda"
 msgid "Mod time differs"
 msgstr "Mod time berbeda"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Ukuran berbeda"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Tidak dilink ke %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symlink berbeda"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Nomor perangkat berbeda"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verifikasi "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Tipe berkas '%c' tidak dikenal, lakukan diff sebagai berkas normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Archive berisi nama berkas dengan awalan dihapus."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Verifikasi mungkin gagal untuk menemukan berkas orisinil."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "GAGAL VERIFIKASI: header %d tidak valid terdeteksi"
 msgstr[1] "GAGAL VERIFIKASI: header %d tidak valid terdeteksi"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Sebuah lone blok nol di %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: berisi sebuah cache direktori tag %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "nilai %s dari %s di luar jangkauan %s..%s; menggantikan %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "nilai %s dari %s di luar dari jangkauan %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Membuat header oktal negatif"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: nama berkas terlalu panjang (maksimal %d); tidak di-dump"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: nama berkas terlalu panjang (tidak dapat memisahkan); tidak di-dump"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: nama link terlalu panjang; tidak di-dump"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Berkas diperkecil %s byte; dipadding dengan nol"
 msgstr[1] "%s: Berkas diperkecil %s byte; dipadding dengan nol"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: file berada pada filesistem yang berbeda; tidak di-dump"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "isi tidak didump"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tipe file tidak dikenal; file diabaikan"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "Hilang hubungan ke %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: berkas tidak berubah; tidak di-dump"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: berkas adalah archive; tidak di-dump"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "direktori tidak didump"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: berkas berubah saat kita membacanya"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: soket diabaikan"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door diabaikan"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Skip ke header berikutnya"
 
@@ -974,75 +981,75 @@ msgstr "Skip ke header berikutnya"
 msgid "Deleting non-header from archive"
 msgstr "Menghapus non-header dari archive"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: implausibly penanda waktu lama %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: penanda %s adalah %s dalam masa datang"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Inkonsistensi tidak diharapkan ketika membuat direktori"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Direktori diganti nama sebelum statusnya dapat diperoleh"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Sedang extract contiguous file sebagai regular file"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Mencoba extract symbolic link sebagai hard link"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr ""
 "%s: Tidak dapat mengekstrak -- berkas adalah kelanjutan dari volume lain"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Tidak terduga nama header panjang"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Tipe berkas tidak dikenal '%c', diekstraksi sebagai berkas normal"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Saat ini %s adalah lebih baru atau berumuran sama"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Tidak dapat melakukan backup berkas ini"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Tidak dapat mengubah nama %s ke %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Direktori telah diubah nama dari %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Direktori telah diganti nama"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Direktori adalah baru"
@@ -1152,178 +1159,178 @@ msgstr "%s: Menghapus %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Tidak dapat menghapus"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Mengabaikan"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok dari KOSONG **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Akhir dari Berkas **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Kosong dalam header saat diharapkan nilai %s numerik"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr "Nilai oktal arsip %.*s di luar batasan %s; asumsikan komplemen dua"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Nilai oktal arsip %.*s di luar batasan %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arsip berisikan header base-64 yang kadaluarsas"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Arsip yang ditandatangahi dengan string base-64 %s di luar batasan %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Nilai arsip base-256 di luar batasan %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arsip berisikan %.*s ketika nilai numerik %s diharapkan"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Nilai arsip %s dari %s di luar batasan %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " link ke %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tipe file tidak dikenal %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Link Panjang--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Nama Panjang--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Volume Header--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Diteruskan pada byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Membuat direktori:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Tidak bisa pindah direktori kerja"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Mengganti nama %s ke %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s:Tidak dapat mengganti nama ke %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Mengganti nama %s kembali ke %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Tidak dapat menyimpan direktori kerja"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Tidak bisa pindah direktori kerja"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Berkas dihapus sebelum kita membacanya"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Direktori dihapus sebelum kita membacanya"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proses anak"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "saluran interproses"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Pola pencocokan karakter digunakan dalam nama berkas. Mohon,"
+msgstr "Pola pencocokan karakter digunakan dalam nama berkas."
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
-"gunakan --wildcards untuk mengaktifkan pencocokan pola, atau --no-wildcards "
-"untuk"
+"Gunakan --wildcards untuk mengaktifkan pencocokan pola, atau --no-wildcards "
+"untuk menekan peringatan ini"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Tidak ditemukan dalam archive"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Kejadian yang diinginkan tidak ditemukan dalam archive"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Label archive tidak cocok"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "Menggunakan pilihan -C didalam daftar berkas tidak diijinkan dengan --listed-"
 "incremental"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Hanya satu pilihan -C yang diijinkan dengan --listed-incremental"
 
@@ -1349,7 +1356,7 @@ msgstr ""
 "Gaya quoting `%s' tidak diketahui. Coba `%s --quoting-style=help' untuk "
 "memperoleh daftar."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1369,7 +1376,7 @@ msgstr ""
 "secara rinci.\n"
 "  tar -xf archive.tar          # Bongkar semua berkas dari archive.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1388,82 +1395,82 @@ msgstr ""
 "  t, numbered     membuat backups bernomor\n"
 "  nil, existing   beri nomor bila nomor backup telah ada, sederhana "
 "sebaliknya\n"
-"  never, simple   selalu buat sederhana backups\n"
+"  never, simple   selalu buat cadangan sederhana\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Mode operasi utama:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "daftar isi dari sebuah archive"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "ekstrak berkas dari sebuah archive"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "buat sebuah archive baru"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "cari perbedaan diantara archive dan sistem berkas"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "tambahkan berkas ke akhir dari sebuah archive"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "hanya tambahkan berkas yang lebih bari dari salinan dalam archive"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "tambahkan berkas tar ke sebuah archive"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "hapus dari archive (bukan dalam pita mag!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "test label volume archive dan keluar"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Pemodifikasi operasi:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "tangani berkas sparse secara efisien"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "set versi dari format sparse untuk digunakan (mengimplikasikan --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "tangani format GNU lama incremental backup"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "tangani format GNU barus incremental backup"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "tingkat `dump' untuk pembuatan `listed-incremental archive'"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "jangan keluar dengan bukan nol dalam berkas tidak dapat dibaca"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1475,122 +1482,122 @@ msgstr ""
 "diff, --extract atau --list dan ketika sebuah daftar dari berkas diberikan "
 "baik dalam baris perintah atau melalui pilihan -T; JUMLAH baku ke 1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "pencarian tidak dapat dilakukan dalam archive"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "pencarian tidak dapat dilakukan dalam archive"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 "tidak dapat memeriksa nomor perangkat ketika membuat archive incremental"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr "periksa nomor perangkat ketika membuat incremental archive (baku)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Overwrite kontrol:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "mencoba untuk memverifikasi archive setelah menulisnya"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "hapus berkas setelah menambahkannya ke archive"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "jangan timpa berkas yang sudah ada ketika mengekstrak"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "jangan timpa berkas yang sudah ada yang lebih baru dari salinan archivenya"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "overwrite berkas yang sudah ada ketika mengekstrak"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "hapus setiap berkas sebelum mengekstrak diatasnya"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "kosongkan susunan sebelum mengekstrak ke direktori"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "jaga metadata dari direktori yang sudah ada"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "overwrite metadata dari direktori yang sudah ada ketika mengekstrak (baku)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Pilih stream keluaran:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "ekstrak berkas ke standar keluaran"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "PERINTAH"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "pipe berkas terekstrak ke aplikasi lain"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "abaikan kode keluaran dari anak"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "perlakukan kode keluaran bukan nol dari anak sebagai error"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Penanganan dari atribut berkas:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "paksa NAMA sebagai pemilik untuk berkas yang ditambahkan"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "paksa NAMA sebagai grup untuk berkas yang ditambahkan"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATE-ATAU-BERKAS"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "set mtime untuk berkas yang ditambahkan dari DATE-OR-FILE"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "PERUBAHAN"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "paksa PERUBAHAN (simbolik) mode untuk berkas yang ditambahkan"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METODE"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1600,11 +1607,11 @@ msgstr ""
 "setelah membaca (METODE='replace'; baku) atau dengan tidak menset waktu di "
 "tempat pertama (METODE='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "jangan ekstrak waktu modifikasi berkas"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1612,19 +1619,19 @@ msgstr ""
 "mencoba mengekstrak berkas dengan kepemilikan yang sama yang ada dalam "
 "archive (baku untuk pengguna super)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "ekstrak berkas seperti dirimu (baku untuk pengguna biasa)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "selalu gunakan nomor untuk nama pengguna/grup"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "ekstrak informasi mengenai ijin berkas (baku untuk superuser)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1632,15 +1639,15 @@ msgstr ""
 "aplikasikan umask pengguna ketika mengekstrak ijin dari archive (baku untuk "
 "pengguna biasa)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "urutkan nama untuk mengekstrak supaya cocok dengan archive"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "sama seperti baik -p dan -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1648,139 +1655,139 @@ msgstr ""
 "tunda konfigurasi waktu modifikasi dan ijin untuk direktori terekstrak "
 "sampai akhir dari ekstrasi"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "batalkan efek dari pilihan --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Pemilihan dan pengubahan perangkat:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIVE"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "gunakan berkas archive atau perangkat ARCHIVE"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "berkas archive adalah lokal walaupun ini memiliki sebuah kolon"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "gunakan PERINTAH rmt yang diberikan daripad rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "gunakan PERINTAH remote daripada rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "spesifikasikan drive dan kepadatan"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "buat/daftar/ekstrak multi-volume archive"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "ubah pita setelah menulis ANGKA x 1024 bytes"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "jalankan script di akhir dari setiap pite (mengimplikasikan -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "gunakan/update jumlah volume dalam BERKAS"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Bloking perangkat:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOK"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOK x 512 byte per detik"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "JUMLAH dari byte per rekaman, kelipatan dari 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "abaikan blok yang dinolkan dalam archive (berarti EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "reblok saat kita baca (untuk 4.2BSD pipes)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Pemilihan format archive:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "buat archive dari format yang diberikan"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT adalah satu dari berikut:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "format tar lama V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "format gnu tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "format GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "format POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "format POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "sama seperti pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "sama seperti --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "sama seperti --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "kata kunci[[:]=nilai][,kata kunci[[:]=nilai]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "kontrol kata kunci pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEKS"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1788,77 +1795,77 @@ msgstr ""
 "buat archive dengan nama volume TEKS; di waktu daftar/ekstrak, gunakan TEKS "
 "sebagai sebuah pola globbing untuk nama volume"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Pilihan kompresi:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "gunaka nama akhiran archive untuk menentukan aplikasi kompresi"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "jangan gunakan nama akhiran archive untuk menentukan aplikasi kompresi"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "saring melalui PROG (harus menerima -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Pemilihan berkas lokal:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "tambahkan berkas yang diberikan ke archive (berguna jika namanya berawal "
 "dengan sebuah dash)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "pindah ke direktori DIR"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "dapatkan nama untuk ekstrak atau buat dari BERKAS"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T baca nama berakhiran kosong, non-aktifkan -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "non-aktifkan efek dari pilihan --null sebelumnya"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "unquote nama berkas baca dengan -T (baku)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "jangan unquote nama berkas baca dengan -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "POLA"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "jangan masukan berkas, berikan sebagai sebuah POLA"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "jangan masukan pola yang terdaftar dalam BERKAS"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1866,93 +1873,93 @@ msgstr ""
 "jangan masukan isi dari direktori berisi CACHEDIR.TAG, kecuali untuk berkas "
 "tag itu sendiri"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "jangan masukan apapun dibawah direktori berisi CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "jangan masukan direktori berisi CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "jangan masukan isi dari direktori berisi BERKAS, kecuali untuk BERKAS itu "
 "sendiri"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "jangan masukan apapun dibawah direktori berisi BERKAS"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "jangan masukan direktori berisi BERKAS"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "jangan masukan direktori sistem pengontrol direktori"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "abaikan berkas cadangan dan berkas kunci"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "hindari penurunan secara otomatis dalam direktori"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "tetap dalam sistem berkas lokal ketika membuat archive"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "rekursif kedalam direktori (baku)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "jangan hilangkan awalan `/' dari nama berkas"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "ikuti symlinks; berkas archive dan dump yang mereka tunjuk ke"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "ikuti hard links; berkas archive dan dump yang mereka refer ke"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NAMA-ANGGOTA"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "berawal di anggota NAMA-ANGGOTA dalam archive"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "hanya simpan berkas lebih baru dari DATE-OR-FILE"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "TANGGAL"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "bandingkan tanggal dan waktu hanya ketika data berubah"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "KONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "backup sebelum penghapusan, pilih PENGONTROL versi"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "STRING"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1960,97 +1967,97 @@ msgstr ""
 "backup sebelum penghapusan, override akhiran biasa ('~' kecuali di override "
 "oleh variabel lingkungan SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Transformasi nama berkas:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 "hilangkan NOMOR yang mengawali komponen dari nama berkas di waktu ekstraksi"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "EKSPRESI"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "gunakan sed EKSPRESI replace untuk mengubah nama berkas"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Pilihan nama berkas cocok (mempengaruhi baik pola exclude dan include):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "abaikan perbedaan huruf besar dan huruf kecil"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "pencocokan pola nama berkas mulai"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "pencocokan polah setelah `/' apapun (baku untuk exclusion)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "pencocokan dengan memperhatikan huruf besar dan huruf kecil (baku)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "gunakan wildcards (baku untuk exclusion)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "pencocok verbatim string"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "wildcards tidak cocok `/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "wildcards cocok `/' (baku untuk exclusion)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Keluaran informative:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "proses daftar berkas secara verbose"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "KATA KUNCI"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "pengendali peringatan"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "tampilkan pesan perkembangan setiap rekaman ke ANGKA (baku 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "AKSI"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "jalankan AKSI disetiap titik pemeriksaan"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "tampilkan sebuah pesan jika tidak seluruh link didump"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SINYAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2062,27 +2069,31 @@ msgstr ""
 "adalah: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 dan SIGUSR2; nama tanpa awalah SIG "
 "juga diterima"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "tampilkan waktu modifikasi berkas dalam UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "tampilkan waktu berkas sampai ke resolusi penuh"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "kirim keluaran verbose ke BERKAS"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "tampilkan jumlah blok didalam archive dengan setiap pesan"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "minta konfirmasi untuk setiap aksi"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "tampilkan tar baku"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2090,31 +2101,31 @@ msgstr ""
 "ketika mendaftar atau mengekstrak, daftar setiap direktori yang tidak cocok "
 "dengan kriteria pencarian"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "tampilkan berkas atau nama berkas setelah transformasi"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "GAYA"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "set nama quoting gaya; lihat dibawah untuk nilai GAYA yang valid"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "sebagai tambahan karakter quote dari STRING"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "non-aktifkan quoting untuk karakter dari STRING"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Pilihan yang kompatibel:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2122,64 +2133,64 @@ msgstr ""
 "ketika membuat, sama seperti --old-archive; ketika mengekstrak, sama seperti "
 "--no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Pilihan lain:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "non-aktifkan penggunaan dari pilihan berbahaya yang berpotensial"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 "Anda tidak bisa menspesifikasikan lebih dari satu pilihan `-Acdtrux' atau `--"
 "test-label'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Pilihan kompresi konflik"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Nama sinyal: %s tidak dikenal"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Tanggal contoh berkas tidak ditemukan"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Menggantikan %s untuk format tanggal tidak dikenal %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Pilihan %s: memperlakukan tanggal `%s' sebagai %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: daftar berkas telah dibaca"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: nama berkas yang dibaca berisi karakter nul"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "saring archive melalui %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Argumen yang valid untuk pilihan --quoting-style adalah:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2187,51 +2198,51 @@ msgstr ""
 "\n"
 "*Ini* tar baku ke:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Faktor bloking tidak valid"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Panjang tape tidak valid"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Nilai tingkat peningkatan tidak valid"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Lebih dari satu treshold date"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Nilai versi sparse tidak valid"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "pilihan --atime-preserve='system' tidak didukung di platform ini"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "nilai --checkpoint bukan sebuah integer"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Grup tidak valid"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Mode tidak tepat diberikan pada pilihan"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Nomor tidak valid"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Pemilik tidak valid"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2239,117 +2250,117 @@ msgstr ""
 "Pilihan --preserve sudah ditinggalkan, lebih baik gunakan --preserve-"
 "permissions --preserve-order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Ukuran record tidak valid"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Jumlah record harus kelipatan dari %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Jumlah dari elemen tidak valid"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Hanya satu pilihan --to-command yang diijinkan"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Salah bentuk kepadatan argumen: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Kepadatan tidak diketahui: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Pilihan `-[0-7][lmh]' tidak didukung oleh tar *ini*"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[BERKAS]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Pilihan 'lama' `%c' membutuhkan argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence tidak berarti tanpa sebuah daftar berkas"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence tidak dapat digunakan dalam mode operasi yang diminta"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Berkas multiple archive membutuhkan pilihan '-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Tidak dapat menggabungkan --listed-incremental dengan --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--level tidak berarti tanpa --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Label volume terlalu panjang (batasnya adalah %lu byte)"
 msgstr[1] "%s: Label volume terlalu panjang (batasnya adalah %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Tidak dapat verifikasi multi-volume archives"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Tidak dapat verify compressed archives"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Tidak dapat menggunakan multi-volume compressed archives"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Tidak dapat update compressed archives"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option hanya dapat digunakan dalam archive POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Panjang volume tidak dapat lebih kecil dari ukuran rekaman"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order tidak kompatibel dengan --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Secara takut menolak untuk membuat sebuah archive kosong"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Pilihan '-Aru' tidak kompatibel dengan `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr ""
 "Anda harus menspesifikasikan salah satu dari pilihan `-Acdtrux' atau `--test-"
 "label'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Keluar dengan status gagal karena error error sebelumnya"
@@ -2361,56 +2372,56 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Berkas mengecil sebanyak %s byte"
 msgstr[1] "%s: Berkas mengecil sebanyak %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Kata kunci %s tidak diketahui atau belum diimplementasikan"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Penanda waktu di luar dari jangkauan yang diijinkan"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Pola %s tidak dapat digunakan"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Kata kunci %s tidak dapat dioverride"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Salah bentuk ekstensi header: hilang panjang"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Ekstensi panjang header diluar dari jangkauan yang diijinkan"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Ekstensi panjang header %*s diluar dari jangkauan"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Salah bentuk ekstensi header: hilang blank setelah panjang"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Salah bentuk ekstensi header: hilang tanda sama dengan"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Salah bentuk ekstensi header: hilang baris baru"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Mengabaikan kata kunci ekstensi `%s' yang tidak diketahui"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2419,27 +2430,27 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Ekstensi header %s=%s diluar dari jangkauan %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Salah bentuk ekstensi header: tidak valid %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Salah bentuk ekstensi header: kelebihan %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Salah bentuk ekstensi header: tidak valid %s: tidak diduga pembatas %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Salah bentuk ekstensi header: tidak valid %s: jumlah dari nilai ganjil"
@@ -2480,7 +2491,7 @@ msgstr "Menulis titik pemeriksaan %u"
 msgid "Read checkpoint %u"
 msgstr "Membaca titik pemeriksaan %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2488,69 +2499,69 @@ msgstr ""
 "genfile memanipulasi berkas data untuk suite pemeriksaan GNU paxutils.\n"
 "PILIHAN adalah:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Pilihan pembuatan berkas:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "UKURAN"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Buat berkas dari UKURAN yang diberikan"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Tulis ke berkas NAMA, daripada ke standar keluaran"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Baca nama berkas dari BERKAS"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T baca nama berakhiran null"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "Isi berkas dengan POLA yang diberikan. POLA adalah 'baku' atau 'nol'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Ukuran dari sebuah blok untuk berkas sparse"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Buat berkas sparse. Sisa dari baris perintah memberikan peta berkas."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "OFSET"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Cari ke ofset yang diberikan sebelum menulis data"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Pilihan statistik berkas:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Tampilkan isi dari statistik struk untuk setiap berkas yang diberikan. "
 "FORMAT baku adalah: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "pilihan eksekusi synchronous:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "PILIHAN"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2558,22 +2569,22 @@ msgstr ""
 "Jalankan ARG. Berguna dengan --checkpoint dan satu dari --cut, --append, --"
 "touch, --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Lakukan aksi yang diberikan (lihat dibawah) ketika mencapai titik "
 "pemeriksaan NOMOR"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Set tanggal untuk pilihan --touch selanjutnya"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 "Tampilkan titik pemeriksaan yang dijalankan dan status keluar dari PERINTAH"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2581,7 +2592,7 @@ msgstr ""
 "Aksi eksekusi synchronous. Ini dijalankan ketika titik pemeriksaan nomor "
 "yang diberikan oleh pilihan --checkpoint dicapai."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2589,145 +2600,148 @@ msgstr ""
 "Potong BERKAS ke ukuran yang dispesifikasikan oleh pilihan --length "
 "sebelumnya (atau 0, jika ini tidak diberikan)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Tambahkan UKURAN bytes ke BERKAS. UKURAN yang diberikan oleh pilihan --"
 "length sebelumnya."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Update waktu akses dan modifikasi dari BERKAS"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Jalankan PERINTAH"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "Putus BERKAS"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Ukuran: %s tidak valid"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Jumlah diluar dari jangkauan yang diijinkan: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Ukuran negatif: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) gagal"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "panjang berkas yang diminta %lu, sebenernya %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "pembuatan berkas tidak sparse"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Error parsing nomor didekat `%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Format tanggal tidak diketahui"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARG...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "tidak dapat membuka `%s'"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "Tidak dapat mencari"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "nama berkas berisi karakter null"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "tidak dapat menghasilkan berkas sparse di standar keluaran, gunakan pilihan "
 "--file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "mask tidak benar (didekat `%s')"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Field `%s' tidak diketahui"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "tidak dapat menset waktu di `%s'"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "tidak dapat memutus `%s'"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Perintah keluar secara sukses\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Perintah gagal dengan status %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Perintah berakhir di sinyal %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Perintah berhenti di sinyal %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Perintah memberika core dump\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Perintah berakhir\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat membutuhkan nama berkas"
 
+#~ msgid "Cannot save working directory"
+#~ msgstr "Tidak dapat menyimpan direktori kerja"
+
 #~ msgid "Cannot resolve hostname %s"
 #~ msgstr "Tidak dapat menemukan alamat dari nama host %s"
 
index e5c718e8033753b33c3522af5d99b3dbe44160f8..598a7b91dcf31cb30c8aa86d602e3952203afdf5 100644 (file)
Binary files a/po/it.gmo and b/po/it.gmo differ
index 974ca729ffd1dc696a530123ba9f498da4aae4bf..9cccaf80eb7aa729948fb8e5e457161fcc9f9cf3 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,22 +1,24 @@
 # Italian translation of GNU tar.
-# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
 #
 # Lele Gaifax <lele@nautilus.eclipse.it>, 1996.
 # Marco d'Itri <md@linux.it>, 1998.
-# Milo Casagrande <milo@casagrande.name>, 2008-2009
 #
+# Milo Casagrande <milo@casagrande.name>, 2008-2009, 2010.
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22\n"
+"Project-Id-Version: tar-1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2009-04-05 21:45+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-12 10:25+0200\n"
 "Last-Translator: Milo Casagrande <milo@casagrande.name>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: gnu/argmatch.c:135
@@ -89,7 +91,7 @@ msgstr "Usare \"%s --help\" o \"%s --usage\" per ulteriori informazioni.\n"
 msgid "Report bugs to %s.\n"
 msgstr "Segnalare i bug a %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Errore di sistema sconosciuto"
 
@@ -101,8 +103,8 @@ msgstr "Mostra questo aiuto"
 msgid "give a short usage message"
 msgstr "Mostra un breve messaggio sull'uso"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NOME"
 
@@ -140,56 +142,61 @@ msgstr "(ERRORE DEL PROGRAMMA) L'opzione dovrebbe essere stata riconosciuta."
 msgid "write error"
 msgstr "Errore di scrittura"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: l'opzione \"%s\" è ambigua\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: l'opzione \"--%s\" non accetta un argomento\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: l'opzione \"%c%s\" non accetta un argomento\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: l'opzione \"%s\" richiede un argomento\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: l'opzione \"--%s\" richiede un argomento\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opzione \"--%s\" non riconosciuta\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opzione \"%c%s\" non riconosciuta\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: opzione non valida -- %c\n"
+msgstr "%s: opzione non valida -- \"%c\"\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: l'opzione richiede un argomento -- %c\n"
+msgstr "%s: l'opzione richiede un argomento -- \"%c\"\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: l'opzione \"-W %s\" è ambigua\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: l'opzione \"-W %s\" non accetta un argomento\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: l'opzione \"-W %s\" richiede un argomento\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memoria esaurita"
@@ -254,12 +261,12 @@ msgstr "^[nN].*"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Pacchetto creato da %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Pacchetto creato da %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
@@ -398,33 +405,33 @@ msgstr ""
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
-msgstr "Segnalare i bug a %s.\n"
+msgstr ""
+"\n"
+"Segnalare i bug a: %s\n"
+"Segnalare i bug di traduzione a: <tp@lists.linux.it>\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
-msgstr ""
-"\n"
-"Segnalare i bug a <%s>.\n"
+msgstr "Segnalare i bug di %s a: %s\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "Sito web di %s: <%s>\n"
 
 #: gnu/version-etc.c:255
-#, fuzzy, c-format
+#, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr "Sito web di %s: <http://www.gnu.org/software/%s/>.\n"
+msgstr "Sito web di %s: <http://www.gnu.org/software/%s/>\n"
 
 #: gnu/version-etc.c:258
-#, fuzzy
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr "Aiuto per l'utilizzo di software GNU: <http://www.gnu.org/gethelp/>.\n"
+msgstr "Aiuto per l'utilizzo di software GNU: <http://www.gnu.org/gethelp/>\n"
 
 # (ndt) metto tra virgolette visto che è
 # il nome di una funzione non traducibile
@@ -533,198 +540,192 @@ msgstr "stdout"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Impossibile connettersi a %s: \"resolve\" non riuscita"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Impossibile eseguire la shell remota"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Direzione di seek fuori dell'intervallo"
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Modo fornito sull'opzione non valido"
+msgstr "Direzione di seek non valida"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Dimensione non valida: %s"
+msgstr "Offset di seek non valido"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Offset di seek fuori dell'intervallo"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Lunghezza del nastro non valida"
+msgstr "Conteggio byte non valido"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "Offset di seek fuori dell'intervallo"
+msgstr "Conteggio byte fuori dell'intervallo"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd: EOF prematuro\n"
+msgstr "EOF prematuro"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "Modi operativi principali:"
+msgstr "Codice d'operazione non valido"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Operazione non supportata"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "EOF inatteso nell'archivio"
+msgstr "Argomenti non attesi"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
+"Manipola un dispositivo a nastro, accettando comandi da un processo remoto"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NUMERO"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "Imposta il livello di debug"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FILE"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "Imposta il nome del file di output per il debug"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
-msgstr "impossibile aprire \"%s\""
+msgstr "impossibile aprire %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "troppi argomenti"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Comando spazzatura"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Questo non sembra un archivio tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Byte totali scritti"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Byte totali letti"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Byte totali eliminati: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Valore di record_size non valido"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Non è stato indicato il nome di un archivio"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Impossibile verificare archivi su stdin/stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "L'archivio è compresso. Usare l'opzione %s."
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Impossibile aggiornare archivi compressi"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "All'inizio del nastro, uscita immediata"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Troppi errori, uscita"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Dimensioni del record = %lu blocco"
 msgstr[1] "Dimensioni del record = %lu blocchi"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Blocco non allineato nell'archivio (%lu byte)"
 msgstr[1] "Blocco non allineato nell'archivio (%lu byte)"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Impossibile muoversi all'indietro nel file dell'archivio; potrebbe non "
 "essere\n"
 "leggibile senza l'opzione -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek non si è fermata al limite di un record"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: contiene un numero di volume non valido"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Overflow del numero di volume"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Preparare il volume #%d per %s e premere Invio: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Ricevuto EOF quando era attesa la risposta dell'utente"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "Attenzione: l'archivio non è completo"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -736,67 +737,67 @@ msgstr ""
 " q             Termina tar\n"
 " y o Invio     Continua l'operazione\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Esegue una subshell\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Stampa questo elenco\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Nessun nuovo volume; uscita.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Nome file non specificato. Riprovare.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Input non valido. Premere ? per l'aiuto.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "comando \"%s\" non riuscito"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s potrebbe continuare su questo volume: l'intestazione contiene un nome "
 "troncato"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s non continua su questo volume"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s è la dimensione sbagliata (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Questo volume è fuori sequenza (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "L'archivio non ha un'etichetta corrispondente a %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Il volume %s non corrisponde a %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -804,7 +805,7 @@ msgstr ""
 "%s: il nome del file è troppo lungo per essere scritto in un'intestazione "
 "GNU multi-volume, troncato"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "write non si è fermata al limite di un record"
 
@@ -815,20 +816,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "È stato possibile leggere solo %lu byte di %lu"
 msgstr[1] "È stato possibile leggere solo %lu byte di %lu"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "I contenuti sono differenti"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "EOF inatteso nell'archivio"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "I tipi dei file sono diversi"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "I modi sono diversi"
 
@@ -844,144 +845,144 @@ msgstr "I GID sono diversi"
 msgid "Mod time differs"
 msgstr "Gli orari di modifica sono diversi"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Le dimensioni sono diverse"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Non è collegato a %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "I collegamenti simbolici sono diversi"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "I numeri dei device sono diversi"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verifica "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: tipo di file \"%c\" sconosciuto, confrontato come un file normale"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "L'archivio contiene nomi di file con i prefissi iniziali rimossi."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "La verifica potrebbe non riuscire a trovare i file originali."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "Errore di verifica: trovata %d intestazione non valida"
 msgstr[1] "Errore di verifica: trovate %d intestazioni non valide"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Un singolo blocco di zeri a %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: contiene un'etichetta di directory cache %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "valore %s fuori dall'intervallo (%s) %s..%s; sostituzione con %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "valore %s fuori dall'intervallo (%s) %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Generazione delle intestazioni ottali negative"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: il nome del file è troppo lungo (max %d); non archiviato"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: il nome del file è troppo lungo (impossibile dividerlo); non archiviato"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: il nome del collegamento è troppo lungo; non archiviato"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: file ristretto di %s byte; riempito con zeri"
 msgstr[1] "%s: file ristretto di %s byte; riempito con zeri"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: il file si trova su un altro file system; non archiviato"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "contenuti non archiviati"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: tipo di file sconosciuto; file ignorato"
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr "Collegamenti mancanti a %s.\n"
+msgstr "Collegamenti mancanti a %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: il file non è modificato; non archiviato"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: il file è l'archivio; non archiviato"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "directory non archiviata"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: file modificato mentre era in lettura"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socket ignorato"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door ignorata"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Passaggio alla prossima intestazione"
 
@@ -989,46 +990,46 @@ msgstr "Passaggio alla prossima intestazione"
 msgid "Deleting non-header from archive"
 msgstr "Eliminazione non-intestazione dall'archivio"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: orario %s inverosimilmente vecchio"
 
 # (ndt) problema del plurale...
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: l'orario %s è %s secondi nel futuro"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: incoerenza inaspettata nel creare la directory"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: directory rinominata prima di poterne estrarre lo stato"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Estrazione file contigui come file normali"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr ""
 "Tentativo di estrazione dei collegamenti simbolici come collegamenti fisici"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: impossibile estrarre -- il file continua da un altro volume"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Intestazione di nome lungo inattesa"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: tipo di file \"%c\" sconosciuto, estratto come file normale"
@@ -1040,35 +1041,35 @@ msgstr "%s: tipo di file \"%c\" sconosciuto, estratto come file normale"
 #               quote (file_name)));
 #        return 0;
 #      }
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Il file %s corrente è più recente o ha la stessa data"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: impossibile eseguire il backup di questo file"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Impossibile rinominare %s in %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: directory rinominata da %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: directory rinominata"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
-msgstr "%s: la directory è nuova"
+msgstr "%s: directory nuova"
 
 #: src/incremen.c:956 src/incremen.c:973
 msgid "Invalid time stamp"
@@ -1176,35 +1177,35 @@ msgstr "%s: eliminazione di %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: impossibile rimuoverlo"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: omesso"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blocco %s: ** Blocco di NUL **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blocco %s: ** Fine del file **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blocco %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Trovati spazi nell'intestazione dove era atteso il valore numerico %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1212,146 +1213,147 @@ msgstr ""
 "che sia in complemento a due"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Il valore ottale %.*s dell'archivio è fuori dall'intervallo %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "L'archivio contiene intestazioni base-64 obsolete"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 "La stringa base-64 con segno %s dell'archivio è fuori dall'intervallo %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Il valore base-256 dell'archivio è fuori dall'intervallo %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "L'archivio contiene %.*s dove era atteso il valore numerico %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Il valore %s dell'archivio è fuori dall'intervallo (%s) %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " collegamento a %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tipo di file sconosciuto %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Collegamento lungo--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Nome lungo--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Intestazione del volume--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Continua al byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Creazione directory:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Impossibile cambiare la directory di lavoro"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Rinomina di %s in %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: impossibile rinominarlo in %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Rinomina di %s nuovamente in %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Impossibile salvare la directory di lavoro"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Impossibile cambiare la directory di lavoro"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: file rimosso prima di poterlo leggere"
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s: file rimosso prima di poterlo leggere"
+msgstr "%s: directory rimossa prima di poterla leggere"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "il processo figlio"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "il canale tra processi"
 
-# (ndt) pattern matching... trovare di meglio...
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Usati caratteri di corrispondenza nei nomi dei file. Usare "
+msgstr "Usati caratteri di corrispondenza nei nomi dei file."
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "--wildcards per abilitare la corrispondenza o --no-wildcards "
+msgstr ""
+"Usare --wildcards per abilitare la corrispondenza o --no-wildcards per "
+"disabilitare l'avviso"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: non trovato nell'archivio"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: occorrenza richiesta non trovata nell'archivio"
 
-#: src/names.c:894
-#, fuzzy
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Etichetta dell'archivio non corrispondente"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
-msgstr "--preserve-order non è compatibile con --listed-incremental"
+msgstr ""
+"L'utilizzo dell'opzione -C all'interno dell'elenco dei file non è consentita "
+"con --listed-incremental"
 
-#: src/names.c:900
-#, fuzzy
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr "--preserve-order non è compatibile con --listed-incremental"
+msgstr "Solo un'opzione -C è consentita con --listed-incremental"
 
 #: src/tar.c:81
 #, c-format
@@ -1375,7 +1377,7 @@ msgstr ""
 "Stile di citazione \"%s\" non conosciuto. Provare \"%s --quoting-style=help"
 "\" per visualizzarne un elenco."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1390,12 +1392,12 @@ msgstr ""
 "dall'archivio.\n"
 "\n"
 "Esempi:\n"
-"  tar -cf archivio.tar foo bar # Crea archivio.tar dai file foo e bar.\n"
+"  tar -cf archivio.tar foo bar # Crea archivio.tar dai file foo e bar\n"
 "  tar -tvf archivio.tar        # Elenca prolissamente i file in archivio."
-"tar.\n"
-"  tar -xf archivio.tar         # Estrae tutti i file da archivio.tar.\n"
+"tar\n"
+"  tar -xf archivio.tar         # Estrae tutti i file da archivio.tar\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1418,80 +1420,81 @@ msgstr ""
 "  nil, existing   Numerati se esistono backup numerati, altrimenti semplici\n"
 "  never, simple   Esegue sempre backup semplici\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Modi operativi principali:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "Elenca i contenuti dell'archivio"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "Estrae file da un archivio"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "Crea un nuovo archivio"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "Trova differenze tra l'archivio e il file system"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "Accoda i file alla fine di un archivio"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "Accoda solo i file più recenti della copia nell'archivio"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "Aggiunge il contenuto di un altro archivio"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "Elimina dall'archivio (non su nastri magnetici)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "Verifica l'etichetta di volume dell'archivio ed esce"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Modificatori delle operazioni:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "Gestisce efficientemente i file sparsi"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
 # (ndt) hmmm... formato sparso...
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "Imposta la versione da usare per il formato sparso (implica --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "gestisce i vecchi backup incrementali GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "Gestisce il nuovo formato di backup incrementali GNU"
 
-#: src/tar.c:424
+# (ndt) suggerimenti?
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "Livello di dump per l'archivio a lista incrementale creato"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "Non esce con non-zero quando ci sono file non leggibili"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1504,123 +1507,122 @@ msgstr ""
 "sulla riga di comando o attraverso l'opzione -T; il valore predefinito di "
 "NUMERO è 1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "L'archivio è posizionabile"
 
-#: src/tar.c:436
-#, fuzzy
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr "L'archivio è posizionabile"
+msgstr "L'archivio non è posizionabile"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "Non controlla i numeri del device quando crea archivi incrementali"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "Controlla i numeri del device quando crea archivi incrementali (predefinito)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Controlli di sovrascrittura:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "Tenta di verificare l'archivio dopo averlo scritto"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "Rimuove i file dopo averli aggiunti all'archivio"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "Durante l'estrazione non sovrascrive i file esistenti"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "Non sostituisce i file esistenti più recenti delle copie nell'archivio"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "Sovrascrive i file esistenti durante l'estrazione"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "Rimuove ogni file prima di estrarre su di esso"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "Svuota le directory prima di estrarle"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "Preserva i metadati delle directory esistenti"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "Sovrascrive i metadati delle directory esistenti durante l'estrazione "
 "(predefinito)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Selezione stream di output:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "Estrae i file sullo standard output"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "COMANDO"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "Invia in pipe i file estratti a un altro programma"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "Ignora il codice di uscita dei figli"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "Considera i codici di uscita non-zero come un errore"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Gestione degli attributi dei file:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "Forza NOME come proprietario per i file aggiunti"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "Forza NOME come gruppo per i file aggiunti"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATA-O-FILE"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "Imposta mtime per i file aggiunti da DATA-O-FILE"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "CAMBI"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "Forza il modo CAMBI (simbolico) per i file aggiunti"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METODO"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1630,33 +1632,34 @@ msgstr ""
 "dopo la lettura (METODO=\"replace\"; predefinito) o impostando l'orario "
 "all'inizio (METODO=\"system\")"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "Non estrae l'orario di ultima modifica del file"
 
-#: src/tar.c:504
-#, fuzzy
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
-msgstr "Cerca di estrarre i file con lo stesso proprietario"
+msgstr ""
+"Cerca di estrarre i file con lo stesso proprietario come presente "
+"nell'archivio (predefinito per il super utente)"
 
-#: src/tar.c:506
-#, fuzzy
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
-msgstr "Estrae i file come l'utente attuale"
+msgstr ""
+"Estrae i file come l'utente attuale (predefinito per gli utenti normali)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "Usa sempre i numeri per i nomi di utente/gruppo"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "Estrae informazioni riguardo i permessi dei file (predefinito per il super-"
 "utente)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1664,15 +1667,15 @@ msgstr ""
 "Applica la umask dell'utente nell'estrarre i permessi dall'archivio "
 "(predefinito per gli utenti normali)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "Ordina i nomi da estrarre come nell'archivio"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "Come -p e -s assieme"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1680,139 +1683,139 @@ msgstr ""
 "Ritarda l'impostazione dei tempi di modifica e dei permessi delle directory "
 "estratte al termine dell'estrazione"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "Annulla l'effetto dell'opzione --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Selezione e cambio del device:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIVIO"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "Usa come archivio il file o il dispositivo ARCHIVIO"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "L'archivio è locale anche se contiene \":\""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "Usa il COMANDO rmt indicato invece di rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "Usa il COMANDO remoto invece di rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "Indica drive e densità"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "Crea, elenca, estrae archivi multi-volume"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "Cambia il nastro dopo avere scritto NUMERO × 1024 byte"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "Esegue lo script alla fine di ogni nastro (implica -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "Usa/aggiorna il numero del volume nel FILE"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blocchi del device:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOCCHI"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "Usa record di BLOCCHI × 512 byte"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "NUMERO di byte per record, multiplo di 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "Ignora i blocchi a zero nell'archivio (significa EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "Rifà i blocchi durante la lettura (per le pipe di 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Selezione formato di archiviazione:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMATO"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "Crea archivi nel formato indicato"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMATO è uno dei seguenti:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "Vecchio formato di tar V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "Formato GNU di tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "Formato GNU di tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "Formato POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "Formato POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "Come pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "Come --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "Come --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "PAROLA_CHIAVE[[:]=VALORE][,PAROLA_CHIAVE[[:]=VALORE], ...]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "Controlla le parole chiavi di pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TESTO"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1820,79 +1823,79 @@ msgstr ""
 "Crea l'archivio con TESTO come nome di volume; durante l'elencazione o "
 "l'estrazione, usa TESTO come modello di glob per ogni volume"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Opzioni di compressione:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 "Usa il suffisso dell'archivio per determinare il programma di compressione"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 "Non usa il suffisso dell'archivio per determinare il programma di "
 "compressione"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "Filtra attraverso PROG (deve accettare -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Selezione dei file locali:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr "Aggiunge FILE all'archivio (utile se il nome inizia con un trattino)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "Passa alla directory DIR"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "Prende i nomi da estrarre o creare dal file FILE"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T legge nomi terminati da NULL, disabilita -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "Disabilita l'effetto dell'opzione --null precedente"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "Toglie i caratteri di citazione dai nomi dei file letti con -T (predefinito)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "Non toglie i caratteri di citazione dai nomi dei file letti con -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MODELLO"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "Esclude i file i cui nomi corrispondono a MODELLO"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "Esclude i modelli elencati in FILE"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1900,97 +1903,97 @@ msgstr ""
 "Esclude i contenuti delle directory contenenti CACHEDIR.TAG, a parte il "
 "file .TAG stesso"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "Esclude tutto quanto all'interno di directory contenenti CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "Esclude le directory contenenti CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "Esclude i contenuti delle directory contenenti FILE, a parte FILE stesso "
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "Esclude tutto quanto all'interno di directory contenenti FILE"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "Esclude le directory contenenti FILE"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "Esclude le directory dei sistemi di controllo della versione"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "Esclude i file di backup e di blocco"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "Non entra automaticamente nelle directory"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "Resta nel file system locale durante la creazione dell'archivio"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "Entra ricorsivamente nelle directory (predefinito)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "Non rimuove le \"/\" iniziali dai nomi dei file"
 
 # (ndt) hmmm... non molto chiara...
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "Segue i collegamenti simbolici; archivia ed esegue il dump dei file a cui "
 "puntano"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "Segue i collegamenti fisici; archivia ed esegue il dump dei file a cui si "
 "riferiscono"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NOME"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "Inizia dal membro NOME nell'archivio"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "Archivia solo i file più recenti di DATA-O-FILE"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATA"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "Confronta data e ora solo quando il contenuto è cambiato"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTROLLO"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "Esegue un backup prima di rimuovere, usando il CONTROLLO di versione"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "STRINGA"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1998,103 +2001,102 @@ msgstr ""
 "Esegue un backup prima di rimuovere, sovrascrivendo il suffisso \"~\" a meno "
 "che non sia sovrascritto dalla variabile d'ambiente SIMPLE_BACKUP_SUFFIX"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Trasformazioni dei nomi di file:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 "Toglie NUMERO componenti iniziali dai nomi dei file durante l'estrazione"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "ESPRESSIONE"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 "Usa un'ESPRESSIONE di sostituzione di sed per trasformare i nomi dei file"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Opzioni di corrispondenza del nome del file (vale sia per i modelli di "
 "esclusione che inclusione):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "Non fa differenza tra maiuscole e minuscole"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "I modelli corrispondono all'inizio del nome del file"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 "I modelli corrispondono dopo ogni \"/\" (predefinito per le esclusioni)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "Considera diverse le maiuscole e le minuscole (predefinito)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "Utilizza i metacaratteri (predefinito per le esclusioni)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "Corrispondenza letterale della stringa"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "I metacaratteri non corrispondono \"/\""
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "I metacaratteri corrispondono \"/\" (predefinito per le esclusioni)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Output informativo:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "Elenca prolissamente i file elaborati"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "PAROLACHIAVE"
 
-#: src/tar.c:740
-#, fuzzy
+#: src/tar.c:741
 msgid "warning control"
-msgstr "Controlli di sovrascrittura:"
+msgstr "Controllo di avviso"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "Visualizza un messaggio di avanzamento ogni NUMERO-esimo record (predefinito "
 "10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "AZIONE"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "Esegue l'azione a ogni punto di controllo"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "Stampa un messaggio se non tutti i collegamenti sono archiviati"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SEGNALE"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2106,27 +2108,31 @@ msgstr ""
 "sono: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 e SIGUSR2; sono accettati anche i "
 "nomi senza il prefisso SIG"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
-msgstr "Stampa le date di modifica dei file in formato UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "Stampa le date di modifica del file in formato UTC"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "Stampa la data del file in tutti i suoi dettagli"
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "Invia l'output prolisso al FILE"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "Mostra il numero di blocco nell'archivio con ogni messaggio"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "Chiede conferma per ogni azione"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "Mostra le impostazioni predefinite di tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2134,33 +2140,33 @@ msgstr ""
 "All'elencazione o all'estrazione, elenca ogni directory che non corrisponde "
 "al criterio di ricerca"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "Mostra il nome del file o dell'archivio dopo la trasformazione"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STILE"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "Imposta lo stile di citazione del nome; consultare più sotto per i valori di "
 "STILE consentiti"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "Caratteri di citazione aggiuntivi da STRINGA"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "Disabilita la citazione per i caratteri dalla STRINGA"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Opzioni di compatibilità:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2168,118 +2174,115 @@ msgstr ""
 "Alla creazione, uguale a --old-archive; all'estrazione, uguale a --no-same-"
 "owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Altre opzioni:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "Disabilita l'uso di alcune opzioni potenzialmente dannose"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Non è possibile indicare più di un'opzione \"-Acdtrux\""
+msgstr ""
+"Non è possibile indicare più di un'opzione \"-Acdtrux\" o \"--test-label\""
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Conflitto tra le opzioni di compressione"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Nome del segnale sconosciuto: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "File campione della data non trovato"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Sostituzione di %s al posto del formato di data sconosciuto %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Opzione %s: la data \"%s\" viene considerata come %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: elenco file già letto"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: il nome di file letto contiene un carattere NULL"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "Filtra l'archivio attraverso xz"
+msgstr "Filtra l'archivio attraverso %s"
 
-#: src/tar.c:1290
-#, fuzzy
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
-msgstr "Argomenti validi per le opzioni --quoting-style sono:"
+msgstr "Argomenti validi per l'opzione --quoting-style sono:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 "\n"
-"Questo tar ha le seguenti impostazioni predefinite:\n"
+"Questa versione di tar ha le seguenti impostazioni predefinite:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Fattore del blocco non valido"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Lunghezza del nastro non valida"
 
-#: src/tar.c:1511
-#, fuzzy
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr "Formato file incrementale errato"
+msgstr "Valore del livello incrementale non valido"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Più di una data di soglia"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Valore versione sparsa non valido"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve=\"system\" non è supportato su questa piattaforma"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "Il valore --checkpoint non è un intero"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s: gruppo non valido"
+msgstr "Gruppo non valido"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Modo fornito sull'opzione non valido"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Numero non valido"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Proprietario non valido"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2287,118 +2290,117 @@ msgstr ""
 "L'opzione --preserve è deprecata, usare --preserve-permissions --preserve-"
 "order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Dimensione del record non valida"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "La dimensione del record deve essere un multiplo di %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Numero di elementi non valido"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Consentita solo un'opzione --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Argomento densità non corretto: \"%s\""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Densità sconosciuta: \"%c\""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
-msgstr "Le opzioni \"-[0-7][lmh]\" non sono gestite da questo tar"
+msgstr "Le opzioni \"-[0-7][lmh]\" non sono gestite da questa versione di tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FILE]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "La vecchia opzione \"%c\" richiede un argomento."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence non ha senso senza un elenco di file"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence non può essere usata nel modo di operazioni richiesto"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Archivi multipli richiedono l'opzione \"-M\""
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Impossibile combinare --listed-incremental e --newer"
 
-#: src/tar.c:2387
-#, fuzzy
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "--preserve-order non è compatibile con --listed-incremental"
+msgstr "L'opzione --level non è utilizzabile senza --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: l'etichetta di volume è troppo lunga (il limite è %lu byte)"
 msgstr[1] "%s: l'etichetta di volume è troppo lunga (il limite sono %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Impossibile verificare archivi multi-volume"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Impossibile verificare archivi compressi"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Impossibile usare archivi multi-volume compressi"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Impossibile concatenare archivi compressi"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option può essere usata solo su archivi POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 "La lunghezza del volume non può essere minore della dimensione del record"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order non è compatibile con --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Rifiuto totale di creare un archivio vuoto"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Le opzioni \"-Aru\" sono incompatibili con \"-f -\""
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "È necessario specificare una delle opzioni \"-Acdtrux\""
+msgstr ""
+"È necessario specificare una delle opzioni \"-Acdtrux\" o \"--test-label\""
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Uscita con stato di fallimento in base agli errori precedenti"
@@ -2410,57 +2412,56 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: il file si è ridotto di %s byte"
 msgstr[1] "%s: il file si è ridotto di %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "La parola chiave %s è sconosciuta o non ancora implementata"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "Numero fuori dall'intervallo consentito: %s"
+msgstr "Orario fuori dall'intervallo consentito"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Il modello %s non può essere usato"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "La parola chiave %s non può essere sostituita"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Intestazione estesa malformata: manca la lunghezza"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "La lunghezza intestazione estesa è fuori dall'intervallo consentito"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "La lunghezza dell'intestazione estesa %*s è fuori dall'intervallo"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Intestazione estesa malformata: manca lo spazio dopo la lunghezza"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Intestazione estesa malformata: manca il segno di uguale"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Intestazione estesa malformata: manca un newline"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Parola chiave sconosciuta \"%s\" dell'intestazione estesa ignorata"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2469,28 +2470,28 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "L'intestazione estesa %s=%s è fuori dall'intervallo %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Intestazione estesa malformata: %s=%s non valido"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Intestazione estesa malformata: %s=%s in eccesso"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Intestazione estesa malformata: %s non valido: delimitatore %c non atteso"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2532,7 +2533,7 @@ msgstr "Punto di controllo di scrittura %u"
 msgid "Read checkpoint %u"
 msgstr "Punto di controllo di lettura %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2540,97 +2541,95 @@ msgstr ""
 "genfile manipola i file per la suite di test GNU paxutils.\n"
 "Le opzioni sono:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Opzioni di creazione file:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "DIMENSIONE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Crea file della DIMENSIONE indicata"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Scrive sul file NOME invece dello standard output"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Legge i nomi dei file da FILE"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T legge nomi terminati da NULL"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Riempie il file con il MODELLO fornito. MODELLO è \"default\" o \"zeros\""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Dimensione del blocco per il file sparso"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Genera file sparso. Il resto della riga di comando fornisce la mappa del "
 "file."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "OFFSET"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Si posiziona all'OFFSET indicato prima di scrivere i dati"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Opzioni per le statistiche:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Stampa i contenuti di struct stat per ogni file dato. Il FORMATO predefinito "
 "è:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Opzioni di esecuzione sincrona:"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [OPZIONE...]"
+msgstr "OPZIONE"
 
-#: tests/genfile.c:165
-#, fuzzy
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
-"Esegue il COMANDO dato. Utile con --checkpoint e uno tra --cut, --append, --"
-"touch"
+"Esegue ARGOMENTI. Utile con --checkpoint e uno tra --cut, --append, --touch, "
+"--unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Esegue l'azione indicata (consultare più sotto) al raggiungimento del punto "
 "di controllo NUMERO"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Imposta la data per l'opzione --touch successiva"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 "Visualizza i punti di controllo eseguiti e lo stato di uscita del COMANDO"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2638,7 +2637,7 @@ msgstr ""
 "Azioni di esecuzione sincrona. Queste sono eseguite quando viene raggiunto "
 "il punto di controllo fornito dall'opzione --checkpoint."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2646,85 +2645,85 @@ msgstr ""
 "Tronca il FILE alla dimensione specificata dall'opzione --length precedente "
 "(0 se non viene fornita)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Aggiunge DIMENSIONE byte al FILE. DIMENSIONE è fornita dall'opzione --length "
 "precedente."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Aggiorna l'orario di accesso e modifica del FILE"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Esegue il COMANDO"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "Esegue l'unlink di FILE"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Dimensione non valida: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Numero fuori dall'intervallo consentito: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Dimensione negativa: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) non riuscita"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "lunghezza file richiesta %lu, effettiva %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "il file creato non è sparso"
 
 # (ndt) ?
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Errore nell'analizzare il numero vicino a \"%s\""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Formato data non conosciuto"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGOMENTI...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "impossibile aprire \"%s\""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "impossibile eseguire seek"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "il nome del file contiene caratteri NULL"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
@@ -2732,130 +2731,60 @@ msgstr ""
 "file"
 
 # (ndt) ?
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "maschera non corretta (vicino a \"%s\")"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Campo \"%s\" sconosciuto"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "impossibile impostare l'orario su \"%s\""
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "impossibile aprire \"%s\""
+msgstr "impossibile eseguire l'unlink di %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Comando eseguito con successo\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Comando non riuscito con lo stato %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Comando terminato al segnale %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Comando fermato al segnale %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Il comando ha fatto un dump del core\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Comando terminato\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat richiede i nomi dei file"
 
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s: opzione non lecita -- %c\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to <%s>.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Segnalare i bug a <%s>.\n"
-
-#~ msgid "Reading %s\n"
-#~ msgstr "Lettura di %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Errore irrimediabile: uscita immediata"
-
-#~ msgid "suppress this warning."
-#~ msgstr "per disattivare questo avviso."
-
-#~ msgid "filter the archive through bzip2"
-#~ msgstr "Filtra l'archivio attraverso bzip2"
-
-#~ msgid "filter the archive through gzip"
-#~ msgstr "Filtra l'archivio attraverso gzip"
-
-#~ msgid "filter the archive through compress"
-#~ msgstr "Filtra l'archivio attraverso compress"
-
-#~ msgid "filter the archive through lzma"
-#~ msgstr "Filtra l'archivio attraverso lzma"
-
-#~ msgid "filter the archive through lzop"
-#~ msgstr "Filtra l'archivio attraverso lzop"
-
-#~ msgid "Input string too long"
-#~ msgstr "Stringa di input troppo lunga"
-
-#~ msgid "Number syntax error"
-#~ msgstr "Errore nella sintassi del numero"
-
-#~ msgid "rmtd: Cannot allocate buffer space\n"
-#~ msgstr "rmtd: impossibile allocare spazio per il buffer\n"
-
-#~ msgid "Cannot allocate buffer space"
-#~ msgstr "Impossibile allocare spazio per il buffer"
-
-#~ msgid "Try `%s --help' for more information.\n"
-#~ msgstr "Usare \"%s --help\" per ulteriori informazioni.\n"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]\n"
-#~ "Manipulate a tape drive, accepting commands from a remote process.\n"
-#~ "\n"
-#~ "  --version  Output version info.\n"
-#~ "  --help     Output this help.\n"
-#~ msgstr ""
-#~ "Uso: %s [OPZIONE]\n"
-#~ "Manipola un'unità a nastro accettando comandi da un processo remoto.\n"
-#~ "\n"
-#~ "  --version  Mostra le informazioni sulla versione.\n"
-#~ "  --help     Mostra questo aiuto.\n"
-
-#~ msgid "Seek offset error"
-#~ msgstr "Errore offset di seek"
-
-#~ msgid "Premature end of file"
-#~ msgstr "Prematura fine del file"
-
-#~ msgid "Warning: the -I option is not supported; perhaps you meant -j or -T?"
-#~ msgstr ""
-#~ "Attenzione: l'opzione -I non è supportata; forse si intendeva usare -j o -"
-#~ "T?"
+#~ msgid "Cannot save working directory"
+#~ msgstr "Impossibile salvare la directory di lavoro"
index f4bb6409f3e3486969c1cc6d66173e48b119fd2c..72be44bcb488979c83906998133b1b3b20f65638 100644 (file)
Binary files a/po/ja.gmo and b/po/ja.gmo differ
index 3fac5259e80de4bbec554d2c25c28422de0e1c72..2dc024434ed6ba17433b84267099a31cd01b1c16 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,4 +1,4 @@
-# Japanese messages for GNU tar 1.22.91
+# Japanese messages for GNU tar 1.23.90
 # Copyright (C) 1999, 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
 # Masahito Yamaga <ma@yama-ga.com>, 2010.
@@ -6,14 +6,16 @@
 #              Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 1999-2001.
 #              Masahito Yamaga <yamaga@ipc.chiba-u.ac.jp>, 2007.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU tar 1.22.91\n"
+"Project-Id-Version: GNU tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-13 10:46+0900\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-12 18:03+0900\n"
 "Last-Translator: Masahito Yamaga <ma@yama-ga.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=EUC-JP\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -89,7 +91,7 @@ msgstr "
 msgid "Report bugs to %s.\n"
 msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Þ¤Ç.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "ÉÔÌÀ¤Ê¥·¥¹¥Æ¥à¥¨¥é¡¼"
 
@@ -101,8 +103,8 @@ msgstr "
 msgid "give a short usage message"
 msgstr "û¤¤»ÈÍÑË¡¥á¥Ã¥»¡¼¥¸¤òɽ¼¨"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NAME"
 
@@ -140,56 +142,61 @@ msgstr "(
 msgid "write error"
 msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó '%s' ¤Ï¤¢¤¤¤Þ¤¤¤Ç¤¹\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó '--%s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó '%c%s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: ¥ª¥×¥·¥ç¥ó '%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó '--%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: Ì¤ÃΤΥª¥×¥·¥ç¥ó '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: Ì¤ÃΤΥª¥×¥·¥ç¥ó '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: Ìµ¸ú¤Ê¥ª¥×¥·¥ç¥ó -- '%c'\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹ -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó '-W %s' ¤Ï¤¢¤¤¤Þ¤¤¤Ç¤¹\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó '-W %s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó '-W %s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "¥á¥â¥ê¤ò»È¤¤ÀÚ¤ê¤Þ¤·¤¿"
@@ -533,189 +540,189 @@ msgstr "ɸ
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "%s ¤ËÀܳ¤Ç¤­¤Þ¤»¤ó: Ì¾Á°²ò·è¼ºÇÔ"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "±ó³Ö¥·¥§¥ë¤¬¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "¸¡º÷Êý¸þ¤¬Èϰϳ°"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "̵¸ú¤Ê¸¡º÷Êý¸þ"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "̵¸ú¤Ê¸¡º÷¥ª¥Õ¥»¥Ã¥È"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "¸¡º÷¥ª¥Õ¥»¥Ã¥È¤¬Èϰϳ°"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "̵¸ú¤Ê¥Ð¥¤¥È¿ô"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "¥Ð¥¤¥È¿ô¤¬Èϰϳ°"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "¥Õ¥¡¥¤¥ë¤ÎÅÓÃ潪λ"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "̵¸ú¤ÊÁàºî¥³¡¼¥É"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤Áàºî"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "ͽ´ü¤»¤Ì°ú¿ô"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr "±ó³Ö¥×¥í¥»¥¹¤«¤é¤ÎÌ¿Îá¤ò¼õ¤±ÉÕ¤±¤Æ¥Æ¡¼¥×¥É¥é¥¤¥Ö¤òÁàºî"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NUMBER"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "¥Ç¥Ð¥Ã¥°¥ì¥Ù¥ë¤òÀßÄê"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FILE"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "¥Ç¥Ð¥Ã¥°½ÐÎÏ¥Õ¥¡¥¤¥ë̾¤òÀßÄê"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "%s ¤ò³«¤±¤Þ¤»¤ó"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "ÉÔÍפʥ³¥Þ¥ó¥É"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "¤³¤ì¤Ï tar ¥¢¡¼¥«¥¤¥Ö¤Ç¤Ï¤Ê¤¤¤è¤¦¤Ç¤¹"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Áí½ñ¤­½Ð¤·¥Ð¥¤¥È¿ô"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "ÁíÆɤ߹þ¤ß¥Ð¥¤¥È¿ô"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Áíºï½ü¥Ð¥¤¥È¿ô: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(¥Ñ¥¤¥×)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "record_size ¤¬Ìµ¸ú¤ÊÃͤǤ¹"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "¥¢¡¼¥«¥¤¥Ö̾¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "ɸ½àÆþ½ÐÎϤΥ¢¡¼¥«¥¤¥Ö¤Ï¸¡¾Ú¤Ç¤­¤Þ¤»¤ó"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Ï°µ½Ì¤µ¤ì¤Æ¤¤¤Þ¤¹. %s ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "°µ½Ì¤µ¤ì¤¿¥¢¡¼¥«¥¤¥Ö¤Ï¥¢¥Ã¥×¥Ç¡¼¥È¤Ç¤­¤Þ¤»¤ó"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "¥Æ¡¼¥×¤ÎÀèƬ¤Ç¤¹. ½èÍý¤òÃæ»ß¤·¤Þ¤¹"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "¥¨¥é¡¼¤¬Â¿¤¹¤®¤Þ¤¹. ½èÍý¤òÃæ»ß¤·¤Þ¤¹"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "µ­Ï¿¥µ¥¤¥º = %lu ¥Ö¥í¥Ã¥¯"
 msgstr[1] "µ­Ï¿¥µ¥¤¥º = %lu ¥Ö¥í¥Ã¥¯"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "¥¢¡¼¥«¥¤¥ÖÆâ¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥Ö¥í¥Ã¥¯ (%lu ¥Ð¥¤¥È)"
 msgstr[1] "¥¢¡¼¥«¥¤¥ÖÆâ¤Î¥¢¥é¥¤¥ó¥á¥ó¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥Ö¥í¥Ã¥¯ (%lu ¥Ð¥¤¥È)"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤ò¸å¤íÊý¸þ¤ËÌ᤻¤Þ¤»¤ó. -i ¤Ê¤·¤Ç¤ÏÆɤá¤Ê¤¤¤«¤âÃΤì¤Þ¤»¤ó."
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek ¤òµ­Ï¿¤Î¶­³¦¤Ç»ß¤á¤Þ¤»¤ó"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: Ìµ¸ú¤Ê¥Ü¥ê¥å¡¼¥àÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "¥Ü¥ê¥å¡¼¥àÈֹ椬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "¥Ü¥ê¥å¡¼¥à #%d (%s) ¤ò½àÈ÷¤·¤Þ¤¹. ¥ê¥¿¡¼¥ó¥­¡¼¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "¥æ¡¼¥¶¤¬±þÅú¤¹¤ë EOF ¤¬É¬ÍפȤʤê¤Þ¤¹"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "·Ù¹ð: ¥¢¡¼¥«¥¤¥Ö¤¬ÉÔ´°Á´¤Ç¤¹"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -727,67 +734,67 @@ msgstr ""
 " q             tar ¤ò½ªÎ»\n"
 " y ¤Þ¤¿¤Ï²þ¹Ô  Áàºî¤ò·Ñ³\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             ¥µ¥Ö¥·¥§¥ë¤òµ¯Æ°\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             ¤³¤Î¥ê¥¹¥È¤òɽ¼¨\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "¿·¤·¤¤¥Ü¥ê¥å¡¼¥à¤¬¤¢¤ê¤Þ¤»¤ó. ½ªÎ»¤·¤Þ¤¹.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "¥Õ¥¡¥¤¥ë̾¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó. ¤â¤¦°ìÅÙ.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "ÉÔÀµ¤ÊÆþÎÏ. ? ¤Ç¥Ø¥ë¥×¤òɽ¼¨\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s ¥³¥Þ¥ó¥É¤¬¼ºÇÔ¤·¤Þ¤·¤¿"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s ¤Ï¤³¤Î¥Ü¥ê¥å¡¼¥à¾å¤Ç¤ª¤½¤é¤¯Ï¢Â³¤·¤Æ¤¤¤Þ¤¹: ¥Ø¥Ã¥À¤Ï¾Êά¤µ¤ì¤¿Ì¾Á°¤ò´Þ¤ó¤Ç"
 "¤¤¤Þ¤¹"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s ¤Ï¤³¤Î¥Ü¥ê¥å¡¼¥à¾å¤ÇϢ³¤·¤Æ¤¤¤Þ¤»¤ó"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s ¤ÏÉÔÀµ¤Ê¥µ¥¤¥º¤Ç¤¹ (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "¤³¤Î¥Ü¥ê¥å¡¼¥à¤ÏϢ³¤·¤Æ¤¤¤Þ¤»¤ó (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Ï %s ¤Ë°ìÃפ¹¤ë¥é¥Ù¥ë¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤»¤ó"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "¥Ü¥ê¥å¡¼¥à %s ¤Ï %s ¤Ë°ìÃפ·¤Þ¤»¤ó"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -795,7 +802,7 @@ msgstr ""
 "%s: ¥Õ¥¡¥¤¥ë̾¤¬Ä¹²á¤®¤Æ GNU ¥Þ¥ë¥Á¥Ü¥ê¥å¡¼¥à¥Ø¥Ã¥À¤ËÊݸ¤Ç¤­¤Ê¤¤¤Î¤ÇÀÚ¤ê¼Î¤Æ"
 "¤Þ¤¹"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "½ñ¤­¹þ¤ß¤¬¥Ö¥í¥Ã¥¯¶­³¦¤Ç½ª¤ï¤Ã¤Æ¤¤¤Þ¤»¤ó"
 
@@ -806,20 +813,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "%lu ¥Ð¥¤¥È¤À¤±¤ò %lu ¥Ð¥¤¥È¤«¤éÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿"
 msgstr[1] "%lu ¥Ð¥¤¥È¤À¤±¤ò %lu ¥Ð¥¤¥È¤«¤éÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "ÆâÍƤ¬°Û¤Ê¤ê¤Þ¤¹"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "¥¢¡¼¥«¥¤¥ÖÃæ¤Ëͽ´ü¤»¤Ì EOF ¤¬¤¢¤ê¤Þ¤¹"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤¬°Û¤Ê¤ê¤Þ¤¹"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "¥â¡¼¥É¤¬°Û¤Ê¤ê¤Þ¤¹"
 
@@ -835,143 +842,143 @@ msgstr "
 msgid "Mod time differs"
 msgstr "ºÇ½ª½¤Àµ»þ¹ï¤¬°Û¤Ê¤ê¤Þ¤¹"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "¥µ¥¤¥º¤¬°Û¤Ê¤ê¤Þ¤¹"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "%s ¤Ë¥ê¥ó¥¯¤·¤Æ¤¤¤Þ¤»¤ó"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬°Û¤Ê¤ê¤Þ¤¹"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "¥Ç¥Ð¥¤¥¹Èֹ椬°ã¤¤¤Þ¤¹"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "¸¡¾Ú"
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Ì¤ÃΤΥե¡¥¤¥ë¥¿¥¤¥× `%c', Ä̾ï¥Õ¥¡¥¤¥ë¤Èº¹Ê¬¤ò¼è¤ê¤Þ¤¹"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "¥¢¡¼¥«¥¤¥ÖÃæ¤ËÀÜƬ¼­¤¬ºï½ü¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤¬¤¢¤ê¤Þ¤¹."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "¸µ¤Î¥Õ¥¡¥¤¥ë¤Î½êºß³Îǧ¤Ë¼ºÇÔ¤·¤¿²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "³Îǧ¼ºÇÔ: %d ¸Ä¤Î̵¸ú¤Ê¥Ø¥Ã¥À¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿"
 msgstr[1] "³Îǧ¼ºÇÔ: %d ¸Ä¤Î̵¸ú¤Ê¥Ø¥Ã¥À¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
-msgstr "%s ¤ËŤ¤¥¼¥í¥Ö¥í¥Ã¥¯"
+msgstr "%s ¤Ë¸ÉΩ¤·¤¿¥¼¥í¥Ö¥í¥Ã¥¯"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: ¥­¥ã¥Ã¥·¥å ¥Ç¥£¥ì¥¯¥È¥ê ¥¿¥° %s ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "ÃÍ %s ¤Ï %s ¤ÎÈÏ°Ï %s..%s ¤Ë¤¢¤ê¤Þ¤»¤ó -- %s ¤òÂåÍÑ"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "ÃÍ %s ¤Ï %s ¤ÎÈÏ°Ï %s..%s ¤Ë¤¢¤ê¤Þ¤»¤ó"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Éé¤Î 8 ¿Ê¥Ø¥Ã¥À¤òÀ¸À®¤·¤Þ¤¹"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: ¥Õ¥¡¥¤¥ë̾¤¬Ä¹²á¤®¤ë (ºÇÂç %d) ¤Î¤Ç¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: ¥Õ¥¡¥¤¥ë̾¤¬Ä¹²á¤®¤ë (ʬ³äÉÔǽ) ¤Î¤Ç¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: ¥ê¥ó¥¯Ì¾¤¬Ä¹²á¤®¤ë¤Î¤Ç¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: %s ¥Ð¥¤¥È¾®¤µ¤¯¤Ê¤Ã¤¿¤Î¤Ç¡¢¥¼¥í¤ÇËä¤á¤Þ¤¹"
 msgstr[1] "%s: %s ¥Ð¥¤¥È¾®¤µ¤¯¤Ê¤Ã¤¿¤Î¤Ç¡¢¥¼¥í¤ÇËä¤á¤Þ¤¹"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: ¥Õ¥¡¥¤¥ë¤Ï°Û¤Ê¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤Ë¤¢¤ë¤Î¤Ç¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "ÆâÍƤò¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Ì¤ÃΤΥե¡¥¤¥ë·Á¼°; ¥Õ¥¡¥¤¥ë¤Ï̵»ë¤µ¤ì¤Þ¤¹"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "%s ¤Ø¤Î¥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤»¤ó."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: Êѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: ¤Ï¥¢¡¼¥«¥¤¥Ö¤Ê¤Î¤Ç¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "¥Ç¥£¥ì¥¯¥È¥ê¤ò¥À¥ó¥×¤·¤Þ¤»¤ó"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: Æɤ߹þ¤ó¤À¥Õ¥¡¥¤¥ë¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: ¥½¥±¥Ã¥È¤Ï̵»ë¤·¤Þ¤¹"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door ¤Ï̵»ë¤·¤Þ¤¹"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "¼¡¤Î¥Ø¥Ã¥À¤ò¥¹¥­¥Ã¥×¤·¤Þ¤¹"
 
@@ -979,74 +986,74 @@ msgstr "
 msgid "Deleting non-header from archive"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤«¤é¥Ø¥Ã¥À¤Ç¤Ê¤¤¤â¤Î¤òºï½ü¤·¤Þ¤¹"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: ¶²¤é¤¯¸Å¤¤¥¿¥¤¥à¥¹¥¿¥ó¥× %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: ¥¿¥¤¥à¥¹¥¿¥ó¥× %s ¤Ï %s ÉÃÀè¤ò¼¨¤·¤Æ¤¤¤Þ¤¹"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥êºîÀ®»þ¤ËÉÔ¬¤ÎÌ·½â¤¬µ¯¤³¤ê¤Þ¤·¤¿"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê¤Ï¾õÂÖ¤òŸ³«¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ëÁ°¤Ë̾Á°¤òÊѹ¹¤µ¤ì¤Þ¤·¤¿"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Ϣ³¤·¤¿¥Õ¥¡¥¤¥ë¤òÀµ¾ï¤Ê¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼è¤ê½Ð¤·¤Þ¤¹"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò¥Ï¡¼¥É¥ê¥ó¥¯¤È¤·¤Æ¼è¤ê½Ð¤·¤Æ¤ß¤Þ¤¹"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: ¼è¤ê½Ð¤»¤Þ¤»¤ó -- ¥Õ¥¡¥¤¥ë¤ÏÊ̤Υܥê¥å¡¼¥à¤«¤é³¤¤¤Æ¤¤¤Þ¤¹"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "ͽ´ü¤»¤ÌŤ¤Ì¾Á°¥Ø¥Ã¥À"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Ì¤ÃΤΥե¡¥¤¥ë¥¿¥¤¥× '%c', Ä̾ï¥Õ¥¡¥¤¥ë¤È¤·¤ÆÃê½Ð"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "¸½ºß¤Î %s ¤ÎÊý¤¬¿·¤·¤¤¤«Æ±¤¸"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: ¤³¤Î¥Õ¥¡¥¤¥ë¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼è¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s ¤Î̾Á°¤ò %s ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê̾¤¬ %s ¤«¤éÊѹ¹¤µ¤ì¤Þ¤·¤¿"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê̾¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê¤Ï¿·¤·¤¯ºî¤é¤ì¤Þ¤·¤¿"
@@ -1156,175 +1163,177 @@ msgstr "%s: %s 
 msgid "%s: Cannot remove"
 msgstr "%s: ºï½ü¤Ç¤­¤Þ¤»¤ó"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: ¾Êά¤·¤Þ¤¹"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "¥Ö¥í¥Ã¥¯ %s: ** NUL ¤Î¥Ö¥í¥Ã¥¯ **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "¥Ö¥í¥Ã¥¯ %s: ** ¥Õ¥¡¥¤¥ë¤Î½ªÃ¼ **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "¥Ö¥í¥Ã¥¯ %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "¿ôÃÍ %s ¤È¤Ê¤ë¤Ù¤­¥Ø¥Ã¥À°ÌÃÖ¤¬¶õ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr "8 ¿Ê¿ôÃÍ %.*s ¤Ï %s ¤ÎÈϰϳ°¤Ç¤¹ -- 2 ¤ÎÊä¿ô¤È¸«¤Ê¤·¤Þ¤¹"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "8 ¿Ê¿ôÃÍ %.*s ¤Ï %s ¤ÎÈϰϳ°¤Ç¤¹"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤ËÇѤ줿 base-64 ¥Ø¥Ã¥À¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Éä¹æÉÕ¤­ base-64 Ê¸»úÎó %s ¤Ï %s ¤ÎÈϰϳ°¤Ç¤¹"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "base-256 ÃͤϠ%s ¤ÎÈϰϳ°¤Ç¤¹"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Ë %.*s ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤³¤Ï¿ôÃÍ %s ¤È¤Ê¤ë¤Ï¤º¤Ç¤¹"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤ÎÃÍ %s ¤Ï %s ¤ÎÈÏ°Ï %s..%s Æâ¤Ë¤¢¤ê¤Þ¤»¤ó"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " %s ¤Ø¤Î¥ê¥ó¥¯\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " ÉÔÌÀ¤Ê¥Õ¥¡¥¤¥ë¥¿¥¤¥× %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Ť¤¥ê¥ó¥¯--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Ť¤Ì¾Á°--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--¥Ü¥ê¥å¡¼¥à¥Ø¥Ã¥À--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--¥Ð¥¤¥È %s ¤ÇϢ³--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "¥ï¡¼¥¯¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "̾Á°¤ò %s ¤«¤é %s ¤ËÊѹ¹¤·¤Þ¤¹\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Ì¾Á°¤ò %s ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "̾Á°¤ò %s ¤«¤é %s ¤ËÌᤷ¤Þ¤¹\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "¥ï¡¼¥¯¥Ç¥£¥ì¥¯¥È¥ê¤òÊݸ¤Ç¤­¤Þ¤»¤ó"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "¥ï¡¼¥¯¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Æɤ߹þ¤ß°ÊÁ°¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Æɤ߹þ¤ßÁ°¤Ëºï½ü¤µ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "»Ò¥×¥í¥»¥¹"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "¥×¥í¥»¥¹´Ö¥Á¥ã¥Í¥ë"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¤Îʸ»ú¤¬¥Õ¥¡¥¤¥ë̾¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹."
+msgstr "¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¤Îʸ»ú¤¬¥Õ¥¡¥¤¥ë̾¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "--wildcards ¤Ç¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¤òÍ­¸ú¤Ë, ¤Þ¤¿ --no-wildcards ¤Ç"
+msgstr ""
+"¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¤òÍ­¸ú¤Ë¤¹¤ë¤Ê¤é --wildcards, ¤³¤Î·Ù¹ð¤òÍ޻ߤ¹¤ë¤Ê¤é --no-"
+"wildcards ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: ¥¢¡¼¥«¥¤¥ÖÆâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: ¥¢¡¼¥«¥¤¥ÖÆâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "¥¢¡¼¥«¥¤¥Ö¥é¥Ù¥ë¤¬°ìÃפ·¤Þ¤»¤ó"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "¥Õ¥¡¥¤¥ë¥ê¥¹¥ÈÆâ¤Ç -C ¥ª¥×¥·¥ç¥ó¤Ï --listed-incremental ¤È°ì½ï¤Ë»È¤¨¤Þ¤»¤ó"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "-C ¥ª¥×¥·¥ç¥ó¤Ï 1¤Ä¤À¤±¤Ê¤é --listed-incremental ¤È°ì½ï¤Ë»È¤¨¤Þ¤¹"
 
@@ -1348,7 +1357,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr "ÉÔÌÀ¤Ê°úÍÑ·Á¼° `%s', `%s --quoting-style=help' ¤Ç°ìÍ÷ɽ¼¨."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1367,7 +1376,7 @@ msgstr ""
 "  tar -tvf archive.tar         # archive.tar Æâ¤ÎÁ´¥Õ¥¡¥¤¥ë¤ò¾Ü¤·¤¯°ìÍ÷ɽ¼¨\n"
 "  tar -xf archive.tar          # archive.tar ¤«¤éÁ´¥Õ¥¡¥¤¥ë¤ò¼è¤ê½Ð¤¹\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1388,79 +1397,79 @@ msgstr ""
 "                  ¤½¤¦¤Ç¤Ê¤±¤ì¤Ðñ¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼è¤ë\n"
 "  never, simple   ¾ï¤Ëñ½ã¤Ê¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼è¤ë\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "¼çÁàºî¥â¡¼¥É:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤ÎÆâÍƤò°ìÍ÷ɽ¼¨"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤«¤é¥Õ¥¡¥¤¥ë¤òÃê½Ð"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "¿·¤·¤¤¥¢¡¼¥«¥¤¥Ö¤òºîÀ®"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤È¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤È¤Î°ã¤¤¤ò¸«ÉÕ¤±¤ë"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤ÎËöÈø¤Ë¥Õ¥¡¥¤¥ë¤òÄɲÃ"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "¥¢¡¼¥«¥¤¥ÖÆâ¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤è¤ê¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î¤ß¤òÄɲÃ"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Ë tar ¥Õ¥¡¥¤¥ë¤òÄɲÃ"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤«¤éºï½ü (¼§µ¤¥Æ¡¼¥×¾å¤Ç¤Ï¥À¥á!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Î¥Ü¥ê¥å¡¼¥à¥é¥Ù¥ë¤ò¥Æ¥¹¥È¤·¤Æ½ªÎ»"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Áàºî¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ëÉղõ¡Ç½:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "¤Þ¤Ð¤é¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¸ú²ÌŪ¤Ë½èÍý"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "¤Þ¤Ð¤é (sparse) ·Á¼°¤Î¥Ð¡¼¥¸¥ç¥ó¤òÀßÄê (--sparse ¤Î°ÕÌ£¤ò´Þ¤à)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "¸Å¤¤ GNU ·Á¼°¤Î¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò½èÍý"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "¿·¤·¤¤ GNU ·Á¼°¤Î¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò½èÍý"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "ºî¤é¤ì¤¿ listed-incremental ¥¢¡¼¥«¥¤¥Ö¤ËÂФ¹¤ë¥À¥ó¥×¥ì¥Ù¥ë"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "Æɤ߹þ¤á¤Ê¤¤¥Õ¥¡¥¤¥ë¾å¤ËÈó¥¼¥í¤Î¾õÂ֤Ǹºß¤·¤Þ¤»¤ó"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1472,119 +1481,119 @@ msgstr ""
 "¥Õ¥¡¥¤¥ë°ìÍ÷¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤« -T ¥ª¥×¥·¥ç¥ó·Ðͳ¤Î¤É¤Á¤é¤«¤Ç»ØÄꤵ¤ì¤¿¾ì¹ç¤Î"
 "¤ßÍ­¸ú. NUMBER ¤Ïɸ½à¤Ç 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Ï¸¡º÷²Äǽ"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤Ï¸¡º÷²Äǽ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¥¢¡¼¥«¥¤¥ÖºîÀ®»þ¤Ë¥Ç¥Ð¥¤¥¹ÈÖ¹æ¤ò¥Á¥§¥Ã¥¯¤·¤Ê¤¤"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr "¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¥¢¡¼¥«¥¤¥ÖºîÀ®»þ¤Ë¥Ç¥Ð¥¤¥¹ÈÖ¹æ¤ò¥Á¥§¥Ã¥¯¤¹¤ë (ɸ½à)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "À©¸æ¤ò¾å½ñ¤­:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤ò½ñ¤­½Ð¤·¤¿¸å¤Ë¸¡¾Ú"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "¥Õ¥¡¥¤¥ë¤ò¥¢¡¼¥«¥¤¥Ö¤Ë²Ã¤¨¤¿¸å¤Çºï½ü"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "¼è¤ê½Ð¤¹ºÝ¤Ë´û¸¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤­´¹¤¨¤Ê¤¤"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "¥¢¡¼¥«¥¤¥Ö¥³¥Ô¡¼¤è¤ê¿·¤·¤¤´û¸¥Õ¥¡¥¤¥ë¤òÃÖ¤­´¹¤¨¤Ê¤¤"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "¼è¤ê½Ð¤¹ºÝ¤Ë´û¸¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "³Æ¡¹¤Î¥Õ¥¡¥¤¥ë¤ò¼è¤ê½Ð¤·¤Æ¾å½ñ¤­¤¹¤ëÁ°¤Ëºï½ü"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "¥Ç¥£¥ì¥¯¥È¥ê¤ò¼è¤ê½Ð¤¹Á°¤Ë³¬Áؤò¶õ¤Ë"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "´û¸¥Ç¥£¥ì¥¯¥È¥ê¤Î¥á¥¿¥Ç¡¼¥¿¤òÊݸ"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "¼è¤ê½Ð¤¹ºÝ¤Ë´û¸¥Ç¥£¥ì¥¯¥È¥ê¤Î¥á¥¿¥Ç¡¼¥¿¤ò¾å½ñ¤­ (ɸ½à)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "½ÐÎÏ¥¹¥È¥ê¡¼¥à¤òÁªÂò"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "¥Õ¥¡¥¤¥ë¤ò¼è¤ê½Ð¤·¤Æɸ½à½ÐÎϤ˽ÐÎÏ"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "COMMAND"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "¥Õ¥¡¥¤¥ë¤ò¼è¤ê½Ð¤·¤ÆÊÌ¤Î¥×¥í¥°¥é¥à¤Ë½ÐÎÏ"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "»Ò¥×¥í¥»¥¹¤Î½ªÎ»¥³¡¼¥É¤ò̵»ë"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "»Ò¥×¥í¥»¥¹¤ÎÈó¥¼¥í½ªÎ»¥³¡¼¥É¤ò¥¨¥é¡¼¤È¤·¤Æ½èÍý"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "¥Õ¥¡¥¤¥ë°À­¤Î½èÍý"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "²Ã¤¨¤¿¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô¤ò NAME ¤ËÊѹ¹"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "²Ã¤¨¤¿¥Õ¥¡¥¤¥ë¤Î¥°¥ë¡¼¥×¤ò NAME ¤ËÊѹ¹"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATE-OR-FILE"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "DATE-OR-FILE ¤«¤éÄɲåե¡¥¤¥ë¤Î mtime ¤òÀßÄê"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "CHANGES"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "²Ã¤¨¤¿¥Õ¥¡¥¤¥ë¤Î (¥·¥ó¥Ü¥ê¥Ã¥¯) ¥â¡¼¥É¤ò CHANGES ¤ËÊѹ¹"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METHOD"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1593,11 +1602,11 @@ msgstr ""
 "ºÇ½ª¥¢¥¯¥»¥¹»þ¹ï¤ò, Æɤ߹þ¤ß¸å¤ËÉü¸µ¤¹¤ë (METHOD='replace'; É¸½à) ¤«ºÇ½é¤ËÀß"
 "Äꤷ¤Ê¤¤ (METHOD='system') ¤«¤Î¤É¤Á¤é¤«¤ÎÊýË¡¤Ç¥À¥ó¥×¥Õ¥¡¥¤¥ë¾å¤Ç°Ý»ý"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "¥Õ¥¡¥¤¥ë¤Î¹¹¿·»þ¹ï¤ò¼è¤ê½Ð¤µ¤Ê¤¤"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1605,173 +1614,173 @@ msgstr ""
 "¥¢¡¼¥«¥¤¥ÖÆâ¤ÈƱ¤¸½êÍ­¼Ô¤Î¤Þ¤Þ¤Ç¥Õ¥¡¥¤¥ë¤ò¼è¤ê½Ð¤·¤Æ¤ß¤ë (¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Ç¤Ï"
 "¥Ç¥Õ¥©¥ë¥È)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "¤¢¤Ê¤¿¼«¿È¤Î¥Õ¥¡¥¤¥ë¤È¤·¤Æ¼è¤ê½Ð¤¹ (°ìÈ̥桼¥¶¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "¥æ¡¼¥¶Ì¾/¥°¥ë¡¼¥×̾¤È¤·¤Æ¾ï¤Ë¿ô»ú¤ò»È¤¦"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "¥Õ¥¡¥¤¥ë°À­¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÃê½Ð (superuser ¤Ç¤Ïɸ½à)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 "¥¢¡¼¥«¥¤¥Ö¤«¤é°À­¤òÃê½Ð¤¹¤ëºÝ¤Ë¥æ¡¼¥¶¤Î umask ¤òŬÍÑ (°ìÈ̥桼¥¶¤Ç¤Ïɸ½à)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "¥¢¡¼¥«¥¤¥Ö¤È¥Þ¥Ã¥Á¤µ¤»¤ë¤¿¤á¤Ë¼è¤ê½Ð¤¹Ì¾Á°¤òʤÓÂؤ¨"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "-p ¤È -s ¤ÎξÊý¤ò»ØÄꤷ¤¿¤â¤Î¤ÈƱ¤¸"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 "Ãê½Ð¤¬½ªÎ»¤¹¤ë¤Þ¤ÇÃê½Ð¤µ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ÎºÇ½ª¹¹¿·»þ¹ï¤È°À­¤ÎÀßÄê¤òÃ٤餻¤ë"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "--delay-directory-restore ¥ª¥×¥·¥ç¥ó¤Î¸ú²Ì¤ò¼è¤ê¾Ã¤·"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "¥Ç¥Ð¥¤¥¹¤ÎÁªÂò¤ÈÀÚÂØ:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIVE"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥Ð¥¤¥¹ ARCHIVE ¤ò»ÈÍÑ"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤Ï¥³¥í¥ó¤ò´Þ¤ó¤Ç¤¤¤Æ¤â¥í¡¼¥«¥ë"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "»ØÄꤵ¤ì¤¿ rmt COMMAND ¤ò rmt ¤ÎÂå¤ï¤ê¤Ë»ÈÍÑ"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "rsh ¤ÎÂå¤ï¤ê¤Ë COMMAND ¤ò»ÈÍÑ"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "¥É¥é¥¤¥Ö¤ÈÌ©ÅÙ¤ò»ØÄê"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "¥Þ¥ë¥Á¥Ü¥ê¥å¡¼¥à¤Î¥¢¡¼¥«¥¤¥Ö¤òºîÀ®/°ìÍ÷/Ãê½Ð"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "NUMBER x 1024 ¥Ð¥¤¥È¤ò½ñ¤­½Ð¤·¤¿¸å¤Ç¥Æ¡¼¥×¤òÊѹ¹"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "³Æ¡¹¤Î¥Æ¡¼¥×¤ÎºÇ¸å¤Ç¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô (-M É¬¿Ü)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "FILE Ãæ¤Î¥Ü¥ê¥å¡¼¥àÈÖ¹æ¤ò»ÈÍÑ/¹¹¿·"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "¥Ç¥Ð¥¤¥¹¥Ö¥í¥Ã¥­¥ó¥°:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOCKS"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "¥ì¥³¡¼¥É¤¢¤¿¤ê BLOCKS x 512 ¥Ð¥¤¥È"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "¥ì¥³¡¼¥É¤¢¤¿¤ê NUMBER ¥Ð¥¤¥È. 512 ¤ÎÇÜ¿ô"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "¥¢¡¼¥«¥¤¥ÖÃæ¤Î¥¼¥í¥Ö¥í¥Ã¥¯ (¤Ä¤Þ¤ê EOF) ¤ò̵»ë"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "Æɤ߽Ф·¤¿¤è¤¦¤ËºÆ¥Ö¥í¥Ã¥¯ (4.2BSD ¥Ñ¥¤¥×ÍÑ)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "¥¢¡¼¥«¥¤¥Ö·Á¼°¤ÎÁªÂò"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "»ØÄꤵ¤ì¤¿·Á¼°¤Î¥¢¡¼¥«¥¤¥Ö¤òºîÀ®"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT ¤Ï¼¡¤Î¤¦¤Á¤Î 1¤Ä:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "¸Å¤¤ V7 tar ·Á¼°"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU tar 1.12 °ÊÁ°¤Î·Á¼°"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x ·Á¼°"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) ·Á¼°"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) ·Á¼°"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "pax ¤ÈƱ¤¸"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "--format=v7 ¤ÈƱ¤¸"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "--format=posix ¤ÈƱ¤¸"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "keyword[[:]=value][,keyword[[:]=value]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "pax ¥­¡¼¥ï¡¼¥É¤òÀ©¸æ"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXT"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1779,167 +1788,167 @@ msgstr ""
 "¥Ü¥ê¥å¡¼¥à̾ TEXT ¤Î¥¢¡¼¥«¥¤¥Ö¤òºîÀ®. °ìÍ÷/Ãê½Ð»þ¤Ë TEXT ¤ò¥Ü¥ê¥å¡¼¥à̾¤ËÂФ¹"
 "¤ëÃê½Ð¥Ñ¥¿¡¼¥ó¤Ë»ÈÍÑ"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "°µ½Ì¥ª¥×¥·¥ç¥ó:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "°µ½Ì¥×¥í¥°¥é¥à¤ò·è¤á¤ë¤Î¤Ë¥¢¡¼¥«¥¤¥ÖÀÜÈø¼­¤ò»ÈÍѤ¹¤ë"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "°µ½Ì¥×¥í¥°¥é¥à¤ò·è¤á¤ë¤Î¤Ë¥¢¡¼¥«¥¤¥ÖÀÜÈø¼­¤ò»ÈÍѤ·¤Ê¤¤"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "PROG ·Ðͳ¤Ç¥Õ¥£¥ë¥¿ (-d ¤ò¼õ¤±ÉÕ¤±¤ëɬÍפ¢¤ê)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ëÁªÂò:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "»ØÄꤵ¤ì¤¿ FILE ¤ò¥¢¡¼¥«¥¤¥Ö¤ËÄɲà(¥À¥Ã¥·¥å ' ¤Ç»Ï¤Þ¤ë¥Õ¥¡¥¤¥ë̾¤Î¾ì¹ç¤ËÊØ"
 "Íø)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "¥Ç¥£¥ì¥¯¥È¥ê DIR ¤Ø°ÜÆ°"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "Ãê½Ð¤Þ¤¿¤ÏºîÀ®¤¹¤ë̾Á°¤ò¥Õ¥¡¥¤¥ë FILE ¤«¤é¼èÆÀ"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T ¤¬ null ¤Ç½ª¤ï¤ë̾Á°¤òÆɤ߹þ¤ß, -C ¤ò̵¸ú²½"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "Á°¤Î --null ¥ª¥×¥·¥ç¥ó¤Î¸ú²Ì¤ò̵¸ú²½"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "-T ¤ÇÆɤ߹þ¤ó¤À¥Õ¥¡¥¤¥ë̾¤ò°úÍѽªÎ»¤¹¤ë (ɸ½à)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "-T ¤ÇÆɤ߹þ¤ó¤¿¥Õ¥¡¥¤¥ë̾¤ò°úÍѽªÎ»¤·¤Ê¤¤"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATTERN"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "PATTERN ¤Ë°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë¤ò½ü³°"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "FILE ¤ËÎóµó¤µ¤ì¤¿¥Ñ¥¿¡¼¥ó¤ò½ü³°"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "¥¿¥°¥Õ¥¡¥¤¥ë¼«¿È¤ò½ü¤¯ CACHEDIR.TAG ¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ÎÆâÍƤò½ü³°"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "CACHEDIR.TAG ¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤ÎÁ´¤Æ¤ò½ü³°"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "CACHEDIR.TAG ¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ò½ü³°"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "FILE ¼«¿È¤ò½ü¤¯ FILE ¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ÎÆâÍƤò½ü³°"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "FILE ¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤ÎÁ´¤Æ¤ò½ü³°"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "FILE ¤ò´Þ¤à¥Ç¥£¥ì¥¯¥È¥ê¤ò½ü³°"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò½ü³°"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò½ü³°¤·¤Æ¥Õ¥¡¥¤¥ë¤ò¥í¥Ã¥¯"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "¥Ç¥£¥ì¥¯¥È¥ê¤ò¼«Æ°Åª¤Ë²¼¤Ã¤Æ¤¤¤«¤Ê¤¤"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "¥¢¡¼¥«¥¤¥ÖºîÀ®»þ¤Ë¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¸ÂÄê"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "¥Ç¥£¥ì¥¯¥È¥ê¤ò½ç·«¤ê¤Ë²¼¤Ã¤Æ¤¤¤¯ (default)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "¥Õ¥¡¥¤¥ë̾¤«¤éÀèƬ¤Î `/' ¤ò¼è¤ê½ü¤«¤Ê¤¤"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò¤¿¤É¤ë; ¤½¤ì¤é¤¬»Ø¤¹¥Õ¥¡¥¤¥ë¤ò¥¢¡¼¥«¥¤¥Ö¤·¤Æ¥À¥ó¥×"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "¥Ï¡¼¥É¥ê¥ó¥¯¤ò¤¿¤É¤ë; ¤½¤ì¤é¤¬»Ø¤¹¥Õ¥¡¥¤¥ë¤ò¥¢¡¼¥«¥¤¥Ö¤·¤Æ¥À¥ó¥×"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "MEMBER-NAME"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "¥¢¡¼¥«¥¤¥ÖÃæ¤Î¥á¥ó¥Ð¡¼ MEMBER-NAME ¤Ç³«»Ï"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "DATE-OR-FILE ¤è¤ë¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î¤ß¤ò³ÊǼ"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATE"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "¥Ç¡¼¥¿¤¬Êѹ¹¤µ¤ì¤¿»þ¤À¤±ÆüÉÕ¤ª¤è¤Ó»þ¹ï¤òÈæ³Ó"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "ºï½üÁ°¤Ë¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤ò CONTROL ¤Ë¤·¤Æ¥Ð¥Ã¥¯¥¢¥Ã¥×"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "STRING"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1947,95 +1956,95 @@ msgstr ""
 "ºï½üÁ°¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×, Ä̾ï¤ÎÀÜÈø¼­ (´Ä¶­ÊÑ¿ô SIMPLE_BACKUP_SUFFIX ¤¬Ì¤ÀßÄê¤Ê"
 "¤é '~') ¤ò¾å½ñ¤­"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "¥Õ¥¡¥¤¥ë̾ÊÑ´¹:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "Ãê½Ð»þ¤Ë¥Õ¥¡¥¤¥ë̾¤«¤éÀèƬ¤Î NUMER ¸Ä¤Î¥³¥ó¥Ý¥Í¥ó¥È¤ò½üµî"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "EXPRESSION"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "¥Õ¥¡¥¤¥ë̾¤ÎÊÑ´¹¤Ë sed ¤ÎÃÖ´¹ EXPRESSION ¤ò»ÈÍÑ"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr "¥Õ¥¡¥¤¥ë̾°ìÃ×¥ª¥×¥·¥ç¥ó (½ü³°/Êñ´Þ¤Îξ¥Ñ¥¿¡¼¥ó¤ËºîÍÑ):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "Âçʸ»ú¾®Ê¸»ú¤ò̵»ë"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "¥Õ¥¡¥¤¥ë̾¤ÎÀèƬ¤È¥Ñ¥¿¡¼¥ó¤¬°ìÃ×"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "Ǥ°Õ¤Î `/' °Ê¹ß¤Ë¥Ñ¥¿¡¼¥ó¤¬°ìÃ× (ɸ½à¤Ç½ü³°)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "Âçʸ»ú¾®Ê¸»ú¤ò¹Íθ¤·¤Æ°ìÃ× (ɸ½à)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "¥ï¥¤¥ë¥É¥«¡¼¥É¤ò»ÈÍÑ (ɸ½à¤Ç½ü³°)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "Ãà¸ìŪʸ»úÎó°ìÃ×"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "¥ï¥¤¥ë¥É¥«¡¼¥É¤¬ `/' ¤Ë°ìÃפ·¤Ê¤¤"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "¥ï¥¤¥ë¥É¥«¡¼¥É¤¬ `/' ¤Ë°ìÃ× (ɸ½à¤Ç½ü³°)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "¾ðÊó:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "½èÍý¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î°ìÍ÷¤ò¾éŤËɽ¼¨"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "KEYWORD"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "·Ù²ü´ÉÀ©"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "NUMBER (ɸ½à 10) ÈÖÌܤε­Ï¿¤´¤È¤Ë¿ÊĽ¥á¥Ã¥»¡¼¥¸¤òɽ¼¨"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ACTION"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "³Æ¸¡Ìä¤Ç ACTION ¤ò¼Â¹Ô"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "Á´¤Æ¤Î¥ê¥ó¥¯¤¬¥À¥ó¥×¤µ¤ì¤Ê¤¤¾ì¹ç¥á¥Ã¥»¡¼¥¸¤òɽ¼¨"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2046,120 +2055,124 @@ msgstr ""
 "»þ¤ËÁí¥Ð¥¤¥È¿ô¤òɽ¼¨. µö²Ä¤µ¤ì¤¿ SIGNAL ¤Ï: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 "
 "¤ª¤è¤Ó SIGUSR2. SIG ÀÜƬ¼­¤¬¤Ê¤¤Ì¾Á°¤Ç¤â²Ä"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
-msgstr "¥Õ¥¡¥¤¥ë¤Î¹¹¿·ÆüÉÕ¤ò UTC ¤Çɽ¼¨"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "¥Õ¥¡¥¤¥ë¤Î¹¹¿·»þ¹ï¤ò UTC ¤Çɽ¼¨"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "¥Õ¥¡¥¤¥ë¤Î»þ¹ï¾ðÊó¤ò´°Á´·Á¼°¤Çɽ¼¨"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "¾éĹ½ÐÎϤò FILE ¤ËÁ÷¿®"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "¥¢¡¼¥«¥¤¥ÖÆâ¤Î¥Ö¥í¥Ã¥¯¿ô¤ò³Æ¡¹¥á¥Ã¥»¡¼¥¸ÉÕ¤­¤Çɽ¼¨"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "Á´¤Æ¤ÎÆ°ºî¤ò³Îǧ"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "tar ¤Îµ¬ÄêÃͤòɽ¼¨"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr "°ìÍ÷¤äÃê½Ð»þ¤Ë, ¸¡º÷´ð½à¤Ë°ìÃפ·¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò³Æ¡¹°ìÍ÷ɽ¼¨"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "ÊÖ´Ô¸å¤Ë¥Õ¥¡¥¤¥ë̾¤Þ¤¿¤Ï¥¢¡¼¥«¥¤¥Ö̾¤òɽ¼¨"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STYLE"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "̾Á°°úÍÑ·Á¼°¤òÀßÄê. Í­¸ú¤Ê STYLE Ãͤϲ¼µ­»²¾È."
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "¹¹¤Ë STRING ¤«¤éʸ»ú¤ò°úÍÑ"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "STRING ¤«¤é¤Îʸ»ú°úÍѤò̵¸ú¤Ë"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "¸ß´¹¥ª¥×¥·¥ç¥ó:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "ºîÀ®»þ¤Ï --old-archive ¤ÈƱ¤¸. Ãê½Ð»þ¤Ï --no-same-owner ¤ÈƱ¤¸"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "¤½¤Î¾¥ª¥×¥·¥ç¥ó:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "ÀøºßŪ¤Ë³²¤Ë¤Ê¤ë¥ª¥×¥·¥ç¥ó¤Î»ÈÍѤò̵¸ú¤Ë"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 "`-Acdtrux' ¤Þ¤¿¤Ï `--test-label' ¥ª¥×¥·¥ç¥ó¤Î¤¦¤Á 2¤Ä°Ê¾å»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ"
 "¤»¤ó"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "°µ½Ì¥ª¥×¥·¥ç¥ó¤¬¿©¤¤°ã¤Ã¤Æ¤¤¤Þ¤¹"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "̤ÃΤΥ·¥°¥Ê¥ë̾: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "ÆüÉÕ¥µ¥ó¥×¥ë¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "̤ÃΤÎÆüÉÕ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î %2$s Âå¤ï¤ê¤Ë %1$s ¤È¤·¤Þ¤¹"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "¥ª¥×¥·¥ç¥ó %s: `%s' ¤ò %s ¤È¤·¤Æ°·¤¦"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: ¥Õ¥¡¥¤¥ë°ìÍ÷¤Ï´û¤ËÆɤ߹þ¤ßºÑ¤ß"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: Æɤ߹þ¤Þ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤Ë¥Ì¥ëʸ»ú"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "%s ·Ðͳ¤Ç¥¢¡¼¥«¥¤¥Ö¤ò¥Õ¥£¥ë¥¿"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "--quoting-style ¥ª¥×¥·¥ç¥ó¤ËÂФ¹¤ëÍ­¸ú¤Ê°ú¿ô:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2167,51 +2180,51 @@ msgstr ""
 "\n"
 "¡Ö¤³¤Î¡×tar ¤Îµ¬ÄêÃÍ:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "̵¸ú¤Ê¥Ö¥í¥Ã¥­¥ó¥°°ø»Ò"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "̵¸ú¤Ê¥Æ¡¼¥×¤ÎŤµ"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "̵¸ú¤ÊÁýʬ¥ì¥Ù¥ëÃÍ"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "1¤Ä°Ê¾å¤ÎÉßµï¤È¤Ê¤ëÆüÉÕ"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "̵¸ú¤Ê¤Þ¤Ð¤é (sparse) ¥Ð¡¼¥¸¥ç¥óÃÍ"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' ¤Ï¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint ÃͤÏÀ°¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "̵¸ú¤Ê¥°¥ë¡¼¥×"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤¿¥â¡¼¥É¤Ï̵¸ú¤Ç¤¹"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "̵¸ú¤Ê¿ô"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "̵¸ú¤Ê½êÍ­¼Ô"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2219,117 +2232,117 @@ msgstr ""
 "--preserve ¥ª¥×¥·¥ç¥ó¤ÏÇÑ»ßͽÄê¤Ê¤Î¤Ç, Âå¤ï¤ê¤Ë --preserve-permissions --"
 "preserve-order ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "̵¸ú¤Êµ­Ï¿¥µ¥¤¥º"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "µ­Ï¿¥µ¥¤¥º¤Ï %d ¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¤¤¤±¤Þ¤»¤ó"
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "̵¸ú¤Ê¥¨¥ì¥á¥ó¥È¿ô"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "--to-command ¥ª¥×¥·¥ç¥ó¤Ï 1¤Ä¤À¤±µö²Ä"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "ÉÔÀµ·Á¼°¤ÎÌ©ÅÙ°ú¿ô: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "̤ÃΤÎÌ©ÅÙ: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "¥ª¥×¥·¥ç¥ó `-[0-7][lmh]' ¤Ï¡Ö¤³¤Î¡×tar ¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[¥Õ¥¡¥¤¥ë]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "¸Å¤¤¥ª¥×¥·¥ç¥ó `%c' ¤Ï°ú¿ô¤òɬÍפȤ·¤Þ¤¹"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence ¤Ï¥Õ¥¡¥¤¥ë°ìÍ÷¤¬¤Ê¤±¤ì¤Ð̵°ÕÌ£"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence ¤ÏÍ׵ᤵ¤ì¤¿Áàºî¥â¡¼¥É¤Ç¤Ï»È¤¨¤Þ¤»¤ó"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "ʬ³ä·¿¤Î¥¢¡¼¥«¥¤¥Ö¥Õ¥¡¥¤¥ë¤Ë¤Ï `-M' ¥ª¥×¥·¥ç¥ó¤¬É¬ÍפǤ¹"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental ¤È --newer ¤È¤ò·ë¹ç¤Ç¤­¤Þ¤»¤ó"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--listed-incremental ¤Ê¤·¤Î --level ¤Ï̵°ÕÌ£¤Ç¤¹"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: ¥Ü¥ê¥å¡¼¥à¥é¥Ù¥ë¤¬Ä¹¤¹¤®¤Þ¤¹ (%lu ¥Ð¥¤¥ÈÀ©¸Â)"
 msgstr[1] "%s: ¥Ü¥ê¥å¡¼¥à¥é¥Ù¥ë¤¬Ä¹¤¹¤®¤Þ¤¹ (%lu ¥Ð¥¤¥ÈÀ©¸Â)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "¥Þ¥ë¥Á¥Ü¥ê¥å¡¼¥à¥¢¡¼¥«¥¤¥Ö¤ò³Îǧ¤Ç¤­¤Þ¤»¤ó"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "°µ½Ì¤µ¤ì¤¿¥¢¡¼¥«¥¤¥Ö¤Ï³Îǧ¤Ç¤­¤Þ¤»¤ó"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "¥Þ¥ë¥Á¥Ü¥ê¥å¡¼¥à¤Ë°µ½Ì¤µ¤ì¤¿¥¢¡¼¥«¥¤¥Ö¤Ï»È¤¨¤Þ¤»¤ó"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "°µ½Ì¤µ¤ì¤¿¥¢¡¼¥«¥¤¥Ö¤ÏÏ¢·ë¤Ç¤­¤Þ¤»¤ó"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option ¤Ï POSIX ¥¢¡¼¥«¥¤¥Ö¤Ç¤Î¤ß»È¤¨¤Þ¤¹"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "¥Ü¥ê¥å¡¼¥àĹ¤Ï¥ì¥³¡¼¥É¥µ¥¤¥º¤è¤ê¾®¤µ¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order ¤Ï --listed-incremental ¤ÈξΩ¤·¤Þ¤»¤ó"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "¶õ¤Î¥¢¡¼¥«¥¤¥ÖºîÀ®¤Ï¤´ÍƼϴꤤ¤Þ¤¹"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "¥ª¥×¥·¥ç¥ó `-Aru' ¤È `-f -' ¤È¤ÏÁêÍƤì¤Þ¤»¤ó"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr ""
 "`-Acdtrux' ¤Þ¤¿¤Ï `--test-label' ¥ª¥×¥·¥ç¥ó¤Î¤¦¤Á¡¢¤¤¤º¤ì¤« 1¤Ä¤ò»ØÄꤷ¤Ê¤±¤ì"
 "¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Á°¤Î¥¨¥é¡¼¤Ë¤è¤ê¼ºÇÔ¥¹¥Æ¡¼¥¿¥¹¤Ç½ªÎ»¤·¤Þ¤¹"
@@ -2341,83 +2354,83 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: ¥Õ¥¡¥¤¥ë¤¬ %s ¥Ð¥¤¥È¾®¤µ¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
 msgstr[1] "%s: ¥Õ¥¡¥¤¥ë¤¬ %s ¥Ð¥¤¥È¾®¤µ¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "¥­¡¼¥ï¡¼¥É %s ¤Ï̤ÃΤޤ¿¤Ï̤¼ÂÁõ"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬µö²Ä¤µ¤ì¤¿Èϰϳ°¤Ç¤¹"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "¥Ñ¥¿¡¼¥ó %s ¤Ï»È¤¨¤Þ¤»¤ó"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "¥­¡¼¥ï¡¼¥É %s ¤Ïʤ¤»¤Þ¤»¤ó"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: Ä¹¤µ¤Î»ØÄ꤬¤¢¤ê¤Þ¤»¤ó"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "³ÈÄ¥¥Ø¥Ã¥ÀĹ¤Ïµö²Ä¤µ¤ì¤¿Èϰϳ°¤Ç¤¹"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "³ÈÄ¥¥Ø¥Ã¥ÀĹ %*s ¤ÏÈϰϳ°¤Ç¤¹"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: Ä¹¤µ¤Î¸å¤Ë¥Ö¥é¥ó¥¯¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: = (¥¤¥³¡¼¥ë) µ­¹æ¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: ²þ¹Ô¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "̤ÃΤγÈÄ¥¥Ø¥Ã¥À¥­¡¼¥ï¡¼¥É `%s' ¤ò̵»ë"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "À¸À®¤µ¤ì¤¿¥­¡¼¥ï¡¼¥É¤ÈÃͤΥڥ¢¤¬Ä¹²á¤®¤Þ¤¹ (¥­¡¼¥ï¡¼¥É=%s, Ä¹¤µ=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "³ÈÄ¥¥Ø¥Ã¥À %s=%s ¤Ï %s..%s ¤ÎÈÏ°ÏÆâ¤Ë¤¢¤ê¤Þ¤»¤ó"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: %s=%s ¤ÏÉÔÀµ"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: %s=%s ¤Ï;ʬ"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: %s ¤Ï̵¸ú: Í½´ü¤»¤Ì¶èÀÚ¤êʸ»ú %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "ÉÔÀµ·Á¼°¤Î³ÈÄ¥¥Ø¥Ã¥À: %s ¤Ï̵¸ú: ´ñ¿ôÃÍ"
@@ -2458,7 +2471,7 @@ msgstr "
 msgid "Read checkpoint %u"
 msgstr "¥Á¥§¥Ã¥¯¥Ý¥¤¥ó¥È %u ¤òÆɤ߹þ¤ß¤Þ¤¹"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2466,69 +2479,69 @@ msgstr ""
 "genfile ¤Ï GNU paxutils ¥Æ¥¹¥È¥»¥Ã¥È¤ËÂФ·¤Æ¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òÁàºî¤·¤Þ¤¹.\n"
 "¥ª¥×¥·¥ç¥ó¤Ï:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "¥Õ¥¡¥¤¥ëºîÀ®¥ª¥×¥·¥ç¥ó:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "SIZE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "»ØÄꤵ¤ì¤¿ SIZE ¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "ɸ½à½ÐÎϤÎÂå¤ï¤ê¤Ë¥Õ¥¡¥¤¥ë NAME ¤Ë½ÐÎÏ"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "FILE ¤«¤é¥Õ¥¡¥¤¥ë̾¤òÆɤ߹þ¤ß"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T ¤Ï null ¤Ç½ª¤ï¤ë̾Á°¤òÆɤ߹þ¤ß¤Þ¤¹"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "»ØÄꤵ¤ì¤¿ PATTERN ¤Ç¥Õ¥¡¥¤¥ë¤òËä¤á¤Þ¤¹. PATTERN ¤Ï 'default' ¤Þ¤¿¤Ï 'zeros'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "¤Þ¤Ð¤é¤Ê (sparse) ¥Õ¥¡¥¤¥ë¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "¤Þ¤Ð¤é¤Ê (sparse) ¥Õ¥¡¥¤¥ë¤òÀ¸À®. »Ä¤ê¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥Õ¥¡¥¤¥ë¥Þ¥Ã¥×¤ò»ØÄê."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "¥ª¥Õ¥»¥Ã¥È"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "¥Ç¡¼¥¿¤ò½ñ¤­½Ð¤¹Á°¤Ë»ØÄꤵ¤ì¤¿¥ª¥Õ¥»¥Ã¥È¤Þ¤Ç¸¡º÷"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "¥Õ¥¡¥¤¥ëÅý·×¥ª¥×¥·¥ç¥ó:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr "³Æ¡¹¤Î»ØÄê¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ struct stat ¤ÎÆâÍƤòɽ¼¨. É¸½à FORMAT ¤Ï: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Ʊ»þ¼Â¹Ô¥ª¥×¥·¥ç¥ó:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "OPTION"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2536,19 +2549,19 @@ msgstr ""
 "ARGS ¤ò¼Â¹Ô. --checkpoint ¤ª¤è¤Ó --cut, --append, --touch, --unlink ¤ÎÃæ¤Î 1"
 "¤Ä¤È¤È¤â¤Ë»ÈÍѤ¹¤ë¤È¤è¤¤"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "¥Á¥§¥Ã¥¯¥Ý¥¤¥ó¥È NUMBER Åþã»þ¤Ë»ØÄꤵ¤ì¤¿¥¢¥¯¥·¥ç¥ó (²¼µ­»²¾È) ¤ò¼Â¹Ô"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "¼¡¤Î --touch ¥ª¥×¥·¥ç¥ó¤ÇÆüÉÕ¤òÀßÄê"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "¼Â¹Ô¤µ¤ì¤¿¥Á¥§¥Ã¥¯¥Ý¥¤¥ó¥È¤È COMMAND ¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤òɽ¼¨"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2556,7 +2569,7 @@ msgstr ""
 "Ʊ»þ¼Â¹Ô¥¢¥¯¥·¥ç¥ó. ¤³¤ì¤é¤Ï --checkpoint option ¤Ç»ØÄꤵ¤ì¤¿¥Á¥§¥Ã¥¯¥Ý¥¤¥ó¥È"
 "ÈÖ¹æ¤ËÅþ㤷¤¿¤È¤­¤Ë¼Â¹Ô¤µ¤ì¤ë."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2564,144 +2577,141 @@ msgstr ""
 "FILE ¤ò --length ¥ª¥×¥·¥ç¥ó (¤Þ¤¿¤Ï»ØÄ꤬¤Ê¤±¤ì¤Ð 0) ¤Ç»ØÄꤵ¤ì¤¿¥µ¥¤¥º¤ËÀÚ¤ê"
 "¼Î¤Æ"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr "FILE ¤Ë SIZE ¥Ð¥¤¥ÈÄɵ­. SIZE ¤ÏÁ°¤Î --length ¥ª¥×¥·¥ç¥ó¤Ç»ØÄê."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "FILE ¤ÎºÇ½ª¥¢¥¯¥»¥¹»þ¹ï¤ÈºÇ½ª¹¹¿·»þ¹ï¤ò¹¹¿·"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "COMMAND ¤ò¼Â¹Ô"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "FILE ¤ò unlink"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "̵¸ú¤Ê¥µ¥¤¥º: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Èֹ椬µö²Ä¤µ¤ì¤¿Èϰϳ°: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Éé¤Î¥µ¥¤¥º: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) ¼ºÇÔ"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "Í׵ᤵ¤ì¤¿¥Õ¥¡¥¤¥ëĹ %lu, ¼ÂºÝ¤ÎÃÍ %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "ºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¥¹¥Ñ¡¼¥¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "`%s' ¤Î¶á¤¯¤Ç¿ô»ú¤ò¹½Ê¸Ê¬ÀÏ»þ¤Ë¥¨¥é¡¼"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "̤ÃΤÎÆüÉÕ·Á¼°"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGS...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "`%s' ¤ò³«¤±¤Þ¤»¤ó"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "Áܤ·½Ð¤»¤Þ¤»¤ó"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "¥Õ¥¡¥¤¥ë̾¤¬¥Ì¥ëʸ»ú¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "¤Þ¤Ð¤é¤Ê (sparse) ¥Õ¥¡¥¤¥ë¤òɸ½à½ÐÎϤ˽ñ¤­½Ð¤»¤Þ¤»¤ó. --file ¥ª¥×¥·¥ç¥ó¤ò»ÈÍÑ"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "ÉÔÀµ¤Ê¥Þ¥¹¥¯ (`%s' ¤Ë¶á¤¤)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "̤ÃΤΥե£¡¼¥ë¥É `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "`%s' ¤Ë»þ¹ï¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "`%s' ¤ò unlink ¤Ç¤­¤Þ¤»¤ó"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "¥³¥Þ¥ó¥É¤¬Àµ¾ï½ªÎ»\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "¥³¥Þ¥ó¥É¤¬¥¹¥Æ¡¼¥¿¥¹ %d ¤Ç¼ºÇÔ\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "¥³¥Þ¥ó¥É¤¬¥·¥°¥Ê¥ë %d ¤Ç½ªÎ»\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "¥³¥Þ¥ó¥É¤¬¥·¥°¥Ê¥ë %d ¤ÇÄä»ß\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "¥³¥Þ¥ó¥É¤¬¥³¥¢¤ò¥À¥ó¥×\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "¥³¥Þ¥ó¥É¤¬½ªÎ»\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat ¤Ë¤Ï¥Õ¥¡¥¤¥ë̾¤¬É¬Í×"
 
-#~ msgid "Cannot resolve hostname %s"
-#~ msgstr "¥Û¥¹¥È̾ %s ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó"
-
-#~ msgid "suppress this warning."
-#~ msgstr "¤³¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤."
+#~ msgid "Cannot save working directory"
+#~ msgstr "¥ï¡¼¥¯¥Ç¥£¥ì¥¯¥È¥ê¤òÊݸ¤Ç¤­¤Þ¤»¤ó"
index 1e6a0e07ec92cbf79565ed7155578ac64f74dda9..6baffcf67a981b281a161aba5976fe93dd6a988c 100644 (file)
Binary files a/po/ko.gmo and b/po/ko.gmo differ
index 84d7201c466ddd2a32e54eeab3df95562c24cf73..efbdf7739f719296b2e7a9f53ea1a482876b18d1 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -2,14 +2,16 @@
 # Copyright (C) 1996 Free Software Foundation, Inc.
 # Bang Jun-Young <bangjy@nownuri.net>, 1996-1997.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU tar 1.12\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 1997-05-30 22:55+0900\n"
 "Last-Translator: Bang Jun-Young <bangjy@nownuri.net>\n"
 "Language-Team: Korean <ko@li.org>\n"
+"Language: ko\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=EUC-KR\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -87,7 +89,7 @@ msgstr "
 msgid "Report bugs to %s.\n"
 msgstr ""
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿À·ù"
 
@@ -99,8 +101,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -138,56 +140,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "record_size·Î ºÎÀûÀýÇÑ °ª"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 #, fuzzy
 msgid "memory exhausted"
@@ -524,204 +531,204 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "¿ø°Ý ¼ÐÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr ""
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "¿É¼Ç¿¡ ºÎÀûÀýÇÑ ¸ðµå°¡ ÁÖ¾îÁü"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "ºÎÀûÀýÇÑ ³¯Â¥ Çü½Ä `%s'"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr ""
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "¿É¼Ç¿¡ ºÎÀûÀýÇÑ ¼ÒÀ¯ÀÚ°¡ ÁÖ¾îÁü"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr ""
 
 #
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: À߸øµÈ eof\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "record_size·Î ºÎÀûÀýÇÑ °ª"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
 #
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "¾ÆÄ«À̺꿡 ¿¹±âÄ¡ ¾ÊÀº EOF"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
 #
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
 #
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "¾µ¸ð¾ø´Â ¸í·É"
 
 #
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "ÀÌ°ÍÀº tar ¾ÆÄ«À̺êó·³ º¸ÀÌÁö ¾Ê½À´Ï´Ù"
 
 #
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "ÃÑ ¾²¿©Áø ¹ÙÀÌÆ®: "
 
 #
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 #, fuzzy
 msgid "Total bytes read"
 msgstr "ÃÑ ¾²¿©Áø ¹ÙÀÌÆ®: "
 
 #
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "ÃÑ ¾²¿©Áø ¹ÙÀÌÆ®: "
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr ""
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "record_size·Î ºÎÀûÀýÇÑ °ª"
 
 #
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "¾ÆÄ«À̺ê À̸§ÀÌ ÁÖ¾îÁöÁö ¾Ê¾Ò½À´Ï´Ù"
 
 #
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Ç¥ÁØÀÔ/Ãâ·Â ¾ÆÄ«À̺긦 °ËÁõÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
 #
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "¾ÐÃàµÈ ¾ÆÄ«À̺긦 °»½ÅÇÒ ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Å×ÀÌÇÁÀÇ ½ÃÀÛ ºÎºÐ¿¡¼­ Áö±Ý Á¾·áÇÔ"
 
 #
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "¿À·ù°¡ ³Ê¹« ¸¹¾Æ¼­ Á¾·áÇÕ´Ï´Ù"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "·¹ÄÚµå Å©±â = %d ºí·°"
 msgstr[1] "·¹ÄÚµå Å©±â = %d ºí·°"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr ""
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr ""
 
 #
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, fuzzy, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "º¼·ý #%d(%s¸¦ À§ÇÑ)¸¦ ÁغñÇÏ°í ¸®ÅÏÀ» Ä¡¼¼¿ä: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "»ç¿ëÀÚÀÇ ÀÀ´äÀÌ ÇÊ¿äÇÑ °÷¿¡ EOF°¡ ÀÖÀ½"
 
 #
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "°æ°í: ¾ÆÄ«À̺갡 ºÒ¿ÏÀüÇÕ´Ï´Ù"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -733,77 +740,77 @@ msgstr ""
 " !          ¼­ºê¼ÐÀ» ½ÇÇàÇÕ´Ï´Ù\n"
 " ?          ÀÌ ¸ñ·ÏÀ» ÀμâÇÕ´Ï´Ù\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
 #
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "»õ º¼·ýÀÌ ¾Æ´Ô; Á¾·á.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr ""
 
 #
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s´Â ÀÌ º¼·ý¿¡ ¿¬¼ÓµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù"
 
 #
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s´Â ÀÌ º¼·ý¿¡ ¿¬¼ÓµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù"
 
 #
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, fuzzy, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s´Â À߸øµÈ Å©±âÀÔ´Ï´Ù (%ld != %ld + %ld)"
 
 #
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "ÀÌ º¼·ýÀº ¼ø¼­¸¦ ¹þ¾î³µ½À´Ï´Ù"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, fuzzy, c-format
 msgid "Archive not labeled to match %s"
 msgstr "`%s'¿Í ÀÏÄ¡Çϵµ·Ï ¶óº§ÀÌ ºÙÁö ¾ÊÀº ¾ÆÄ«À̺ê"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, fuzzy, c-format
 msgid "Volume %s does not match %s"
 msgstr "º¼·ý `%s'°¡ `%s'¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
 #
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "ºí·° °æ°è°¡ ¾Æ´Ñ ºÎºÐ¿¡¼­ ¾ÆÄ«À̺ê %sÀÇ EOF °ËÃâ"
@@ -816,24 +823,24 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "%d ¹ÙÀÌÆ®(%ld ¹ÙÀÌÆ® Áß)¸¸ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù"
 msgstr[1] "%d ¹ÙÀÌÆ®(%ld ¹ÙÀÌÆ® Áß)¸¸ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 #, fuzzy
 msgid "Contents differ"
 msgstr "¸ðµå°¡ ´Ù¸¨´Ï´Ù"
 
 #
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "¾ÆÄ«À̺꿡 ¿¹±âÄ¡ ¾ÊÀº EOF"
 
 #
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 #, fuzzy
 msgid "File type differs"
 msgstr "Å©±â°¡ ´Ù¸¨´Ï´Ù"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "¸ðµå°¡ ´Ù¸¨´Ï´Ù"
 
@@ -853,98 +860,98 @@ msgid "Mod time differs"
 msgstr "º¯°æ ½Ã°¢ÀÌ ´Ù¸¨´Ï´Ù"
 
 #
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Å©±â°¡ ´Ù¸¨´Ï´Ù"
 
 #
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "%s¿¡ ¿¬°áµÇÁö ¾ÊÀ½"
 
 #
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "±âÈ£¸µÅ©°¡ ´Ù¸¨´Ï´Ù"
 
 #
-#: src/compare.c:321
+#: src/compare.c:316
 #, fuzzy
 msgid "Device number differs"
 msgstr "ÀåÄ¡ ¹øÈ£°¡ ¹Ù²î¾úÀ½"
 
 #
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "°ËÁõ "
 
 #
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: ¾Ë ¼ö ¾ø´Â ÆÄÀϠŸÀÔ; ÆÄÀÏÀÌ ¹«½ÃµÊ"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
 #
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "°ËÁõ ½ÇÆÐ: %d°³ÀÇ ºÎÀûÀýÇÑ Çì´õ°¡ °ËÃâµÊ"
 msgstr[1] "°ËÁõ ½ÇÆÐ: %d°³ÀÇ ºÎÀûÀýÇÑ Çì´õ°¡ °ËÃâµÊ"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr ""
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr ""
 
 #
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: º¯°æµÇÁö ¾Ê¾Ò½À´Ï´Ù; ´ýÇÁµÇÁö ¾ÊÀ½"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 
 #
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: º¯°æµÇÁö ¾Ê¾Ò½À´Ï´Ù; ´ýÇÁµÇÁö ¾ÊÀ½"
 
 #
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -952,62 +959,62 @@ msgstr[0] "%s: 
 msgstr[1] "%s: ÆÄÀÏÀÌ %d ¹ÙÀÌÆ® ÁÙ¾îµë, (¿Í¿ì!)"
 
 #
-#: src/create.c:1175
+#: src/create.c:1158
 #, fuzzy, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: ´Ù¸¥ ÆÄÀϽýºÅÛ »ó¿¡ ÀÖÀ½; ´ýÇÁµÇÁö ¾ÊÀ½"
 
 #
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 #, fuzzy
 msgid "contents not dumped"
 msgstr " (ÄÚ¾î Ãâ·ÂµÊ)"
 
 #
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: ¾Ë ¼ö ¾ø´Â ÆÄÀϠŸÀÔ; ÆÄÀÏÀÌ ¹«½ÃµÊ"
 
 #
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " %s·Î ¸µÅ©\n"
 
 #
-#: src/create.c:1543
+#: src/create.c:1688
 #, fuzzy, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: º¯°æµÇÁö ¾Ê¾Ò½À´Ï´Ù; ´ýÇÁµÇÁö ¾ÊÀ½"
 
 #
-#: src/create.c:1552
+#: src/create.c:1697
 #, fuzzy, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s´Â ¾ÆÄ«À̺êÀÔ´Ï´Ù; ´ýÇÁµÇÁö ¾ÊÀ½"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr ""
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr ""
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr ""
 
 #
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "´ÙÀ½ Çì´õ·Î °Ç³Ê ¶Ü"
 
@@ -1016,81 +1023,81 @@ msgstr "
 msgid "Deleting non-header from archive"
 msgstr "¾ÆÄ«À̺꿡¼­ ºñÇì´õ ºÎºÐÀ» Á¦°ÅÇÔ"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr ""
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr ""
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "¿¬¼ÓµÇ¾î Àִ ÆÄÀÏÀ» ÀϹݠÆÄÀϷΠÃßÃâÇÔ"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "±âÈ£ ¸µÅ©¸¦ Çϵ堸µÅ©·Î ÃßÃâÇÏ°í ÀÖ½À´Ï´Ù"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, fuzzy, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "`%s'¸¦ ÃßÃâÇÒ ¼ö ¾ø½À´Ï´Ù -- ÀÌ ÆÄÀÏÀº ´Ù¸¥ º¼·ý¿¡ ¿¬¼ÓµÇ¾î ÀÖ½À´Ï´Ù"
 
 #
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "¾ÆÄ«À̺ê ÆÄÀÏ¿¡ ¿¹±âÄ¡ ¾ÊÀº EOF"
 
 #
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: ¾Ë ¼ö ¾ø´Â ÆÄÀϠŸÀÔ; ÆÄÀÏÀÌ ¹«½ÃµÊ"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: ÀÌ ÆÄÀÏÀ» ¹é¾÷ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù"
 
 #
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s¸¦ %s·Î À̸§À» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s µð·ºÅ丮´Â À̸§ÀÌ ¹Ù²î¾ú½À´Ï´Ù"
 
 #
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s µð·ºÅ丮´Â À̸§ÀÌ ¹Ù²î¾ú½À´Ï´Ù"
 
 #
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, fuzzy, c-format
 msgid "%s: Directory is new"
 msgstr "%s´Â »õ µð·ºÅ丮ÀÔ´Ï´Ù"
@@ -1211,188 +1218,187 @@ msgid "%s: Cannot remove"
 msgstr "%s¸¦ Áö¿ï ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/list.c:115
+#: src/list.c:130
 #, fuzzy, c-format
 msgid "%s: Omitting"
 msgstr "%s¸¦ »ý·«"
 
-#: src/list.c:133
+#: src/list.c:146
 #, fuzzy, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "ºí·° %10ld: ** NUL·Î µÈ ºí·° **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, fuzzy, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "ºí·° %10ld: ** ÆÄÀÏÀÇ ³¡ **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, fuzzy, c-format
 msgid "block %s: "
 msgstr "ºí·° %10ld: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr ""
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr ""
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 
 #
-#: src/list.c:821
+#: src/list.c:836
 #, fuzzy, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "ÀÌ º¼·ýÀº ¼ø¼­¸¦ ¹þ¾î³µ½À´Ï´Ù"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr ""
 
 #
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " %s·Î ¸µÅ©\n"
 
 #
-#: src/list.c:1253
+#: src/list.c:1261
 #, fuzzy, c-format
 msgid " unknown file type %s\n"
 msgstr " ¾Ë ¼ö ¾ø´Â ÆÄÀϠŸÀÔ `%c'\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
 #
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--º¼·ý Çì´õ--\n"
 
 #
-#: src/list.c:1287
+#: src/list.c:1295
 #, fuzzy, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--%ld ¹ÙÀÌÆ® Â°¿¡ °è¼ÓµÊ--\n"
 
 #
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "µð·ºÅ丮¸¦ ¸¸µå´Â Áß:"
 
 #
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "%s·Î µð·ºÅ丮¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#
+#: src/misc.c:571
 #, fuzzy, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s¸¦ %s·Î À̸§ ¹Ù²Þ"
 
 #
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, fuzzy, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s¸¦ %s·Î À̸§À» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/misc.c:534
+#: src/misc.c:604
 #, fuzzy, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s¸¦ %s·Î À̸§ ¹Ù²Þ"
 
-#
-#: src/misc.c:669
-#, fuzzy
-msgid "Cannot save working directory"
-msgstr "%s·Î µð·ºÅ丮¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
-
-#
-#: src/misc.c:675
-#, fuzzy
-msgid "Cannot change working directory"
-msgstr "%s·Î µð·ºÅ丮¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr ""
 
 #
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s µð·ºÅ丮´Â À̸§ÀÌ ¹Ù²î¾ú½À´Ï´Ù"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr ""
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr ""
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
 #
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: ¾ÆÄ«À̺꿡 ¾øÀ½"
 
 #
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: ¾ÆÄ«À̺꿡 ¾øÀ½"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "`%s'¿Í ÀÏÄ¡Çϵµ·Ï ¶óº§ÀÌ ºÙÁö ¾ÊÀº ¾ÆÄ«À̺ê"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1416,7 +1422,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1427,7 +1433,7 @@ msgid ""
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1439,81 +1445,81 @@ msgid ""
 "  never, simple   always make simple backups\n"
 msgstr ""
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
 #
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "¾ÆÄ«À̺꿡 ¿¹±âÄ¡ ¾ÊÀº EOF"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1521,572 +1527,572 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
 #
-#: src/tar.c:452
+#: src/tar.c:453
 #, fuzzy
 msgid "remove files after adding them to the archive"
 msgstr "¾ÆÄ«À̺꿡 Àִ À̸§µé¿¡¼­ µå¶óÀ̺ê ÁöÁ¤¹®À» Á¦°ÅÇÔ"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr ""
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
 #
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "´ÙÁß-º¼·ý ¾ÆÄ«À̺긦 °ËÁõÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
 #
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Ç¥ÁØÀԷ¿¡ ´ëÇÑ ¾ÆÄ«À̺ê"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Çò°¥¸®´Â ¾ÐÃ࠿ɼÇ"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "¾ÐÃà ÇÁ·Î±×·¥¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "¾ÐÃà ÇÁ·Î±×·¥¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
 #
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "%s·Î µð·ºÅ丮¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
 #
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Àý´ë ¸µÅ©µé¿¡¼­ ¾Õ¿¡ ºÙÀº `/'¸¦ Á¦°ÅÇÔ"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "º¼·ý `%s'°¡ `%s'¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2094,242 +2100,247 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "¿É¼Ç¿¡ ºÎÀûÀýÇÑ ¸ðµå°¡ ÁÖ¾îÁü"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
 #
-#: src/tar.c:761
+#: src/tar.c:764
 #, fuzzy
 msgid "ask for confirmation for every action"
 msgstr "»ç¿ëÀÚÀÇ È®ÀÎÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "`-Acdtrux' ¿É¼Ç Áß Çϳª ÀÌ»óÀ» ÁöÁ¤Çϸ頾ȠµË´Ï´Ù"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Çò°¥¸®´Â ¾ÐÃ࠿ɼÇ"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr "¾Ë ¼ö ¾ø´Â ÆÐÅÏ `%s'"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr ""
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr ""
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr ""
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr ""
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr ""
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr ""
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr ""
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "¿É¼Ç¿¡ ºÎÀûÀýÇÑ ¼ÒÀ¯ÀÚ°¡ ÁÖ¾îÁü"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "¿É¼Ç¿¡ ºÎÀûÀýÇÑ ¸ðµå°¡ ÁÖ¾îÁü"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr ""
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 #, fuzzy
 msgid "Invalid owner"
 msgstr "¿É¼Ç¿¡ ºÎÀûÀýÇÑ ¼ÒÀ¯ÀÚ°¡ ÁÖ¾îÁü"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 #, fuzzy
 msgid "Invalid record size"
 msgstr "record_size·Î ºÎÀûÀýÇÑ °ª"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "·¹ÄÚµå Å©±â´Â %dÀÇ ¹è¼ö°¡ µÇ¾î¾ß ÇÕ´Ï´Ù."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr ""
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, fuzzy, c-format
 msgid "Unknown density: `%c'"
 msgstr "¾Ë ¼ö ¾ø´Â ÆÐÅÏ `%s'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "`-[0-7][lmh]' ¿É¼ÇÀº ÀÌ tar¿¡¼± Áö¿øµÇÁö ¾Ê½À´Ï´Ù"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "¿À·¡µÈ ¿É¼Ç `%c'´Â Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "´ÙÁß ¾ÆÄ«À̺ê ÆÄÀÏÀº `-M' ¿É¼ÇÀÌ ÇÊ¿äÇÕ´Ï´Ù"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr ""
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2337,52 +2348,52 @@ msgstr[0] ""
 msgstr[1] ""
 
 #
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "´ÙÁß-º¼·ý ¾ÆÄ«À̺긦 °ËÁõÇÒ ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "¾ÐÃàµÈ ¾ÆÄ«À̺긦 °ËÁõÇÒ ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "¾ÐÃàµÈ ´ÙÁß-º¼·ý ¾ÆÄ«À̺긦 »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "¾ÐÃàµÈ ¾ÆÄ«À̺긦 °»½ÅÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr ""
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "`-Aru' ¿É¼ÇÀº `-f -'°ú µ¿½Ã¿¡ ¾µ ¼ö ¾ø½À´Ï´Ù"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "`-Acdtrux' ¿É¼Çµé Áß Çϳª¸¦ ÁöÁ¤ÇؾߠÇÕ´Ï´Ù"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2395,83 +2406,83 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: ÆÄÀÏÀÌ %d ¹ÙÀÌÆ® ÁÙ¾îµë, (¿Í¿ì!)"
 msgstr[1] "%s: ÆÄÀÏÀÌ %d ¹ÙÀÌÆ® ÁÙ¾îµë, (¿Í¿ì!)"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr ""
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr ""
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2514,71 +2525,71 @@ msgstr "
 msgid "Read checkpoint %u"
 msgstr "°Ë»çÁöÁ¡ %d¸¦ ÀÐÀ½"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "GNU tar ½ÃÇè µµ±¸¿ë µ¥ÀÌÅÍ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Çò°¥¸®´Â ¾ÐÃ࠿ɼÇ"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr ""
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
@@ -2586,177 +2597,187 @@ msgstr ""
 "»ç¿ë¹ý: %s [¿É¼Ç]...\n"
 "\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 #, fuzzy
 msgid "Update the access and modification times of FILE"
 msgstr "%s: Á¢±Ù ½Ã°¢°ú ¼öÁ¤ ½Ã°¢À» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "ºÎÀûÀýÇÑ ³¯Â¥ Çü½Ä `%s'"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr ""
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿À·ù"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
 #
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, fuzzy, c-format
 msgid "cannot open `%s'"
 msgstr "%s¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "%s¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr "¾Ë ¼ö ¾ø´Â ÆÐÅÏ `%s'"
 
 #
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s¸¦ statÇÒ ¼ö ¾ø½À´Ï´Ù"
 
 #
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr ""
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr ""
 
+#
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "%s·Î µð·ºÅ丮¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s¸¦ %s·Î À̸§À» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
 #
 #~ msgid "Reading %s\n"
 #~ msgstr "%s¸¦ Àд Áß\n"
index e53575d1132e0a05e429d7d250d12a2987d8f025..0dce27ef2394678ca0eb3ebba6485a2fdd4eb0fe 100644 (file)
Binary files a/po/ky.gmo and b/po/ky.gmo differ
index 1ce343efb3fd55fbc2152b900df9de5480c9e6f6..3683c6e6fe7c4af9be7dccef35d2b652eb032b8b 100644 (file)
--- a/po/ky.po
+++ b/po/ky.po
@@ -3,14 +3,16 @@
 # This file is distributed under the same license as the PACKAGE package.
 # Azilet Beishenaliev <aziletb@gmail.com>, 2007.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.18\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2007-09-01 01:06+0100\n"
 "Last-Translator: Azilet Beishenaliev <aziletb@gmail.com>\n"
 "Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
+"Language: ky\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -91,7 +93,7 @@ msgstr "Толук маалымат үчүн `%s --help' же `%s --usage' де
 msgid "Report bugs to %s.\n"
 msgstr "Каталарды бул жерге билдиргиле %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Белгисиз система катасы"
 
@@ -103,8 +105,8 @@ msgstr "Бул жардам тизмесин көрсөтөт"
 msgid "give a short usage message"
 msgstr "Колдонуу жөнүндө кыска маалымат көрсөтөт"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "АТЫ"
 
@@ -142,56 +144,61 @@ msgstr "(ПРОГРАММАДА КАТА) Опция билиниш керек 
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: `%s' опциясы так эмес\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: `--%s' опциясы менен аргумент колдонулбайт\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: `%c%s' опциясы менен аргумент колдонулбайт\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: `%s' опциясы менен аргумент болуш керек\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: бул опция түшүнүксүз `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: бул опция түшүнүксүз `%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: жараксыз опция -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: бул опциянын аргументи болуш керек -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' опциясы так эмес\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: `-W %s' опциясы менен аргумент колдонулбайт\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: `%s' опциясы менен аргумент болуш керек\n"
+
 # Памятты эмне дейбиз яя? ;)
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
@@ -521,186 +528,186 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Алыстагы команда процессору иштетилген жок"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Издөө жолу диапазондун тышында"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Опцияда жарабаган укук абалы берилди"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Жараксыз көлөм: %s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Издөө даражасы диапазондун тышында"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Лентанын узундугу жараксыз"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Издөө даражасы диапазондун тышында"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Файлдын соңу эрте келди\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Негизги иштөө абалы:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Архивде күтүлбөгөн жерде файлдын соңу бар"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "N"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "`%s' ачылбай жатат"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "аргументтердин саны көп"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Туура эмес команда"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Бул tar-архиви эмес окшойт"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Жазылган жалпы байт"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Алынган жалпы байт"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Өчүрүлгөн жалпы байт: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(канал)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "record_size мааниси жарабайт"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Архивдин аты берилген жок"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Архивдин stdin/stdout текшерүүсү болбой жатат"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Архив кысыштырылган абалда. %s опциясын колдонгула"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Кысыштырылган архивдерди жаңырталбай калды"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Лентанын башына келди, иш бүттү"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Өтө көп ката бар, иш бүттү"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Маалыматтын көлөмү = %lu блок"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Архивде түз жайлашпаган блок бар (%lu байт)"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Архивдеги файл өчпөй калды; архив ачылбаса -i деп колдонгула"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek маалыматтын чегинде токтогон жок"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: жараксыз том номери бар"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Томдун номери батпай калды"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "%2$s үчүн %1$d-томду даярдап Enter'ди басыңыз: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Колдонуучудан жооп күтүбатканда файлдын соңу келип калды"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ЭСКЕРТҮҮ: Архив толук эмес"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -711,72 +718,72 @@ msgstr ""
 " q\t\ttar программасынын ишин бүтүр\n"
 "y же Ввод\t\tИшти улант\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Команда строкасын ач\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Бул тизмени жаз\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Жаңы том жок; иш бүттү.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Файлдын аты берилген жок. Кайра жазып көргүлө.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Туура эмес ввод. Жардам үчүн ? жазгыла.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s командасы аткарылбай калды"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s бул томдо уланса керек: башкы-маалыматта аты кыскартылыптыр"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s мунун бул томдо уландысы жок"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s көлөмү туура эмес (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Бул том иретте эмес"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Архивдин тамгасы %s менен келишпей жатат"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "%s тому %s менен келишпей жатат"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 "%s: файлдын аты көп-томдук GNU башкы-маалымат үчүн өтө узун, кыскартылды"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "rmtlseek маалыматтын чегинде токтогон жок"
@@ -787,20 +794,20 @@ msgid "Could only read %lu of %lu byte"
 msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "%2$lu байттан %1$lu гана окулду"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Мазмундары окшобойт"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Архивде күтүлбөгөн жерде файлдын соңу бар"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Файл түрү окшошпойт"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Укук абалдары окшошпойт"
 
@@ -816,141 +823,141 @@ msgstr "Gid окшошпойт"
 msgid "Mod time differs"
 msgstr "Алмаштыруу убактылары окшошпойт"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Көлөмү окшошпойт"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "%s жака шилтенген эмес"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Символикалык шилтеме окшошпойт"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Аспап номери окшошпойт"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Текшерүү "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: `%c' файл түрү бүлгисиз, жөнөкөй файл катары салыштырды"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Архивдин ичинде префикстери алынган файл аттары бар."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Текшерүү учурунда алгачкы файлдар табылбай калышы мүмкүн."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "ТЕКШЕРҮҮ КАТАСЫ: %d жараксыз башкы маалымат табылды"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "%s болгон жерде нөлдүк блок бар"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: мунун ичинде %s деген кэш-папка белгиси бар; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "%s мааниси %s диапазонунун тышында %s..%s; ордуна %s коюлат"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "%s мааниси %s диапазонунун тышында %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Терс сегиздик системасында башкы маалыматтар даярдалууда"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: файлдын аты өтө узун (эң көп %d болот); кошулбайт"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: файлдын аты өтө узун (бөлүнбөйт); кошулбайт"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: шилтеменин аты өтө узун; кошулбайт"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Файл %s байтка азайды; нөлдөр менен толтурулат"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: файл башка файл-системасында; кошулбайт"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "астындагылар кошулган жок"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Файлдын түрү белгисиз; файл каралбайт"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "%s жака шилтемелер жок.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: файл алмашкан жок; кошулбайт"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: файл архив экен; кошулбайт"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "папка кошулган жок"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: файлды окуу учурунда файл алмашты"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: сокет каралбайт"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door каралбайт"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Эмики башкы-маалыматка өттү"
 
@@ -958,74 +965,74 @@ msgstr "Эмики башкы-маалыматка өттү"
 msgid "Deleting non-header from archive"
 msgstr "Архивде башкы-маалымат болбогондор өчүрүлөт"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: %s убакыт тамгасы өтө эски"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: %s убакыт тамгасы %s сек. келечекте"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Папка ачыбатканда күтүлбөгөн нерселер болду"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Папканын статусу билинелектен мурун аты алмашып кетти"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Удаа болгон файлдар жөнөкөй файл катары чыгарылып жатат"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Символикалык шилтемелерди түз шилтеме катары чыгарууга аракет кылынат"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Чыгарылган жок -- файл башка томдон уланып келиптир"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Башкы-маалымат узун"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: `%c' файл түрү бүлгисиз, жөнөкөй файл катары чыгарылды"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Азыркы %s жаңыраак же бирдей"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Бул файлдын резерв копиясы алыналбай калды"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s файлы %s деп алмаштыралбай калды"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Папканын эски аты %s эле"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Папка алмаштырылды"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Папка жаңы"
@@ -1139,35 +1146,35 @@ msgstr "%s: %s өчүрүлүп жатат\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Өчүрүлбөй жатат"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Муну аттады"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "блок %s: ** нөлдөр болгон блок **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "блок %s: ** Файлдын соңу **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "блок %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Башкы-маалыматта сан түрүндө %s болотурган жерде бош жерлер бар"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1175,102 +1182,99 @@ msgstr ""
 "экилик системадагы терси алынды"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr ""
 "Архивдин сегиздик системадагы мааниси болгон %.*s %s диапазонунун тышында"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Архивде эски түрдөгү base-64 башкы-маалымат бар"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Архивдеги base-64 түрүндөгү %s сөзү %s диапазонунун тышында"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Архивдин base-256 мааниси %s диапазонунун тышында"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr ""
 "Архивдин ичинде %.*s бар, алардын ордунда сан түрүндө %s болушу керек эле"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Архивдин %s мааниси %s түрүнүн %s..%s диапазонунда эмес"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " %s жака шилтеме\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " белгисиз файл түрү %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Узун шилтеме--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Узун ат--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Томдун башкы-маалыматы--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--%s-байттан баштап уланды--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Жаңы папка ачылыбатат:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Учурдагы папка алмаштырылбайтат"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s'тин атын %s деп алмаштырды\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Аты %s деп алмаштыралбай калды"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s'тин атын кайра %s деп алмаштырды\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Учурдагы папка сакталбайтат"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Учурдагы папка алмаштырылбайтат"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Файл окулганча өчүрүлүп кетти"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Файл окулганча өчүрүлүп кетти"
@@ -1278,20 +1282,20 @@ msgstr "%s: Файл окулганча өчүрүлүп кетти"
 #  орусчада дочерный процесс, бир процесс өз ичинен жаңы бир
 #  процесс жаратканда ошол чайлд процесс болот. Биз эмне дейбиз?
 #  Мен туулган процесс дейм.
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "туулган процесс"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "процесс-аралык канал"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "Файлдын аттарында уйкаштарды издөө үчүн колдонулган тамгалар бар."
 
-#: src/names.c:603
+#: src/names.c:596
 #, fuzzy
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
@@ -1299,22 +1303,27 @@ msgid ""
 msgstr ""
 "Уйкаштарды издөө үчүн --wildcards опциясын колдонуңуз, же --no-wildcards"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Архивде табылган жок"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Керектүү нерселер архивде табылган жок"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Архивдин тамгасы %s менен келишпей жатат"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1340,7 +1349,7 @@ msgstr ""
 "Ковычкалардын түрү белгисиз - `%s'. Тизмени көрүүгө `%s --quoting-"
 "style=help' жазгыла."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1362,7 +1371,7 @@ msgstr ""
 "  tar -xf archive.tar          # Аты archive.tar болгон архивдин ичиндеги "
 "баардык файлдарды чыгарат.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1384,82 +1393,82 @@ msgstr ""
 "жөнөкөй вариант\n"
 "  never, simple   ар дайым жөнөкөй резерв копиялар сакталат\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Негизги иштөө абалы:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "архивдин ичиндеги файлдарды тизмелейт"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "архивден файлдарды чыгарат"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "жаңы архив жаратат"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "архив менен файл система айырмаларын табат"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "файлдарды архивдин аягына кошот"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "архивдин ичиндегилерден жаңы болгон файлдарды гана кошот"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "tar файлын архивге кошот"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "архивден өчүрөт (магниттик ленталарда жарабайт!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "архивдик томдун атын текшерет анан бүтүрөт"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Иштөөнүн модификаторлору:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "кеңири жайлашкан файлдарды эфектүү түрдө колго ал"
 
 # major, minor
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "БАШКЫ[.КИЙИНКИ]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "кеңири жайлаштыруу форматынын версиясын тандайт (--sparce опциясы кошулган "
 "болот)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "эски GNU форматындагы резервдөө методун колго ал"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "жаңы GNU форматындагы резервдөө методун колго ал"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "окулбаган файлдар келгенде нөл болбогон статус менен ишти бүтүрбө"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1471,123 +1480,123 @@ msgstr ""
 "файлдардын аттары команда строкасында же -T опциясы менен берилгенде гана "
 "жарактуу болот. N-дин мааниси алдынала 1ге барабар."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "Архивдин ичиндегилерди издесе болот"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "Архивдин ичиндегилерди издесе болот"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "үстүнө көчүрүү контролу:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "архивди сактагандан кийин текшерүүгө аракет кылат"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "файлдарды архивге кошулгандан кийин өчүрөт"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "файлдарды чыгаруу учурунда мурун бар болгон файлдардын ордуна көчүрбө"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "мурун бар болгон файл архивдеги копиясындан жаңы болсо аны алмаштырба"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "чыгаруу учурунда мурун бар болгон файлдардын ордуна көчүрөт"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "бар болгон файлдын ордуна көчүрүүдөн мурун ал файлды өчүрөт"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "папканы чыгарардан мурун баардык иерархияларды өчүрөт"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "мурун бар болгон папкалардын мета-касиеттерин корго"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "чыгаруу учурунда бар болгон папкалардын мета-даталардын үстүнө жазылат "
 "(алдынала тандалат)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Чыгаруу() жолун танда:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "файлдарды стандарт чыгарууга (output) жөнөт"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "КОМАНДА"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 "архивден чыккан файлдарды канал(pipe) жолу менен башка программага жөнөтөт"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "туулган процесстердин бүтүрүү кодторуна караба"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "туулган процесстердин нөл болбогон бүтүрүү кодторун ката деп ишке ал"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Файлдын өзгөчөлүктөрүн колго алууда:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "кошулган файлдардын ээсин АТЫ деп кой"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "кошулган файлдардын группасын АТЫ деп кой"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "ДАТА-ЖЕ-ФАЙЛ"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "кошулган файлдардын алмашуу убактысын ДАТА-ЖЕ-ФАЙЛ дан ал"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "УКУК"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "кошулган файлдардын укук абалын УКУК деп кой"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "МЕТОД"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1597,32 +1606,32 @@ msgstr ""
 "сакта (МЕТОД='replace'; алдынала тандалат) же колдонуу убакыттарын "
 "алмашырбай туруп сактап кал (МЕТОД='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "файлдын алмаштыруу убактын чыгарбайт"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "ээсин ошол бойдон калтырып файлдарды чыгарууга аракет кылат"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "файлдарды өзүңдүкү катары чыгарат"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "ээси/группа аттарын ардайым номерлер менен көрсөтөт"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "файлдын уруксат маалыматын да чыгар (суперколдонуучуга алдынала тандалат)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1630,15 +1639,15 @@ msgstr ""
 "архивден уруксат маалыматын чыгарыбатканда колдонуучунун umask'ын колдон "
 "(жөн колдонуучуларга алдынала тандлат)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "чыгатурган файлдарды архивдегидей кылып сортто"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "-p жана -s менен бирдей"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1646,141 +1655,141 @@ msgstr ""
 "чыгарылган папкалардын колдонуу убакыттарын жана уруксаттарын чыгаруу иши "
 "бүткөндөн кийин коёт"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "--delay-directory-restore опциясынын эффектин токтотот"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Аспапты тандоо жана ага өтүү:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "АРХИВ"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "АРХИВ деген архивдик файлды же аспапты колдонот"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "архивдик файлда эки точка болушуна карабастан ал локалдуу"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "rmt'нин ордуна КОМАНДА колдонулат"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "rsh'тын ордуна КОМАНДА колдонулат"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "драйв жана анын тыгыздыгын белгиле"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "көп томдуу архивди жарат/тизмеле/чыгар"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "N x 1024 байт жазгандан кийин лентаны алмаштыр"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "ар лентанын аягында скриптти иштет (-M опциясы колдонулат)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "ФАЙЛ файлынын ичиндеги том номерин колдон/жаңырт"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Аспаптын блоктолушу:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "БЛОК"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "ар маалыматка БЛОК x 512 байт түшөт"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "Ар маалыматка N байт түшөт, 512 көбөйтүндүсү"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "архивдеги нөлдүү блокторду өтүп кетет (EOF жөнүндө)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "окубатканда кайрадан блокторго бөлүп чык (4.2BSD каналдары үчүн)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Архивдин форматын тандоо:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "ФОРМАТ"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "тандалган форматта архив жаратат"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "ФОРМАТ булардан бирөө болот:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "эски V7 tar форматы"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "tar <= 1.12 версиясында болгондой GNU форматы"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x форматы"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) форматы"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) форматы"
 
 # pax деген gid,atime сияктуу нерселер
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "pax менен бирдей"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "--format=v7 менен бирдей"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "--format=posix менен бирдей"
 
 # keyword эмне болот?
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "ачкыч-сөз[[:]=мааниси][,ачкыч-сөз[[:]=мааниси]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "контролдоо үчүн pax ачкыч сөздөрү"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "ТЕКСТ"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1788,78 +1797,78 @@ msgstr ""
 "том аты ТЕКСТ болгон архив жарат; тизмелөө/чыгаруу учурунда, ТЕКСТ дегенди "
 "том атынын глоб шаблону катары колдон"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Бирбирине келишпеген кысыштыруу опциялары берилди"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "ПРОГ"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "ПРОГ менен ишке ал (-d опциясы болушу керек)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Локалдуу файлдарды тандоо:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr "ФАЙЛды архивге кош (файлдын аты тире менен баштаган учурда пайдалуу)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "ПАПКА"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "ПАПКА папкасына өт"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "чыгарылатурган же жаңы ачылатурган файлдарды АТЫ деген файлдан кара"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T опциясы нөл менен бүткөн аттарды окуйт, -C опциясы өчүрүлөт"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "-T менен алынган файлдардын аттарындагы ковычкалар өчүрүлөт (алдынала "
 "тандалат)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "-T менен алынган файлдардын аттарындагы ковычкалар калаберет"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "ШАБЛОН"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "ШАБЛОН менен уйкаш файлдар ишке алынбайт"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "ФАЙЛда тизмеленген шаблондор менен уйкаш файлдар ишке алынбайт"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1867,96 +1876,96 @@ msgstr ""
 "CACHEDIR.TAG файлы болгон папкалардын астындагылары тэг файлдан тышкарысы "
 "кошулбайт"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "CACHEDIR.TAG файлы болгон папкалардын астындагыларынын баары кошулбайт"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "CACHEDIR.TAG файлы болгон папкалар кошулбайт"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "ФАЙЛ файлы болгон папкалардын астындагылары ФАЙЛ файлындан тышкарысы "
 "кошулбайт"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "ФАЙЛ файлы болгон папкалардын астындагыларынын баары кошулбайт"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "ФАЙЛ файлы болгон папкалар кошулбайт"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "папкалардын тереңине кирип кетүүнү токтот"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "архивди жасабатканда локалдуу файл системасында кал"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "папкалардын тереңине кирет (алдынала тандалган)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "файл аттарынын башындагы '/'терди өчүрбө"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "символикалык шилтемелерге барат; алар көрсөткөн файлдарды архивге кошот"
 
-#: src/tar.c:686
+#: src/tar.c:687
 #, fuzzy
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "символикалык шилтемелерге барат; алар көрсөткөн файлдарды архивге кошот"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "МҮЧӨНҮН-АТЫ"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "архивдеги МҮЧӨНҮН-АТЫ мүчөсүнөн башта"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "ДАТА-ЖЕ-ФАЙЛ'дан жаңы болгон файлдарды гана сакта"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "ДАТА"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "датасы алмашканда гана дата жана убактысын салыштыр"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "өчүрөрдөн мурун копиясын сактап кал, CONTROL версиясын танда"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "STRING"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1964,102 +1973,102 @@ msgstr ""
 "өчүрөрдөн мурун копиясын сактап калат, жалпы колдонулган суфикс кошулат (бул "
 "суфикс SIMPLE_BACKUP_SUFFIX жолу менен алмаштырылбаган болсо '~' болот)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Файлдын атынын алмашуулары:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "чыгаруу учурунда файл аттарынын башындагы N компонентти алып салат"
 
 # выражение кыргызча кандай? СҮЙЛӨМ башка жерде да бар
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "СҮЙЛӨМ"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "файлдардын аттарын алмаштыруу үчүн sed replace EXPRESSION колдонгула"
 
 # inclusion, exclusion - Kyrgyz equiv?
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr "Файлдын атына уйкаштыруу опциялары (бардык шаблондорго тиешелүү):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "тамгалардын чоң-кичинесине каралбайт"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "шаблондор файлдын атынын башталышы менен уйкаштырылат"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 "шаблондор `/' символунан кийин келген ар жерде уйкашына каралат (алдынала "
 "тандалган)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "уйкаштырууда тамгалардын чоң-кичинесине каралат (алдынала тандалган)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "шаблондор колдонулат (иштен алынбаган файлдарга алдынала тандалат)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "кандай жазылса ошондой колдонулат"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "шаблондор `/' символун издебейт"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "шаблондор `/' символун издейт (алдынала тандалган)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Маалыматтандыруу:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "ишке алынган файлдарды кеңири маалыматы менен тизмеле"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "үстүнө көчүрүү контролу:"
 
 #  Ушу 'record' сөзүнө жакшы котормо табалбай койдум
 #  'маалымат' деп жазыбаттым эле, бул жерде келишпей калаткен
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "ар N записьтен кийин маалымат берип турат (алдынала 10 болот)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "баардык шилтемелер кошулбай калса билдирүү жазып чыгар"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "СИГНАЛ"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2071,27 +2080,32 @@ msgstr ""
 "SIGHUP, SIGQUIT, SIGINT, SIGUSR1 жана SIGUSR2; SIG префикси жазылбаган "
 "аттарын да колдонсо болот."
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "файлды алмаштыруу датасын UTC түрүндө көрсөт"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "чыккан кеңири маалыматты ФАЙЛ файлына жибер"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "ар билдирүүдө архивдин ичиндеги блок номерин көрсөт"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "ар ишти аткарууга макулдук сурап тур"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "tar'да алдынала коюлган опцияларды көрсөтөт"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2099,33 +2113,33 @@ msgstr ""
 "тизмелөө же чыгаруу учурунда издөө критериясына жатпаган папкаларды да "
 "тизмелейт"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "алмаштыруудан кийин файлдын же архивдин аттарын көрсөтөт"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "СТИЛЬ"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "аттарга ковычка кошуу стилин тандаңыз; жарактуу СТИЛЬ түрдөрү төмөндө "
 "көрсөтүлөт."
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "STRING ичинде болгон тамгаларга кошумча ковычка кошот"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "STRING ичинде болгон тамгаларга ковычка кошпойт"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Келишүү опциялары:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2133,64 +2147,64 @@ msgstr ""
 "жаңы архив жасабатканда --old-archive менен бирдей; чыгарыбатканда --no-same-"
 "owner менен бирдей"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Башка опциялар:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "зыяндуу көрүнгөн опцияларды колдонууга тыюуу салат"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "`-Acdtrux' опцияларынан бирөөнү гана колдоно аласыңар"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Бирбирине келишпеген кысыштыруу опциялары берилди"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Сигналдын аты белгисиз: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Датанын шаблон файлы табылган жок"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Белгисиз %1$s дата форматынын ордуна %2$s коюлат"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "%s опциясы: `%s' датасын %s деп алды"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: файл тизмеси окулган"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: алынган файлдын атында бош тамгалар бар"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "архивди gzip менен ишке ал"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "--quoting-style опциясы үчүн мындай аргументтер бар:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2198,168 +2212,168 @@ msgstr ""
 "\n"
 "*Бул* tar алдынала мындай иштетилет:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Блок көлөмү жараксыз"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Лентанын узундугу жараксыз"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "Файлдын форматы туура эмес"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Бирден көп ченемдөөчү дата бар"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "кеңири жайлаштыруу форматынын версиясы жарактуу эмес"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "Бул платформада --atime-preserve='system' опциясы иштебейт"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint опциясына жазылган аргумент сан эмес"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Жараксыз группа"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Опцияда жарабаган укук абалы берилди"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Жарабаган номер"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Ээси жарабайт"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Маалымат көлөмү жарабайт"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Маалыматтын көлөмү %d көбөйтүндүсү болушу керек."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Элементтердин саны жарабайт"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "--to-command опциясы бир эле жолу жазылыш керек"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Тыгыздык аргументи туура эмес: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Түшүнүксүз тыгыздык: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "*Бул* tar `-[0-7][lmh]' опцияларын иштетпейт"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[ФАЙЛ]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Эски болгон `%c' опциясына параметр керек."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "Файл тизмеси болбосо --occurrence дегендин мааниси болбойт"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "Колдонулган иштетүү абалда --occurrence колдонулбайт"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Бир нече архив файлы болсо `-M' опциясы колдонулушу керек"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental менен --newer чогу колдонулбайт"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "Файл тизмеси болбосо --occurrence дегендин мааниси болбойт"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Томдун тамгасы өтө узун (эң көп %lu байт боло алат)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Көп-томдуу архивдерди текшералбай калды"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Кысыштырылган архивдерди текшералбай калды"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Көп-томдуу кысыштырылган архивдерди колдоналбай калды"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Кысыштырылган архивдер кошулалбайт"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option POSIX архивдеринде гана колдонула алат"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Бош архив жаратуудан уялып баш тартып жатат"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "`-Aru' опциялары `-f -' менен келишпейт"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "`-Acdtrux' опцияларынан бирөөнү тандап колдонуңуз"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2370,88 +2384,88 @@ msgid "%s: File shrank by %s byte"
 msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Файл %s байтка азайды"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "%s сөзү белигсиз же азырынча киргизилген эмес"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Сан жарактуу маанилердин тышында: %s"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "%s шаблону колдонулбайт"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "%s ачкыч сөзү алмаштырылбайт"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Кеңейтилген башкы-маалымат бузук: узундук жок"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Кеңейтилген башкы-маалыматтын узундугу жарактуу маанилердин тышында"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Кеңейтилген башкы-маалыматтын узундугу - %*s - диапазондун тышында"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 "Кеңейтилген башкы-маалымат бузук: узундуктан кийин бош жер (пробел) жок"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Кеңейтилген башкы-маалымат бузук: барабар символу жок"
 
 # newline эмне болот?
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Кеңейтилген башкы-маалымат бузук: жаңы сап жок"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Кеңейтилген башкы-маалыматта белгисиз `%s' сөзү каралбайт"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Чыккан ачкыч-сөз/маани экилиги ото узун (ачкыч-сөз=%s, узундугу=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "%s=%s түрүндөгү кеңейтилген башкы-маалымат %s..%s диапазондун тышында"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Кеңейтилген башкы-маалымат бузук: %s=%s туура эмес"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Кеңейтилген башкы-маалымат бузук: %s=%s ашыкча көп"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Кеңейтилген башкы-маалымат бузук: туура эмес %s: күтүлбөгөн жерде бул - %c - "
 "бөлүүчү символ бар"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Кеңейтилген башкы-маалымат бузук: туура эмес %s: так санда маани бар"
@@ -2492,7 +2506,7 @@ msgstr "Жазууну текшерүү жери: %u"
 msgid "Read checkpoint %u"
 msgstr "Окуунун текшерүү жери: %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2500,74 +2514,74 @@ msgstr ""
 "genfile, GNU paxutils пакетинин дата файлдарын ишке алат.\n"
 "ОПЦИЯЛАР мындай:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Жаңы файл ачуу опциялары:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "КӨЛӨМ"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Көсөтүлгөн КӨЛӨМдө жаңы файл ач"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Стандарт чыгарууга жазбай, АТЫ деген файлга жаз"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Файлдын аттарын ФАЙЛдан ал"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T опциясы бош/нөл (null) менен бүткөн аттарды окуйт"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Файлды тандалган ШАБЛОН менен толтурат. ШАБЛОН 'default' же 'zeros' болот"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Кеңири жайлашкан файлдын блок көлөмү"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Файлды кеңири жайлаштыр. Кийинки команда строкаларында файлдын картасы бар."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 #, fuzzy
 msgid "OFFSET"
 msgstr "ОРУН"
 
 # seek the given offset - orunga jyl
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "данный(data) жазаардан мурун айтылган орунга жыл"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Файлдын статистикасынын опциялары:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Алынган ар бир файл үчүн struct stat курамын көрсөтөт. Алдынала тандалган "
 "ФОРМАТ мындай: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Синхрондуу иштетүүнүн опциялары:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [ОПЦИЯ...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 #, fuzzy
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
@@ -2576,19 +2590,19 @@ msgstr ""
 "Жазылган КОМАНДАны иштет. Бул --checkpoint жана --cut, --append, --touch "
 "бирөөсү менен колдонулганда пайдалуу"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "N текшерүү жерине жеткенде буларды (төмөндү карагыла) аткар"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Эмики --touch опциясы үчүн дата жазгыла"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Өтүлгөн текшерүү жердерди жана КОМАНДАнын бүтүрүү статусун көрсөтөт"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2596,7 +2610,7 @@ msgstr ""
 "Синхрондуу аткаруу иштери. Булар --checkpoint опциясы менен берилгенн "
 "текшерүү жерине жеткенде аткарылат."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2604,147 +2618,161 @@ msgstr ""
 "ФАЙЛды --length опциясы менен берилген көлөмгө кыскартат (берилбеген болсо 0 "
 "болот)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr "ФАЙЛга КӨЛӨМ байт кошот. КӨЛӨМ --length опциясы менен берилет."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "ФАЙЛдын колдонуу жана алмашуу убакыттарын жаңылайт."
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Бул команданы иштеткиле - КОМАНДА"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Жараксыз көлөм: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Сан жарактуу маанилердин тышында: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Көлөмү терс сан: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) аткарылбай калды"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "`%s' жанындагы санды окубатканда ката чыкты"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Датанын форматы түшүнүксүз"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[АРГУМЕНТТЕР...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "`%s' ачылбай жатат"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "издөө болбой калды"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "файлдын атында бош тамга бар"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "кеңири(чоң) файлдарды стандарт чыгарууга жибералбайт, --file опциясын "
 "колдонуңуз"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "туура эмес маска (`%s' жанында)"
 
 # фиелд деген кандай болот?
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Белгисиз поле `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "`%s'ке убакыт аталган жок"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "`%s' ачылбай жатат"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Команда толук аткарылды\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Команда %d статусу менен аткарылбай калды\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Команда %d сигналы менен жабылды\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Команда %d сигналы менен токтотулду\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Команда core dump менен бүттү\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Команда жабылды\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat опциясы менен файл аттары жазылыш керек"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Учурдагы папка сакталбайтат"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s файлы %s деп алмаштыралбай калды"
+
+#~ msgid "suppress this warning."
+#~ msgstr "опциясы менен бул эскертүүнү көрсөтпөс кыл."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: мындай опция колдонулбайт -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "%s жактан окуп жатат\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2752,15 +2780,6 @@ msgstr "--stat опциясы менен файл аттары жазылыш к
 #~ "\n"
 #~ "Каталарды бул жерге билдиргиле <%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "%s жактан окуп жатат\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Оңолбогон ката: иш бүттү "
-
-#~ msgid "suppress this warning."
-#~ msgstr "опциясы менен бул эскертүүнү көрсөтпөс кыл."
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "архивди bzip2 менен ишке ал"
 
@@ -2814,6 +2833,9 @@ msgstr "--stat опциясы менен файл аттары жазылыш к
 #~ msgid "Premature end of file"
 #~ msgstr "Файлдын соңу эрте келди"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Оңолбогон ката: иш бүттү "
+
 #~ msgid "block size"
 #~ msgstr "бир блоктун көлөмү"
 
index 28f239c7bcaf40f81771ccb7caeaf78a10248b65..6674dc5e99d0ee62cf6e21205e1792d4fe11bdad 100644 (file)
Binary files a/po/ms.gmo and b/po/ms.gmo differ
index 5f667b9ae5000be6580375ca7974260383e2906b..87f2424ddcde26702c2d5c56069d37e20fe79297 100644 (file)
--- a/po/ms.po
+++ b/po/ms.po
@@ -2,14 +2,16 @@
 # Copyright (C) 2002 Free Software Foundation, Inc.
 # Hasbullah Bin Pit <sebol@ikhlas.com>, 2002.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.13.25\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2002-11-23 02:38+0800\n"
 "Last-Translator: Hasbullah Bin Pit <sebol@ikhlas.com>\n"
 "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
+"Language: ms\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -87,7 +89,7 @@ msgstr ""
 "\n"
 "Lapor pepijat ke <bug-tar@gnu.org>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Ralat sistem tidak diketahui"
 
@@ -99,8 +101,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -138,56 +140,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: opsyen `%s' adalah kabur\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: opsyen `--%s' tidak mengizinkan hujah\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: opsyen %c%s'  tidak mengizinkan hujah\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: opsyen `%s' memerlukan hujah\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opsyen tidak dikenali `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opsyen tidak dikenali '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: opsyen tidak sah -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: opsyen memerlukan hujah -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: opsyen `-W %s' adalah kabur\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: opsyen `-W %s' tidak mengizinkan hujah\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: opsyen `%s' memerlukan hujah\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memori keletihan"
@@ -515,191 +522,191 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Tak boleh laksanakan shell jauh"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Hala rayauan diluar julat"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Mod tidak sah diberi pada opsyen"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Setem masa tidak sah"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Offset rayauan diluar julat"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "panjang pita tidak sah"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Offset rayauan diluar julat"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: eof tak matang\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "%s: opsyen tidak sah -- %c\n"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "EOF tanpa diduga pada arkib"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Tak dapat rayau ke %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Arahan sampah"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Ia nampaknya bukan seperti arkib tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Jumlah byte ditulis: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Jumlah byte ditulis: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(paip)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Nilai tidak sah bagi record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Tiada nama arkib diberi"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Tak dapat menentusahkan arkib stdin/stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Tak dapat mengemaskini arkib termampat"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Pada permulaan pita, keluar sekarang"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Terlalu banyak ralat, keluar"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Saiz rekod = %lu blok"
 msgstr[1] "Saiz rekod = %lu blok"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, fuzzy, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Blok tidak dijajar (%lu byte) pada arkib"
 msgstr[1] "Blok tidak dijajar (%lu byte) pada arkib"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "tak dapat backspace fail arkib; ia mungkin tak boleh dibaca tanpa -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: mengandungi nombor volum yg tidak sah"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 #, fuzzy
 msgid "Volume number overflow"
 msgstr "Nombor volum melimpah"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Menyedia volum #%d bagi %s dan tekan return: "
 
 # libgnomeui/gnome-app-helper.c:127
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF dimana maklumbalas pengguna dijangka"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "AMARAN: Arkib tidak lengkap"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -711,71 +718,71 @@ msgstr ""
 " !          Spawn  subshell\n"
 " ?          Cetak senarai ini\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Tiada volum baru; keluar.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "Arahan '%s' gagal"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s tidak bersambung pada volum ini"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s tidak bersambung pada volum ini"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s adalah salah saiz (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Volum ini tidak dalam turutan"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arkib tidak dilabelkan supaya memadan %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Volum %s tidak sepadan %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -786,20 +793,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Hanya boleh membaca  %lu drpd  %lu byte"
 msgstr[1] "Hanya boleh membaca  %lu drpd  %lu byte"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Kandungan berlainan"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "EOF tanpa diduga pada arkib"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Jenis fail berbeza"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Mod berbeza"
 
@@ -815,143 +822,143 @@ msgstr "Gid berbeza"
 msgid "Mod time differs"
 msgstr "Masa mod berbeza"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Saiz berbeza"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Tidak dipautkan ke %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symlink berbeza"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Nombor beranti berbeza"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Tentusah"
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Jenis fail tak dikenali '%c', berlainan dengan fail normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "GAGAL TENTUSAH: %d pengepala tak sah dikesan"
 msgstr[1] "GAGAL TENTUSAH: %d pengepala tak sah dikesan"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "nilai %s diluar julat %s %s..%s; menggantikan %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "nilai %s diluar julat %s %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Menjana pengepala oktal negatif"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: fail tidak berubah; tidak dilonggokkan"
 
-#: src/create.c:634
+#: src/create.c:621
 #, fuzzy, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: fail tidak berubah; tidak dilonggokkan"
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: fail tidak berubah; tidak dilonggokkan"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Fail mengucup sebanyak %s byte; pad dengan sifar"
 msgstr[1] "%s: Fail mengucup sebanyak %s byte; pad dengan sifar"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: fail adalah pada sistemfail lain; tidak dilonggokkan"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Jenis fail tak dikenali; fail diabaikan"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Pautan ke %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: fail tidak berubah; tidak dilonggokkan"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: fail adalah arkib; tidak dilonggokkan"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: fail berubah bila kami membacanya"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: soket diabaikan"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: pintu diabaikan"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Melangkah ke pengepala berikut"
 
@@ -959,75 +966,75 @@ msgstr "Melangkah ke pengepala berikut"
 msgid "Deleting non-header from archive"
 msgstr "Memadam bukan-pengepala drpd arkib"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: setem masa %s adalah %lu pada masa akan datang"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Ketidakkonsistenan luar dugaan bila membuat direktori"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Direktori ditukarnama sebelum statusnya boleh diekstrak"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Mengekstrak fail bersambung sebagai fail biasa"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Cuba mengekstrak pautan simbolik sebagai pautan keras"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Tak dapat ekstrak -- fail bersambung dari volum lain"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Penghujungan tanpa diduga data imej PNM"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Jenis fail tak dikenali '%c', diekstrak sebagai fail biasa"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Tak dapat backup fail ini"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Tak dapat menukarnama ke %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Direktori telah ditukarnama"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Direktori telah ditukarnama"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Direktori adalah baru"
@@ -1139,172 +1146,174 @@ msgstr "%s: Memadam %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: tak dapat buang"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr ""
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok TIADA **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Akhir Fail **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Pengepala kosong dimana nilai %s numerik dijangka"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr "Nilai oktal arkib %.*s diluar julat %s; anggap kedua-dua pelengkap"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Nilai oktal arkib %.*s diluar julat %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr ""
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Rentetan %s base-64 ditandatangani arkibadalah diluar julat %s "
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Nilai base-256 arkub adalah diluar julat %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arkib mengandungi %.*s dimana nilai %s numerik dijangka"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Nilai %s arkib adalah dijuar julat %s %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr "Pautan ke %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr "jenis fail tak diketahui %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Pengepala Volum--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Bersambung pada byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Mencipta direktori:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Tak dapat tukar direktori kerja"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Menukarnama %s ke %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Tak dapat menukarnama ke %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Menukarnama %s kembali ke %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Tak dapat simpan direktori kerja"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Tak dapat tukar direktori kerja"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Fail dibuang sebelum kami membacanya"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Fail dibuang sebelum kami membacanya"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proses anak"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "saluran antaraproses"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Tak dijumpai pada arkib"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Tak dijumpai pada arkib"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arkib tidak dilabelkan supaya memadan %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1328,7 +1337,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1348,7 +1357,7 @@ msgstr ""
 "verbose.\n"
 "  %s -xf arkib.tar           # Ekstrak semua fail drpd arkib.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1360,80 +1369,80 @@ msgid ""
 "  never, simple   always make simple backups\n"
 msgstr ""
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "EOF tanpa diduga pada arkib"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1441,565 +1450,565 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr ""
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 #, fuzzy
 msgid "extract files to standard output"
 msgstr "Ralat ketika menulis ke output piawai"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Tak dapat menentusah arkib multi-volume"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "opsyen format arkib konflik"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Opsyen mampatan konflik"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Tak dapat tukar direktori kerja"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Membuang awalan  `%.*s' drpd nama ahli"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "Volum %s tidak sepadan %s"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2007,290 +2016,295 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Mod tidak sah diberi pada opsyen"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr ""
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Anda tak boleh nyatakan lebih drpd satu opsyen `-Acdtrux'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Opsyen mampatan konflik"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr "jenis fail tak diketahui %s\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Fail tarikh tidak dijumpai"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Mengganti %s bagi format tarikh tak diketahui %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: fail adalah arkib; tidak dilonggokkan"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "%s: fail adalah arkib; tidak dilonggokkan"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Faktor pemblokan tidak sah"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "panjang pita tidak sah"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr ""
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Kumpulan tidak sah"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Mod tidak sah diberi pada opsyen"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 #, fuzzy
 msgid "Invalid number"
 msgstr "Nombot inod tidak sah"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Pemilik tidak sah"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Saiz rekod tidak sah"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Saiz rekod mesti dalam gandaan %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 #, fuzzy
 msgid "Invalid number of elements"
 msgstr "panjang pita tidak sah"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr ""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Opsyen `-[0-7][lmh]' tak disokong oleh tar *ini*"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "OPsyen lama `%c' memerlukan hujah."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Fail akrib beraneka memerlukan opsyen `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Tak boleh gabung  --listed-incremental dengan --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, fuzzy, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Label volum adalah terlalu panjang (had adalah %lu byte)"
 msgstr[1] "%s: Label volum adalah terlalu panjang (had adalah %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Tak dapat menentusah arkib multi-volume"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Tak dapat menentusahkan arkib termampat"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Tak dapat menggunakan arkib multi-volume termampat"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Tak dapat mengemaskini arkib termampat"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Secara dayus enggan mencipta arkib kosong"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Opsyen `-Aru' tak serasi dengan  `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Anda mesti nyatakan satu drpd opsyen `-Acdtrux'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2302,84 +2316,84 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Fail mengecil sebanyak %s byte"
 msgstr[1] "%s: Fail mengecil sebanyak %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Setem masa diluar julat"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Rentetan %s base-64 ditandatangani arkibadalah diluar julat %s "
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Nilai %s arkib adalah dijuar julat %s %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2420,247 +2434,258 @@ msgstr "Menulis titiksemak %d"
 msgid "Read checkpoint %u"
 msgstr "Membaca titiksemak %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Menjana fail data untuk suit ujian GNU tar.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Opsyen mampatan konflik"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "Ralat ketika menulis ke output piawai"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Pengunaan : %s [OPSYEN]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Setem masa tidak sah"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Nombor inod diluar julat"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Ralat sistem tidak diketahui"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Tak dapat tutup"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr "jenis fail tak diketahui %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Tak dapat rayau ke %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Tak dapat rayau ke %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "Anak mati dengan isyarat %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "Nama fail modul"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Tak dapat simpan direktori kerja"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Tak dapat menukarnama ke %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: opsyen salah  -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Membaca %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "\n"
@@ -2669,12 +2694,6 @@ msgstr "Nama fail modul"
 #~ "\n"
 #~ "Lapor pepijat ke <bug-tar@gnu.org>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Membaca %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Ralat adalah tidak boleh dipulihkan: keluar sekarang"
-
 #, fuzzy
 #~ msgid "filter the archive through compress"
 #~ msgstr "%s: fail adalah arkib; tidak dilonggokkan"
@@ -2717,6 +2736,9 @@ msgstr "Nama fail modul"
 #~ msgid "Premature end of file"
 #~ msgstr "Akhir fail tak matang"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Ralat adalah tidak boleh dipulihkan: keluar sekarang"
+
 #~ msgid "block size"
 #~ msgstr "saiz blok"
 
index 82630b30696cd67dd945795c264af0910c7d3b18..3ebdbf53bac0b6883ca248c6926f3d443c19a773 100644 (file)
Binary files a/po/nb.gmo and b/po/nb.gmo differ
index 4dfcbffd7ecc28941d40bc8f042cb5316767238f..99a13b1261a5475025338b39b73e2e1160a7ac2f 100644 (file)
--- a/po/nb.po
+++ b/po/nb.po
@@ -2,14 +2,16 @@
 # Copyright (C) 1996 Free Software Foundation, Inc.
 # Karl Anders Øygard <Karl.Oygard@fou.telenor.no>, 1996.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU tar 1.12\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 1997-06-05 19:39 MET DST\n"
 "Last-Translator: Espen Skjelnes Johnsen <espejohn@sn.no>\n"
 "Language-Team: Norwegian-bokmål <no@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -85,7 +87,7 @@ msgstr "Tast 
 msgid "Report bugs to %s.\n"
 msgstr ""
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Unkjent systemfeil"
 
@@ -97,8 +99,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -136,56 +138,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "Ugyldig verdi for record_size"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "Gammelt flagg «%c» behøver et argument."
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "Gammelt flagg «%c» behøver et argument."
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 #, fuzzy
 msgid "memory exhausted"
@@ -514,195 +521,195 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Kan ikke eksekvere \"remote shell\""
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr ""
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Ugyldig modus gitt i flagg"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Ugyldig datoformat «%s»"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr ""
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Ugyldig eier gitt i flagg"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr ""
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: For tidlig filslutt\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Ugyldig verdi for record_size"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Uventet filslutt i ødelagte navn"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "Kan ikke åpne %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Ugyldig kommando"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Dette ser ikke ut som et tar-arkiv"
 
 #
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Totalt antall bytes skrevet: "
 
 #
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 #, fuzzy
 msgid "Total bytes read"
 msgstr "Totalt antall bytes skrevet: "
 
 #
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Totalt antall bytes skrevet: "
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr ""
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Ugyldig verdi for record_size"
 
 #
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Arkivnavn er ikke oppgitt"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Kan ikke verifisere stdin/stdout-arkiv"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
 #
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Kan ikke oppdatere komprimerte arkiver"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "På begynnelsen av båndet, avslutter nå"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "For mange feil, avslutter"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Blokkstørrelse = %d enheter"
 msgstr[1] "Blokkstørrelse = %d enheter"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 #, fuzzy
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Kunne ikke gå tilbake i arkivfilen.  Den kan være uleselig uten -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr ""
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr ""
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, fuzzy, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "\aGjør klar volum nummer %d for %s og trykk return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF der svar fra bruker var forventet"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ADVARSEL: Arkivet er ufullstendig"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -714,71 +721,71 @@ msgstr ""
 " !          Start et shell\n"
 " ?          Skriv denne listen\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Ikke nytt volum; avslutter.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr ""
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s fortsetter ikke i dette volumet"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s fortsetter ikke i dette volumet"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, fuzzy, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s har feil størrelse (%ld != %ld + %ld)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Dette volumet kommer ute av rekkefølge"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, fuzzy, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arkivet er ikke navngitt for å passe med «%s»"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, fuzzy, c-format
 msgid "Volume %s does not match %s"
 msgstr "Volumet «%s» stemmer ikke overens med «%s»"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "Arkiv %s sluttet ikke ved en blokkgrense"
@@ -790,22 +797,22 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Kunne bare lese %d av %ld bytes"
 msgstr[1] "Kunne bare lese %d av %ld bytes"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 #, fuzzy
 msgid "Contents differ"
 msgstr "Modus er ulik"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Uventet filslutt i arkivet"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 #, fuzzy
 msgid "File type differs"
 msgstr "Størrelse er ulik"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Modus er ulik"
 
@@ -821,145 +828,145 @@ msgstr "Gid er ulik"
 msgid "Mod time differs"
 msgstr "Modifiseringstid er ulik"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Størrelse er ulik"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Ikke linket til %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symbolsk link er ulik"
 
-#: src/compare.c:321
+#: src/compare.c:316
 #, fuzzy
 msgid "Device number differs"
 msgstr "Enhetsnummer er endret"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verifisering "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "Ukjent filtype «%c» for %s, diffet som en vanlig fil"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "VERIFIKASJONSFEIL: %d ukjente arkivhoder funnet"
 msgstr[1] "VERIFIKASJONSFEIL: %d ukjente arkivhoder funnet"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr ""
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr ""
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: er uendret; ikke lagret"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: er uendret; ikke lagret"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "Filen %s krympet med %d bytes, fyller ut med nuller"
 msgstr[1] "Filen %s krympet med %d bytes, fyller ut med nuller"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, fuzzy, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: På et annet filesystem.  Ikke lagret"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 #, fuzzy
 msgid "contents not dumped"
 msgstr " (minnet lagret)"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Ukjent filtype; filen ble ignorert"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " link til %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, fuzzy, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: er uendret; ikke lagret"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, fuzzy, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s er arkivet; ikke lagret"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr ""
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr ""
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr ""
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Hopper til neste startseksjon"
 
@@ -967,75 +974,75 @@ msgstr "Hopper til neste startseksjon"
 msgid "Deleting non-header from archive"
 msgstr "Tar bort ikke-hodedata fra arkivet"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr ""
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr ""
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Ekstraherer sammenhengende filer som vanlige filer"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Forsøker å ekstrahere symbolske linker som harde linker"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, fuzzy, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "Kan ikke ekstrahere «%s» -- filen fortsetter fra et tidligere volum"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Uventet filslutt i arkivfilen"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "Ukjent filtype «%c» for %s, ekstrahert som en vanlig fil"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Kunne ikke lage sikkerhetskopi av denne filen"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Kan ikke endre navn på %s til %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "Filkatalogen %s har endret navn"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed"
 msgstr "Filkatalogen %s har endret navn"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, fuzzy, c-format
 msgid "%s: Directory is new"
 msgstr "Filkatalogen %s er ny"
@@ -1149,174 +1156,174 @@ msgstr "%s: Sletter %s\n"
 msgid "%s: Cannot remove"
 msgstr "Kan ikke slette %s"
 
-#: src/list.c:115
+#: src/list.c:130
 #, fuzzy, c-format
 msgid "%s: Omitting"
 msgstr "Utelater %s"
 
-#: src/list.c:133
+#: src/list.c:146
 #, fuzzy, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blokk %10ld: ** Blokk med NUL-er **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, fuzzy, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blokk %10ld: ** Slutt på fil **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, fuzzy, c-format
 msgid "block %s: "
 msgstr "blokk %10ld: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr ""
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr ""
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 
-#: src/list.c:821
+#: src/list.c:836
 #, fuzzy, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Dette volumet kommer ute av rekkefølge"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr ""
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " link til %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, fuzzy, c-format
 msgid " unknown file type %s\n"
 msgstr " ukjent filtype «%c»\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Volumhode--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, fuzzy, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Fortsetter ved byte %ld--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Lager filkatalog:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Kan ikke gå til filkatalogen %s"
+
+#: src/misc.c:571
 #, fuzzy, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Endret navn på %s til %s"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, fuzzy, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "Kan ikke endre navn på %s til %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, fuzzy, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Endret navn på %s til %s"
 
-#: src/misc.c:669
-#, fuzzy
-msgid "Cannot save working directory"
-msgstr "Kan ikke gå til filkatalogen %s"
-
-#: src/misc.c:675
-#, fuzzy
-msgid "Cannot change working directory"
-msgstr "Kan ikke gå til filkatalogen %s"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr ""
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "Filkatalogen %s har endret navn"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr ""
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr ""
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Finnes ikke i arkivet"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Finnes ikke i arkivet"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arkivet er ikke navngitt for å passe med «%s»"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1340,7 +1347,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1351,7 +1358,7 @@ msgid ""
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1375,80 +1382,80 @@ msgstr ""
 "                  ellers enkle\n"
 "  never, simple   lag enkle sikkerhetskopier\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Uventet filslutt i arkivet"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1456,568 +1463,568 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 #, fuzzy
 msgid "remove files after adding them to the archive"
 msgstr "Tar bort enhetsnavn fra navn i arkivet"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr ""
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Kan ikke verifisere arkiv som går over flere volum"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Arkivér til stdin"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Konflikt i kompresjonsflagg"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "Kan ikke skrive til komprimeringsprogrammet"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "Kan ikke skrive til komprimeringsprogrammet"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Kan ikke gå til filkatalogen %s"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
 #
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Tar bort ledende «/» fra absolutte linker"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "Volumet «%s» stemmer ikke overens med «%s»"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2025,292 +2032,297 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Ugyldig modus gitt i flagg"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 #, fuzzy
 msgid "ask for confirmation for every action"
 msgstr "Kan ikke lese bekreftelse fra brukeren"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Du kan ikke angi mer enn ett av «-Acdtrux»-flaggene"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Konflikt i kompresjonsflagg"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr "Ukjent mønster «%s»"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr ""
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr ""
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr ""
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr ""
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr ""
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr ""
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Mer enn én grense-dato"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "Ugyldig eier gitt i flagg"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Ugyldig modus gitt i flagg"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr ""
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 #, fuzzy
 msgid "Invalid owner"
 msgstr "Ugyldig eier gitt i flagg"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 #, fuzzy
 msgid "Invalid record size"
 msgstr "Ugyldig verdi for record_size"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Blokkstørrelse må være delbart på %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr ""
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, fuzzy, c-format
 msgid "Unknown density: `%c'"
 msgstr "Ukjent mønster «%s»"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Flaggene «-[0-7][lmh]» støttes ikke av *denne* implementasjonen av tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Gammelt flagg «%c» behøver et argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Ved flere arkivfiler behøves «-M»-flagget"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr ""
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Kan ikke verifisere arkiv som går over flere volum"
 
 #
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Kan ikke verifisere komprimerte arkiver"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Kan ikke bruke komprimerte arkiv som går over flere volum"
 
 #
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Kan ikke oppdatere komprimerte arkiver"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "For feig til å lage et tomt arkiv"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Flaggene «-Aru» er inkompatible med «-f -»"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Du må angi ett av «-Acdtrux»-flaggene"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2322,83 +2334,83 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Filen krympet med %d bytes, (øh!)"
 msgstr[1] "%s: Filen krympet med %d bytes, (øh!)"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr ""
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr ""
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2439,244 +2451,252 @@ msgstr "Skriver kontrollpunkt %d"
 msgid "Read checkpoint %u"
 msgstr "Leser kontrollpunkt %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Genrerer datafiler for GNU tar testpakke.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Konflikt i kompresjonsflagg"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr ""
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Bruk: %s [FLAGG]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 #, fuzzy
 msgid "Update the access and modification times of FILE"
 msgstr "%s: Kunne ikke endre aksess- og modifiseringstider"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Ugyldig datoformat «%s»"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr ""
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Unkjent systemfeil"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, fuzzy, c-format
 msgid "cannot open `%s'"
 msgstr "Kan ikke åpne %s"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Kan ikke eksekvere %s"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr "Ukjent mønster «%s»"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "Kan ikke gjøre «stat» på %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "Kan ikke åpne %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr ""
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Ødelagte filnavn--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Kan ikke gå til filkatalogen %s"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "Kan ikke endre navn på %s til %s"
+
 #~ msgid "Reading %s\n"
 #~ msgstr "Leser %s\n"
 
index 3e32023c424e6e86c188999c93d5e9f945cc6bb6..8decb5c7d1f39c78c27eff3c1ac0f0dba17d8576 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index a671c82dd0747b45ef807b793416411f0be03e85..6b5efbaf69a8d18b23e20ac45c09169c8ab8157f 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,21 +1,25 @@
 # Dutch translations for tar.
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
 #
 # Elros Cyriatan <cyriatan@fastmail.fm>, 2004.
-# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2008.
+# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2008, 2010.
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar-1.22\n"
+"Project-Id-Version: tar-1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2009-03-25 21:42+0100\n"
-"Last-Translator: Erwin Poeze <erwin.poeze@gmail.com>\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-12 10:28+0200\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"Language: nl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.0\n"
 
 #: gnu/argmatch.c:135
 #, c-format
@@ -89,7 +93,7 @@ msgstr ""
 "Rapporteer gebreken in het programma aan %s;\n"
 "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Onbekende systeemfout"
 
@@ -101,8 +105,8 @@ msgstr "deze hulptekst tonen"
 msgid "give a short usage message"
 msgstr "een korte gebruikssamenvatting tonen"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NAAM"
 
@@ -140,56 +144,61 @@ msgstr "**Interne programmafout**: optie had herkend moeten worden!?"
 msgid "write error"
 msgstr "schrijffout"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: optie '%s' is niet eenduidig\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: optie '--%s' staat geen argument toe\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: optie '%c%s' staat geen argument toe\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
-#, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: optie '%s' vereist een argument\n"
+#: gnu/getopt.c:639 gnu/getopt.c:658
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: optie '--%s' vereist een argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: onbekende optie '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: onbekende optie '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: ongeldige optie -- %c\n"
+msgstr "%s: ongeldige optie -- '%c'\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: optie vereist een argument -- %c\n"
+msgstr "%s: optie vereist een argument -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: optie '-W %s' is niet eenduidig\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: optie '-W %s' staat geen argument toe\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: optie '-W %s' vereist een argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "onvoldoende geheugen beschikbaar"
@@ -254,12 +263,12 @@ msgstr "^[nN]"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "In pakketvorm gebracht door %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "In pakketvorm gebracht door %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
@@ -278,10 +287,11 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Licentie GPLv3+: GNU GPL versie 3 of nieuwer <http://gnu.org/licenses/gpl."
-"html>.\n"
 "Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.\n"
-"Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
+"De precieze licentie is GPL-3+: GNU General Public License versie 3 of "
+"later.\n"
+"Zie http://gnu.org/licenses/gpl.html voor de volledige (Engelse) tekst.\n"
+"Deze software kent GEEN GARANTIE, voor zover de wet dit toestaat.\n"
 "\n"
 
 #. TRANSLATORS: %s denotes an author name.
@@ -397,38 +407,36 @@ msgstr ""
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
 msgstr ""
-"Rapporteer gebreken in het programma aan %s;\n"
+"\n"
+"Rapporteer gebreken in het programma aan <%s>;\n"
 "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
 msgstr ""
-"\n"
-"Rapporteer gebreken in het programma aan <%s>;\n"
+"Rapporteer gebreken in het programma '%s' aan <%s>;\n"
 "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "Webpagina van %s: <%s>\n"
 
 #: gnu/version-etc.c:255
-#, fuzzy, c-format
+#, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr "%s-beginpagina: <http://www.gnu.org/software/%s/>.\n"
+msgstr "Webpagina van %s: <http://www.gnu.org/software/%s/>\n"
 
 #: gnu/version-etc.c:258
-#, fuzzy
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
-"Algemene hulp bij het gebruik van GNU software: <http://www.gnu.org/gethelp/"
-">.\n"
+"Algemene hulp bij gebruik van GNU-software: <http://www.gnu.org/gethelp/>\n"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -535,196 +543,190 @@ msgstr "standaarduitvoer"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Kan geen verbinding maken met %s: herleiding is mislukt"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Kan gindse shell niet uitvoeren"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Sprongrichting valt buiten bereik"
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Ongeldige modus gegeven bij optie"
+msgstr "Ongeldige sprongrichting"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Ongeldige grootte: %s"
+msgstr "Ongeldige sprongpositie"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Sprongpositie valt buiten bereik"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Ongeldige bandlengte"
+msgstr "Ongeldig byte-aantal"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "Sprongpositie valt buiten bereik"
+msgstr "Byte-aantal valt buiten bereik"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd: Voortijdig einde van bestand\n"
+msgstr "Voortijdig einde van bestand"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "Hoofdbewerkingen:"
+msgstr "Ongeldige bewerkingscode"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Bewerking wordt niet ondersteund"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "Onverwacht einde-van-bestand in archief"
+msgstr "Onverwachte argumenten"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
+"Een magneetband manipuleren, en opdrachten accepteren van een ander proces."
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "AANTAL"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "debug-niveau instellen"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "BESTAND"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "naam van debug-uitvoerbestand instellen"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
-msgstr "Kan '%s' niet openen"
+msgstr "kan %s niet openen"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "te veel argumenten"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Ongeldige opdracht"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Dit ziet er niet uit als een tar-archief"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Totaal aantal geschreven bytes"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Totaal aantal gelezen bytes"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Totaal aantal verwijderde bytes: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pijp)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Ongeldige waarde voor recordgrootte"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Geen archiefnaam opgegeven"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Kan archieven op standaardinvoer of -uitvoer niet verifiëren"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Archief is gecomprimeerd.  Gebruik optie '%s'."
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Kan ingepakte archieven niet bijwerken"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Aan het begin van de band -- tar sluit nu af."
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Te veel fouten -- tar sluit nu af."
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Recordgrootte = %lu blok"
 msgstr[1] "Recordgrootte = %lu blokken"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Niet-uitgelijnd blok (%lu byte) in archief"
 msgstr[1] "Niet-uitgelijnd blok (%lu bytes) in archief"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Kan niet terugzoeken in archiefbestand; het kan onleesbaar zijn zonder -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek() is niet gestopt op een recordgrens"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: bevat een ongeldig deelnummer"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Deelnummer-overloop"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Zet deel #%d voor %s klaar en druk op Enter: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "een lege tekst, terwijl gebruikersinvoer werd verwacht"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "WAARSCHUWING: Archief is onvolledig"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -736,65 +738,65 @@ msgstr ""
 " q           tar afbreken\n"
 " y of Enter  doorgaan\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !           een subshell starten\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?           dit lijstje tonen\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Geen nieuw deel -- tar sluit af.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Geen bestandsnaam opgegeven.  Probeer het nog eens.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Ongeldige invoer.  Typ ? voor hulp.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Opdracht %s is mislukt"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s gaat mogelijk verder in dit deel: de kop bevat een afgekapte naam"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s gaat niet verder in dit deel"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s heeft een verkeerde grootte (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Dit deel valt buiten de reeks (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
-msgstr "Archief is niet gemerkt als overeenkomend met %s"
+msgstr "Archief bevat geen label, kan niet overeenkomen met %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Deel %s komt niet overeen met %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -802,9 +804,9 @@ msgstr ""
 "%s: bestandsnaam is te lang om opgeslagen te worden in een GNU-meerdelenkop; "
 "afgekapt"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
-msgstr "write is niet gestopt op een blokgrens"
+msgstr "schrijven is niet gestopt op een recordgrens"
 
 #: src/compare.c:95
 #, c-format
@@ -813,20 +815,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Kon slechts %lu van %lu byte lezen"
 msgstr[1] "Kon slechts %lu van %lu bytes lezen"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Inhouden verschillen"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Onverwacht einde-van-bestand in archief"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Bestandssoort verschilt"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Modus verschilt"
 
@@ -842,144 +844,144 @@ msgstr "GID verschilt"
 msgid "Mod time differs"
 msgstr "Wijzigingstijd verschilt"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Grootte verschilt"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Niet gekoppeld aan %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symbolische koppeling verschilt"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Apparaatnummer verschilt"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verifiëren "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Onbekende bestandssoort '%c'; gedifft als gewoon bestand"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Archief bevat bestandsnamen waarvan de prefixen verwijderd zijn."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Een verificatie kan mogelijk de originele bestanden niet vinden."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "Verificatie is MISLUKT: %d ongeldige kop gevonden"
 msgstr[1] "Verificatie is MISLUKT: %d ongeldige koppen gevonden"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Een los blok met nullen op %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: map bevat cache-markering %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "waarde %s valt buiten bereik voor %s (%s..%s); wordt vervangen door %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "waarde %s valt buiten bereik voor %s (%s..%s)"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Er worden negatieve octale koppen gemaakt"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: bestandsnaam is te lang (max %d); niet gearchiveerd"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: bestandsnaam is te lang (kan niet worden gesplitst); niet gearchiveerd"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: koppelingsnaam is te lang; niet gearchiveerd"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Bestand is gekrompen met %s byte; aangevuld met nullen"
 msgstr[1] "%s: Bestand is gekrompen met %s bytes; aangevuld met nullen"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: bestand staat op een ander bestandssysteem; niet gearchiveerd"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "inhoud niet gearchiveerd"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Onbekende bestandssoort; bestand genegeerd"
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr "Ontbrekende koppelingen naar %s.\n"
+msgstr "Ontbrekende koppelingen naar %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: bestand is ongewijzigd; niet gearchiveerd"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: bestand is het archief zelf; niet gearchiveerd"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "map is niet gearchiveerd"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: bestand is gewijzigd tijdens het lezen"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socket genegeerd"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: deur genegeerd"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Alles tot aan volgende kop wordt overgeslagen"
 
@@ -987,75 +989,75 @@ msgstr "Alles tot aan volgende kop wordt overgeslagen"
 msgid "Deleting non-header from archive"
 msgstr "Niet-kop wordt uit archief verwijderd"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: onwaarschijnlijk oude tijdsstempel %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: tijdsstempel %s ligt %s seconden in de toekomst"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Onverwachte inconsistentie tijdens aanmaken van map"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Map werd hernoemd voordat de status ervan kon worden bepaald"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Aaneengesloten bestanden worden uitgepakt als gewone bestanden"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr ""
 "Poging om symbolische koppelingen als harde koppelingen uit te pakken..."
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
-msgstr "%s: Kan niet uitpakken -- bestand gaat door in een ander deel"
+msgstr "%s: Kan niet uitpakken -- bestand gaat door vanuit een ander deel"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
-msgstr "Onverwachte lange-naamkop"
+msgstr "Onverwachte langenaamkop"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Onbekende bestandssoort '%c'; uitgepakt als gewoon bestand"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Huidige %s is nieuwer of even oud"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Kan geen reservekopie van dit bestand maken"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Kan %s niet tot %s hernoemen"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Map is hernoemd van %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Map is hernoemd"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Map is nieuw"
@@ -1167,35 +1169,35 @@ msgstr "%s: Verwijderen van %s...\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Kan niet verwijderen"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Overgeslagen"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok van NUL-tekens **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
-msgstr "blok %s: ** Einde-bestand **\n"
+msgstr "blok %s: ** Einde-van-bestand **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Witruimte in kop waar numerieke waarde voor %s werd verwacht"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1203,144 +1205,145 @@ msgstr ""
 "aangenomen"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Octaalwaarde %.*s in archief valt buiten bereik voor %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Archief bevat ouderwetse grondtal-64 koppen"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Tekenreeks %s (met grondtal-64-met-teken) valt buiten bereik voor %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Grondtal-256 waarde in archief valt buiten bereik voor %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Archief bevat %.*s waar numerieke waarde voor %s werd verwacht"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Waarde %s in archief valt buiten bereik voor %s (%s..%s)"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " koppeling naar %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " onbekende bestandssoort %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Lange koppeling--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Lange naam--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Deelkop--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Verder bij byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Aanmaken van map:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Kan werkmap niet wijzigen"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Hernoemen van %s tot %s...\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Kan niet tot %s hernoemen"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Hernoemen van %s terug tot %s...\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Kan werkmap niet opslaan"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Kan werkmap niet wijzigen"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Bestand werd verwijderd voordat het gelezen kon worden"
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s: Bestand werd verwijderd voordat het gelezen kon worden"
+msgstr "%s: Map werd verwijderd voordat deze gelezen kon worden"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "dochterproces"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "interproces-kanaal"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Bestandsnamen bevatten jokertekens.  Gebruik '--wildcards'"
+msgstr "Bestandsnamen bevatten jokertekens."
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "om patroonovereenkomsten in te schakelen,"
+msgstr ""
+"Gebruik '--wildcards' om patroonovereenkomsten in te schakelen,\n"
+"of '--no-wildcards' om deze waarschuwing te onderdrukken."
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Komt niet voor in archief"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Is vereist maar komt niet voor in archief"
 
-#: src/names.c:894
-#, fuzzy
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Archieflabel komt niet overeen"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
-msgstr "--preserve-order en --listed-incremental gaan niet samen"
+msgstr ""
+"Met '--listed-incremental' is '-C' niet toegestaan binnen een bestandenlijst"
 
-#: src/names.c:900
-#, fuzzy
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr "--preserve-order en --listed-incremental gaan niet samen"
+msgstr "Met '--listed-incremental' is slechts één '-C' toegestaan"
 
 #: src/tar.c:81
 #, c-format
@@ -1364,7 +1367,7 @@ msgstr ""
 "Onbekende aanhalingsstijl '%s'.  Probeer '%s --quoting-style=help' voor een "
 "overzicht."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1384,7 +1387,7 @@ msgstr ""
 "  tar -tvf archief.tar         # Alle bestanden in archief.tar opsommen.\n"
 "  tar -xf archief.tar          # Alle bestanden van archief.tar uitpakken.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1405,80 +1408,80 @@ msgstr ""
 "  nil, existing   genummerd als ze al bestaan, anders simpel\n"
 "  never, simple   altijd simpele reservekopieën maken\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Hoofdbewerkingen:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "de inhoud van een archief opsommen"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "bestanden uit een archief uitpakken"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "een nieuw archief aanmaken"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "verschillen tussen archief en bestandssyteem vinden"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "bestanden aan het eind van een archief toevoegen"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 "alleen bestanden toevoegen die nieuwer zijn dan hun versie in het archief"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "tar-bestanden aan een archief toevoegen"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "uit het archief verwijderen (niet gebruiken bij magneetbanden!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "label van archiefdeel controleren en stoppen"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Werkingsaanpassers:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "luchtige bestanden efficiënt verwerken"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "HOOFD[.SUB]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
-msgstr "versie van te gebruiken luchtige indeling (impliceert '--sparse')"
+msgstr "versie van te gebruiken luchtige indeling (impliceert --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "oude GNU-indeling van incrementeel archief verwerken"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "nieuwe GNU-indeling van incrementeel archief verwerken"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "dump-niveau voor aan te maken incrementeel archief"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "niet afsluiten met een foutcode bij onleesbare bestanden"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1490,129 +1493,128 @@ msgstr ""
 "diff, --extract of --list, en wanneer een lijst van bestanden gegeven is op "
 "de opdrachtregel of via de optie -T; AANTAL is standaard 1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
-msgstr "archief is doorzoekbaar"
+msgstr "in archief kan worden gesprongen"
 
-#: src/tar.c:436
-#, fuzzy
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr "archief is doorzoekbaar"
+msgstr "in archief kan niet worden gesprongen"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 "geen apparaatnummers controleren tijdens aanmaken van incrementele archieven"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "apparaatnummers controleren tijdens aanmaken van incrementele archieven "
 "(standaard)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Overschrijvingsopties:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "het archief na het schrijven proberen te verifiëren"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "bestanden na hun toevoeging aan het archief verwijderen"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "bij het uitpakken bestaande bestanden niet vervangen"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "bestaande bestanden die nieuwer zijn dan die in het archief niet vervangen"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "bestaande bestanden bij het uitpakken overschrijven"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "elk bestand verwijderen alvorens eroverheen uit te pakken"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "bestaande mappen leegmaken alvorens eroverheen uit te pakken"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "metagegevens van bestaande mappen behouden"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "de metagegevens van bestaande mappen bij het uitpakken overschrijven "
 "(standaard)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Selecteren van uitvoerkanaal:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "bestanden uitpakken naar standaarduitvoer"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "OPDRACHT"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "uitgepakte bestanden via pijp naar gegeven programma sluizen"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "afsluitwaardes van dochterprocessen negeren"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 "afsluitwaardes van dochterprocessen die niet nul zijn als fout behandelen"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Behandeling van bestandskenmerken:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "toegevoegde bestanden krijgen NAAM als eigenaar"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "toegevoegde bestanden krijgen NAAM als groep"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATUM-OF-BESTAND"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
-"wijzigingstijd zetten van bestanden die wegens DATUM-OF-BESTAND toegevoegd "
-"zijn"
+"wijzigingstijd zetten van bestanden die wegens DATUM-OF-BESTAND zijn "
+"toegevoegd"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "WIJZIGINGEN"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "toegevoegde bestanden krijgen (symbolische) WIJZIGINGEN in hun modus"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "MANIER"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1622,31 +1624,31 @@ msgstr ""
 "herstellen van de tijdsstempels na het lezen (MANIER='replace'; standaard), "
 "of door de tijdsstempels met rust te laten (MANIER='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "bestandswijzigingstijden niet uitpakken"
 
-#: src/tar.c:504
-#, fuzzy
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
-msgstr "bestanden proberen uit te pakken met gelijkblijvende eigenaar"
+msgstr ""
+"bestanden proberen uit te pakken met dezelfde eigenaar als in het archief "
+"(standaard voor root)"
 
-#: src/tar.c:506
-#, fuzzy
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
-msgstr "bestanden uitpakken als uzelf"
+msgstr "bestanden uitpakken als uzelf (standaard voor gewone gebruikers)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "altijd getallen gebruiken voor gebruikers- en groepsnamen"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "bestandspermissies ook uitpakken (standaard voor root)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1654,157 +1656,157 @@ msgstr ""
 "de umask van de gebruiker toepassen bij het uitpakken van bestandspermissies "
 "(standaard voor gewone gebruikers)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 "uit te pakken namen sorteren zodanig dat ze overeenkomen met de volgorde in "
 "het archief"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "hetzelfde als -p en -s samen"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
-"het zetten van permissies en tijdsstempels van mappen uitstellen tot het "
-"einde van het uitpakken"
+"het zetten van permissies en tijdsstempels van mappen uitstellen tot na het "
+"uitpakken"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "het effect van de optie --delay-directory-restore ongedaan maken"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Apparaatselectie en -wisseling:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIEF"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "archiefbestand of apparaat ARCHIEF gebruiken"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "archiefbestand is lokaal, zelfs als het een dubbele punt bevat"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
-msgstr "deze OPDRACHT gebruiken in plaats van rmt"
+msgstr "deze OPDRACHT gebruiken in plaats van 'rmt'"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
-msgstr "deze OPDRACHT gebruiken in plaats van rsh"
+msgstr "deze OPDRACHT gebruiken in plaats van 'rsh'"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "schijf en dichtheid opgeven"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "meerdelig archief aanmaken/opsommen/uitpakken"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "band wisselen na schrijven van AANTAL x 1024 bytes"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "script uitvoeren aan einde van elke band (impliceert -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "het deelnummer in BESTAND gebruiken/bijwerken"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blokverwerking:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKKEN"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOKKEN x 512 bytes per record"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "AANTAL bytes per record (een veelvoud van 512)"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "blokken met nullen in archief negeren (betekenen einde-van-bestand)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "doorgaan met lezen tot blok compleet is (voor 4.2BSD-pijpen)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Archiefindelingskeuze:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "INDELING"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "een archief maken in de gekozen indeling"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "INDELING is een van de volgende:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "oude V7 tar-indeling"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU-indeling van tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU-indeling van tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar-indeling)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax-indeling)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "hetzelfde als pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "hetzelfde als --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "hetzelfde als --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "sleutelwoord[[:]=waarde][,sleutelwoord[[:]=waarde]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "het aangeven van pax-sleutelwoorden"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEKST"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1812,78 +1814,78 @@ msgstr ""
 "een archief met deelnaam TEKST maken; bij opsommen/uitpakken TEKST als "
 "zoekpatroon voor de deelnaam gebruiken"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Compressie-opties:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "compressieprogramma afleiden uit bestandsachtervoegsel"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "compressieprogramma niet afleiden uit bestandsachtervoegsel"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROGRAMMA"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
-msgstr "het archief door dit programma filteren (moet -d accepteren)"
+msgstr "het archief door dit programma filteren (moet '-d' accepteren)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Lokale bestandskeuze:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "het gegeven BESTAND aan het archief toevoegen (handig als de naam begint met "
 "een '-')"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "MAP"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "naar MAP gaan"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "namen van in of uit te pakken bestanden uit BESTAND halen"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
-msgstr "-T leest met NUL afgesloten namen, -C uitzetten"
+msgstr "'-T' leest met NUL afgesloten namen, schakelt '-C' uit"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
-msgstr "het resultaat van de vorige --null-optie ongedaan maken"
+msgstr "het resultaat van de vorige '--null'-optie ongedaan maken"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
-"aanhalingstekens verwijderen rond bestandsnamen gelezen met -T (standaard)"
+"aanhalingstekens verwijderen rond bestandsnamen gelezen met '-T' (standaard)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
-msgstr "aanhalingstekens niet verwijderen rond bestandsnamen gelezen met -T"
+msgstr "aanhalingstekens niet verwijderen rond bestandsnamen gelezen met '-T'"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATROON"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "bestanden uitsluiten, gegeven als een PATROON"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "uitsluitingspatronen staan opgesomd in BESTAND"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1891,95 +1893,95 @@ msgstr ""
 "inhoud van mappen die CACHEDIR.TAG bevatten uitsluiten, behalve CACHEDIR.TAG "
 "zelf"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "alles onder mappen die CACHEDIR.TAG bevatten uitsluiten"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "mappen die CACHEDIR.TAG bevatten uitsluiten"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "inhoud van mappen die BESTAND bevatten uitsluiten, behalve BESTAND zelf"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "alles onder mappen die BESTAND bevatten uitsluiten"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "mappen die BESTAND bevatten uitsluiten"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "systeemmappen van versiebeheer uitsluiten"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "reservekopieën en vergrendelingsbestanden uitsluiten"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "niet automatisch afdalen in mappen"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "in het lokale bestandssysteem blijven bij maken van archief"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "recursief in mappen afdalen (standaard)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "leidende '/' niet uit bestandsnamen verwijderen"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "symbolische koppelingen volgen; de bestanden waar ze naar verwijzen "
 "archiveren"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "harde koppelingen volgen; de bestanden waar ze naar verwijzen archiveren"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "LIDNAAM"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "beginnen bij lid LIDNAAM in het archief"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "alleen bestanden opslaan die nieuwer zijn dan DATUM-OF-BESTAND"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATUM"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "datum en tijd alleen vergelijken wanneer gegevens veranderd zijn"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "MANIER"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "voor verwijdering een reservekopie maken, op de aangegeven MANIER"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "TEKENREEKS"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1988,99 +1990,98 @@ msgstr ""
 "(in plaats van '~', die standaard is tenzij door omgevingsvariable "
 "SIMPLE_BACKUP_SUFFIX veranderd)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Bestandsnaam-transformaties:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "dit AANTAL leidende componenten uit bestandsnamen verwijderen"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "EXPRESSIE"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 "deze vervangings-EXPRESSIE gebruiken om bestandsnamen met 'sed' te "
 "transformeren"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
-msgstr "Bestandsnaamselectie-opties (voor zowel in- als uitsluitingspatronen)"
+msgstr "Bestandsnaamselectie-opties (voor zowel in- als uitsluitingspatronen):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "verschil tussen hoofd- en kleine letters negeren"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "patronen komen overeen met begin van bestandsnaam"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 "patronen komen overeen met alles na een '/' (is standaard bij uitsluiting)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "hoofdlettergevoelige vergelijking (standaard)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "jokertekens gebruiken (is standaard bij uitsluiting)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "exacte tekenreeksvergelijking"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "jokertekens komen niet overeen met '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "jokertekens komen overeen met '/' (is standaard bij uitsluiting)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informatieve uitvoer:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "de verwerkte bestanden opsommen"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "SLEUTELWOORD"
 
-#: src/tar.c:740
-#, fuzzy
+#: src/tar.c:741
 msgid "warning control"
-msgstr "Overschrijvingsopties:"
+msgstr "waarschuwingsbeleid"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "voortgangsberichten tonen voor elk AANTALste record (standaard 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ACTIE"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "bij elk controlepunt deze ACTIE uitvoeren"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "een bericht tonen als niet alle links gearchiveerd werden"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2092,27 +2093,31 @@ msgstr ""
 "ontvangen wordt; mogelijke signalen zijn: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 "
 "en SIGUSR2; de namen zonder het voorvoegsel SIG worden ook geaccepteerd"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "bestandswijzigingstijden in UTC tonen"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "bestandstijden in volledige resolutie tonen"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
-msgstr "breedsprakige uitvoer naar BESTAND sturen"
+msgstr "gedetailleerde uitvoer naar BESTAND sturen"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "blokgetal binnen archief tonen bij elk bericht"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "bij elke actie om toestemming vragen"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "standaardinstellingen van tar tonen"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2120,33 +2125,33 @@ msgstr ""
 "bij opsommen of uitpakken: elke map opsommen die niet aan zoekcriteria "
 "voldoet"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "bestands- of archiefnamen na transformatie tonen"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STIJL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "aanhalingsstijl voor namen instellen (zie verderop voor geldige waarden van "
 "STIJL)"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "ook de tekens in TEKENREEKS aanhalen"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "de tekens in TEKENREEKS niet aanhalen"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Compatibiliteitsopties:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2154,64 +2159,63 @@ msgstr ""
 "bij aanmaken hetzelfde als --old-archive; bij uitpakken hetzelfde als --no-"
 "same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Andere opties:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
-msgstr "gebruik van mogelijk gevaarlijke opties of opdrachten uitschakelen"
+msgstr ""
+"het gebruik van potentieel gevaarlijke opties of opdrachten uitschakelen"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Slechts één van de opties 'Acdtrux' is mogelijk"
+msgstr "Slechts één van de opties '-Acdtrux' of '--test-label' is mogelijk"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Conflicterende compressie-opties"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Onbekende signaalnaam: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Voorbeeldbestand voor tijdsstempel niet gevonden"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Onbekende datumopmaak %2$s wordt vervangen door %1$s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Optie %s: datum '%s' wordt begrepen als %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: bestandenlijst is al gelezen"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: gelezen bestandsnaam bevat een NUL-teken"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "het archief door 'xz' filteren"
+msgstr "het archief door '%s' filteren"
 
-#: src/tar.c:1290
-#, fuzzy
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
-msgstr "Geldige argumenten van --quoting-style zijn:"
+msgstr "Geldige argumenten van de optie '--quoting-style' zijn:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2219,174 +2223,170 @@ msgstr ""
 "\n"
 "*Deze* tar gebruikt de volgende standaardwaarden:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
-msgstr "Ongeldige blokindeling"
+msgstr "Ongeldige blokkenfactor"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Ongeldige bandlengte"
 
-#: src/tar.c:1511
-#, fuzzy
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr "Onjuiste incrementele bestandsindeling"
+msgstr "Onjuiste waarde van incrementeel niveau"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Meerdere drempeldata"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Ongeldig versienummer voor luchtige indeling"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' is op dit platform niet mogelijk"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
-msgstr "waarde van --checkpoint is geen geheel getal"
+msgstr "Waarde van '--checkpoint' is geen geheel getal"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s: Ongeldige groep"
+msgstr "Ongeldige groep"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Ongeldige modus gegeven bij optie"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Ongeldig nummer"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Ongeldige eigenaar"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
-"De optie --preserve is vervallen, gebruik nu --preserve-permissions --"
-"preserve-order"
+"De optie '--preserve' is vervallen; gebruik nu '--preserve-permissions --"
+"preserve-order'."
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Ongeldige recordgrootte"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Recordgrootte moet een veelvoud zijn van %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Ongeldig aantal elementen"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
-msgstr "Slechts één optie --to-command is toegestaan"
+msgstr "Slechts één optie '--to-command' is toegestaan"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Ongeldig dichtheidsargument: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Onbekende dichtheid: '%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Opties '-[0-7][lmh]' worden niet ondersteund door *deze* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[BESTAND]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Oude optie '%c' vereist een argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "'--occurrence' betekent niets zonder een bestandenlijst"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "'--occurrence' kan niet worden gebruikt in de gevraagde werkingsmodus"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Voor meerdere archiefbestanden is de optie '-M' vereist"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
-msgstr "Kan '--listed-incremental' niet met '--newer' combineren"
+msgstr "Opties '--listed-incremental' en '--newer' gaan niet samen"
 
-#: src/tar.c:2387
-#, fuzzy
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "--preserve-order en --listed-incremental gaan niet samen"
+msgstr "Optie '--level' is betekenisloos zonder '--listed-incremental'"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Deellabel is te lang (grens is %lu byte)"
 msgstr[1] "%s: Deellabel is te lang (grens is %lu bytes)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Kan meerdelige archieven niet verifiëren"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Kan ingepakte archieven niet verifiëren"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
-msgstr "Kan geen meerdelige ingepakte archieven gebruiken"
+msgstr "Kan geen meerdelige ingepakte archieven verwerken"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Kan ingepakte archieven niet samenvoegen"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "optie '--pax' kan alleen worden gebruikt bij POSIX-archieven"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Deellengte kan niet kleiner zijn dan de recordgrootte"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
-msgstr "--preserve-order en --listed-incremental gaan niet samen"
+msgstr "Opties '--preserve-order' en '--listed-incremental' gaan niet samen"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Een geheel leeg archief wordt niet aangemaakt"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Opties '-Aru' gaan niet samen met '-f -'"
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "U dient een van de opties '-Acdtrux' op te geven"
+msgstr "U dient een van de opties '-Acdtrux' of '--test-label' op te geven"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
-msgstr "Stopt met foutstatus vanwege eerdere fouten"
+msgstr "Gestopt in fouttoestand vanwege eerdere fouten"
 
 #: src/update.c:86
 #, c-format
@@ -2395,57 +2395,56 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Bestand is gekrompen met %s byte"
 msgstr[1] "%s: Bestand is gekrompen met %s bytes"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Sleutelwoord %s is onbekend of nog niet geïmplementeerd"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "Getal valt buiten toegestaan bereik: %s"
+msgstr "Tijdsstempel valt buiten toegestaan bereik"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Patroon %s kan niet worden gebruikt"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Sleutelwoord %s kan niet worden overstegen"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Onjuiste uitgebreide kop: ontbrekende lengte"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Lengte van uitgebreide kop valt buiten bereik"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Lengte %*s van uitgebreide kop valt buiten bereik"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Onjuiste uitgebreide kop: ontbrekende witruimte na de lengte"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Onjuiste uitgebreide kop: ontbrekend isgelijkteken"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Onjuiste uitgebreide kop: ontbrekend regeleinde"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Genegeerd: onbekend sleutelwoord '%s' in uitgebreide kop"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2454,28 +2453,28 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr ""
 "Waarde %2$s in uitgebreide kop valt buiten bereik voor %1$s (%3$s..%4$s)"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Onjuiste uitgebreide kop: ongeldige %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Onjuiste uitgebreide kop: overtollige %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Onjuiste uitgebreide kop: ongeldige %s: onverwacht scheidingsteken %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Onjuiste uitgebreide kop: ongeldige %s: oneven aantal waarden"
@@ -2516,7 +2515,7 @@ msgstr "Schrijfcontrolepunt %u"
 msgid "Read checkpoint %u"
 msgstr "Leescontrolepunt %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2524,97 +2523,95 @@ msgstr ""
 "genfile manipuleert gegevensbestanden voor de testreeksen van GNU paxutils.\n"
 "OPTIES zijn:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Bestandsaanmaak-opties:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "GROOTTE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "een bestand van de gegeven GROOTTE aanmaken"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "naar het bestand NAAM schrijven i.p.v. naar standaarduitvoer"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "bestandsnamen uit BESTAND lezen"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T leest met NUL afgesloten namen"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "het bestand met het gegeven PATROON vullen; PATROON is 'default' (standaard) "
 "of 'zeros' (nullen)"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "blokgrootte voor luchtig bestand"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "luchtig bestand genereren; de rest van de opdrachtregel specificeert de "
 "indeling"
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "POSITIE"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "naar deze positie springen alvorens met schrijven te beginnen"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Bestandsstatistieken-opties:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
-"voor elk gegeven bestand de inhoud van de 'struct stat' printen; de "
+"voor elk gegeven bestand de inhoud van de struct 'stat' printen; de "
 "standaard INDELING is: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Synchrone-uitvoer-opties:"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [OPTIE...]"
+msgstr "OPTIE"
 
-#: tests/genfile.c:165
-#, fuzzy
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
-"gegeven OPDRACHT uitvoeren; dit is nuttig bij '--checkpoint' samen met één "
-"van '--cut', '--append' of '--touch'"
+"gegeven ARGUMENTEN uitvoeren; dit is nuttig bij '--checkpoint' samen met één "
+"van '--cut', '--append', '--touch', of '--unlink'"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "de gegeven actie uitvoeren (zie verderop) bij bereiken van het AANTALste "
 "controlepunt"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "de datum voor de volgende '--touch'"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "de uitgevoerde controlepunten en de afsluitwaarde van OPDRACHT tonen"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2622,7 +2619,7 @@ msgstr ""
 "Synchroon uit te voeren acties.  Deze worden uitgevoerd bij het bereiken van "
 "het controlepunt opgegeven met de optie '--checkpoint'."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2630,218 +2627,144 @@ msgstr ""
 "BESTAND afkappen tot de grootte opgegeven met een voorafgaande optie '--"
 "length' (of 0 als niet gegeven)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "BESTAND met GROOTTE aantal bytes vergroten; deze GROOTTE is met een "
 "voorafgaande optie '--length' opgegeven"
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "de toegangs- en wijzigingstijdsstempels van BESTAND bijwerken"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "OPDRACHT uitvoeren"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "BESTAND verwijderen"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Ongeldige grootte: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Getal valt buiten toegestaan bereik: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Negatieve grootte: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "Kan status van %s niet bepalen"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
-msgstr "gevraagde bestandslengte %lu, werkelijk %lu"
+msgstr "gevraagde bestandslengte is %lu, werkelijke is %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "aangemaakt bestand is niet luchtig"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Fout tijdens getalsontleding, nabij '%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Onbekende datumopmaak"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENTEN]..."
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "Kan '%s' niet openen"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
-msgstr "kan niet springen"
+msgstr "Kan niet springen"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "Bestandsnaam bevat een NUL-teken"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "Kan geen luchtige bestanden genereren op standaarduitvoer; gebruik de optie "
 "'--file'"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "Onjuist masker (nabij '%s')"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Onbekend veld '%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "Kan tijdsstempel van '%s' niet zetten"
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "Kan '%s' niet openen"
+msgstr "Kan '%s' niet verwijderen"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Opdracht is succesvol afgesloten\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Opdracht is mislukt met afsluitwaarde %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Opdracht is afgebroken door signaal %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Opdracht is gestopt door signaal %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Opdracht resulteerde in een core-dump\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Opdracht is afgebroken\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
-msgstr "'--stat' vereist bestandsnamen"
-
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s: ongeldige optie -- %c\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Report bugs to <%s>.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Rapporteer gebreken in het programma aan <%s>;\n"
-#~ "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
-
-#~ msgid "Reading %s\n"
-#~ msgstr "Lezen van %s...\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Fout is niet herstelbaar -- tar sluit nu af."
-
-#~ msgid "suppress this warning."
-#~ msgstr "of '-no-wildcards' om deze melding te onderdrukken."
-
-#~ msgid "filter the archive through bzip2"
-#~ msgstr "het archief door 'bzip2' filteren"
-
-#~ msgid "filter the archive through gzip"
-#~ msgstr "het archief door 'gzip' filteren"
-
-#~ msgid "filter the archive through compress"
-#~ msgstr "het archief door 'compress' filteren"
-
-#~ msgid "filter the archive through lzma"
-#~ msgstr "het archief door 'lzma' filteren"
-
-#~ msgid "filter the archive through lzop"
-#~ msgstr "het archief door 'lzop' filteren"
-
-#~ msgid "Input string too long"
-#~ msgstr "Invoertekenreeks is te lang"
-
-#~ msgid "Number syntax error"
-#~ msgstr "Syntaxfout in getal"
-
-#~ msgid "rmtd: Cannot allocate buffer space\n"
-#~ msgstr "rmtd: Kan geen bufferruimte reserveren\n"
-
-#~ msgid "Cannot allocate buffer space"
-#~ msgstr "Kan geen bufferruimte reserveren"
-
-#~ msgid "Try `%s --help' for more information.\n"
-#~ msgstr "Typ '%s --help' voor meer informatie.\n"
-
-#~ msgid ""
-#~ "Usage: %s [OPTION]\n"
-#~ "Manipulate a tape drive, accepting commands from a remote process.\n"
-#~ "\n"
-#~ "  --version  Output version info.\n"
-#~ "  --help     Output this help.\n"
-#~ msgstr ""
-#~ "Gebruik:  %s [OPTIE]\n"
-#~ "Een magneetband manipuleren, en opdrachten accepteren van een ander "
-#~ "proces.\n"
-#~ "\n"
-#~ "  --version  programmaversie tonen\n"
-#~ "  --help     deze hulptekst tonen\n"
-
-#~ msgid "Seek offset error"
-#~ msgstr "Sprongpositiefout"
-
-#~ msgid "Premature end of file"
-#~ msgstr "Voortijdig einde van bestand"
-
-#~ msgid "Warning: the -I option is not supported; perhaps you meant -j or -T?"
-#~ msgstr ""
-#~ "Waarschuwing: optie -I is niet mogelijk; bedoelt u misschien -j of -T?"
+msgstr "Optie '--stat' vereist bestandsnamen"
 
-#~ msgid "Error exit delayed from previous errors"
-#~ msgstr "Uitgestelde afbreking na eerdere fouten"
+#~ msgid "Cannot save working directory"
+#~ msgstr "Kan werkmap niet opslaan"
index 32778062a4ecde71b12a5e9fadbf6b2621b397ac..c6a479bf058941ec07008019e90bbe16b4fac346 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index 6dd9fbd774e42a36f0cdcb14830b0b703d6db3df..2010fc86f49c40ce12e94a09308c2a6f4a45297b 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,16 +1,18 @@
 # Polish translation of GNU tar
 # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
-# Rafał Maszkowski <rzm@icm.edu.pl>, 1996, 1997, 2000, 2001, 2003, 2004, 2006-2010.   „
+# Rafał Maszkowski <rzm@icm.edu.pl>, 1996, 1997, 2000, 2001, 2003, 2004, 2006-2010.   „
 # Thanks to Jakub Bogusz for remarks and corrections, 2003, 2004, 2007, 2008
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-15 16:05+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-13 14:50+0200\n"
 "Last-Translator: Rafał Maszkowski <rzm@icm.edu.pl>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"Language: pl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -87,7 +89,7 @@ msgstr "Użyj `%s --help' albo `%s --usage' żeby otrzymać więcej informacji\n
 msgid "Report bugs to %s.\n"
 msgstr "Raporty o błędach należy wysyłać do %s .\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Nieznany błąd systemu"
 
@@ -99,8 +101,8 @@ msgstr "wyświetlenie tego opisu"
 msgid "give a short usage message"
 msgstr "krótka informacja o opcjach"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NAZWA"
 
@@ -138,56 +140,61 @@ msgstr "(BŁĄD PROGRAMU) Opcja powinna była być rozpoznana!?"
 msgid "write error"
 msgstr "błąd zapisu"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: opcja '%s' jest niejednoznaczna\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: opcja '--%s' nie może mieć argumentu\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: opcja '%c%s' nie może mieć argumentu\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: opcja '%s' wymaga argumentu\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: opcja '--%s' wymaga argumentu\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: nierozpoznana opcja '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: nierozpoznana opcja '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: błędna opcja -- '%c'\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: opcja wymaga argumentu -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: opcja '-W %s' nie może mieć argumentu\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: opcja '-W %s' wymaga argumentu\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "brak pamięci"
@@ -534,144 +541,145 @@ msgstr "stdout"
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
 msgstr ""
+"Nie można połączyć się z %s: nie udało się przetłumaczyć nazwy na adres"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Nie można uruchomić zdalnego shella"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Sposób ustawiania pozycji w pliku spoza zakresu"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Błędne kierunek przesuwania wskaźnika pozycji"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Błędne przesunięcie wskaźnika pozycji"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Pozycja w pliku poza zakresem"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Błędna liczba bajtów"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "Liczba bajtów poza zakresem"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "Przedwczesny EOF"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Błędny kod operacji"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "Operacja nie przewidziana"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Nieoczekiwany argumenty"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 "Posługiwanie się napędem taśmowym, przyjmowanie poleceń od zdalnego procesu"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "LICZBA"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "ustawienie poziomu wypisywania informacji diagnostycznych"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "PLIK"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "plik do zapisywania informacji diagnostycznych"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "nie można otworzyć %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "za dużo argumentów"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Bezsensowna komenda"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "To nie wygląda jak archiwum tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Licza zapisanych bajtów"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Liczba przeczytanych bajtów"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Liczba skasowanych bajtów: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Błędna wartość record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Nie podana nazwa archiwum"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Nie można zweryfikować archiwum z/do stdin/stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Archiwum jest skompresowane. Należy użyć opcji %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Nie można uaktualnić archiwum skompresowanego"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Na początku taśmy, teraz kończę"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Za dużo błędów, kończę"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
@@ -679,7 +687,7 @@ msgstr[0] "Rozmiar rekordu = %lu blok"
 msgstr[1] "Rozmiar rekordu = %lu bloki"
 msgstr[2] "Rozmiar rekordu = %lu bloków"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
@@ -687,38 +695,38 @@ msgstr[0] "Nierówny blok (%lu bajt) w archiwum"
 msgstr[1] "Nierówny blok (%lu bajty) w archiwum"
 msgstr[2] "Nierówny blok (%lu bajtów) w archiwum"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Nie można się cofnąć w pliku archiwum; może nie być czytelny bez -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek nie zatrzymał się na granicy rekordów"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: zawiera błędny numer części"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Przepełnienie numeru części"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Przygotuj część numer %d dla %s i naciśnij return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF kiedy była oczekiwana odpowiedź użytkownika"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "UWAGA: Archiwum jest niekompletne"
 
 # rare case when `for parts' translates into `części' for both sing. and plural in Polish - rzm
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -729,68 +737,68 @@ msgstr ""
 " q             Zakończenie programu tar\n"
 " y albo Enter  Kontynuacja\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Uruchomienie powłoki\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Wypisanie tej listy\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Brak nowej części; zakończenie pracy.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Brak nazwy pliku. Spróbuj jeszcze raz.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 "Błędne dane wejściowe. Wciśnij ? żeby przeczytać informacje pomocnicze\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s polecenie zwróciło błąd"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s prawdopodobnie jest kontynuowany w tej części: nagłówek zawiera skróconą "
 "nazwę"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s nie jest kontynuowany w tej części"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s to zły rozmiar (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Ta część nie jest w kolejności (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Etykieta archiwum nie pasuje do %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Część %s nie pasuje do %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -798,7 +806,7 @@ msgstr ""
 "%s: nazwa pliku jest za długa do zapisania w nagłówku wieloczęściowego "
 "archiwum GNU, zostanie skrócona"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "zapis nie zakończył się na granicy bloków"
 
@@ -810,20 +818,20 @@ msgstr[0] "Można było przeczytać tylko %lu z %lu bajtu"
 msgstr[1] "Można było przeczytać tylko %lu z %lu bajtów"
 msgstr[2] "Można było przeczytać tylko %lu z %lu bajtów"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Zawartości się różnią"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Nieoczekiwany EOF w archiwum"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Różne typy plików"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Uprawnienia się różnią"
 
@@ -839,42 +847,42 @@ msgstr "Gid się różni"
 msgid "Mod time differs"
 msgstr "Czas modyfikacji się różni"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Rozmiar się różni"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Nie dołączony do %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Łącze symboliczne się różni"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Różnią się numery urządzeń"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Sprawdzanie "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Nieznany typ pliku `%c' porównywany jako zwykły plik"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Archiwum zawiera nazwy plików bez początkowych elementów ścieżek."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Podczas weryfikacji mogą nie być znalezione pliki lokalne"
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
@@ -882,48 +890,48 @@ msgstr[0] "BŁĄD WERYFIKACJI: wykryto %d błędny nagłówek"
 msgstr[1] "BŁĄD WERYFIKACJI: wykryto %d błędne nagłówki"
 msgstr[2] "BŁĄD WERYFIKACJI: wykryto %d błędnych nagłówków"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Samotny blok zerowy przy %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: zawiera znacznik katalogu pamięci podręcznej %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "wartość %s z %s poza zakresem %s..%s; podstawione %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "wartość %s z %s poza zakresem %s..%s"
 
 # hm? - rzm
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Tworzenie ujemnych nagłówków ósemkowych"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: nazwa pliku jest za długa (powyżej %d); nie została zapisana"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 "%s: nazwa pliku jest za długa (nie może być podzielona); nie została zapisana"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: nazwa łącza jest za długa; nie została zapisana"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -931,55 +939,55 @@ msgstr[0] "%s: Plik skurczył się o %s bajt; jest dopełniany zerami"
 msgstr[1] "%s: Plik skurczył się o %s bajty; jest dopełniany zerami"
 msgstr[2] "%s: Plik skurczył się o %s bajtów; jest dopełniany zerami"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: plik w innym systemie plików; nie został zapisany"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "zawartość nie została zapisana"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Nieznany typ pliku; plik zignorowany"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "Brakujące łącza do %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: plik jest niezmieniony; nie został zapisany"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: plik jest w tym archiwum; nie został zapisany"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "katalog nie został zapisany"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: plik zmienił się w trakcie czytania"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: zignorowane gniazdo z nazwą"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: zignorowany plik door"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Przeskoczenie do następnego nagłówka"
 
@@ -987,74 +995,74 @@ msgstr "Przeskoczenie do następnego nagłówka"
 msgid "Deleting non-header from archive"
 msgstr "Kasowanie z archiwum nie-nagłówka"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: niemożliwie stara data %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: znacznik czasowy %s jest przesunięty o %s s w przyszłość"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Nieoczekiwana niespójność przy zakładaniu katalogu"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Katalog zmienił nazwę zanim można było odtworzyć jego status"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Odtwarzanie plików ciągłych (nie sparse) jako zwykłych"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Próba odtworzenia łącza symbolicznego jako zwykłego"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Nie można odtworzyć -- plik jest kontynuowany z innej części"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Niespodziewany nagłówek z długą nazwą"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Nieznany typ pliku `%c', odtworzony jako plik zwykły"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Aktualny %s jest nowszy albo w tym samym wieku"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Nie można było zrobić kopii zapasowej tego pliku"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Nie można przemianować %s na %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Nazwa katalogu została zmieniona z %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Nazwa katalogu została zmieniona"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Katalog jest nowy"
@@ -1164,35 +1172,35 @@ msgstr "%s: Usunięcie %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Nie można usunąć"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Pominięty"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok zer **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok: %s: ** Koniec pliku **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Odstępy w nagłówku zamiast spodziewanej wartości numerycznej %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1200,143 +1208,144 @@ msgstr ""
 "jak uzupełnienie dwójkowe"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Wartość ósemkowa %.*s w archiwum jest spoza zakresu %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Archiwum zawiera przestarzałe nagłówki base64"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "W archiwum jest łańcuch base64 %s spoza zakresu %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Wartość base256 w archiwum jest spoza zakresu %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Archiwum zawiera %.*s tam gdzie oczekiwana była liczba %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Wartość %s w archiwum jest spoza zakresu %s %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " łącze do %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " nieznany typ pliku %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Długie łącze--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Długa nazwa--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Nagłówek części--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Kontynuacja od bajtu %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Tworzony jest katalog:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Nie można zmienić katalogu"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Nazwa %s zmieniona na %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Nie można przemianować na %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Nazwa zmieniona z %s z powrotem na %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Nie można zapisać bieżącego katalogu"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Nie można zmienić katalogu"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Plik usunięty zanim został przeczytany"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Katalog usunięty zanim został przeczytany"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proces potomny"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "kanał między procesami"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "W nazwach plików użyto znaków dopasowania wzorców. Proszę"
+msgstr "W nazwach plików użyto znaków dopasowania wzorców"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
-"użyć --wildcards aby włączyć porównywanie wzorców albo --no-wildcards żeby"
+"Użyj --wildcards aby włączyć porównywanie wzorców albo --no-wildcards żeby "
+"wyłączyć to ostrzeżenie"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Nie znalazłem w archiwum"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Brak podanego wystąpienia pliku w archiwum"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Nie pasująca etykieta archiwum"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "Nie jest dozwolone używanie opcji -C wewnątrz listy plików razem z --listed-"
 "incremental"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Z --listed-incremental można użyć tylko jednej opcji -C"
 
@@ -1362,7 +1371,7 @@ msgstr ""
 "Nieznany styl cytowania `%s'. Użyj `%s --quoting-style=help' żeby zobaczyć "
 "listę."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1381,7 +1390,7 @@ msgstr ""
 "tar.\n"
 "  tar -xf archive.tar          # rozpakowanie plików z archive.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1404,79 +1413,79 @@ msgstr ""
 "proste\n"
 "  never, simple   proste kopie zapasowe\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Podstawowe tryby działania:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "wypisanie zawartości archiwum"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "rozpakowanie plików z archiwum"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "utworzenie nowego archiwum"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "sprawdzenie różnic między archiwum i plikami na dysku"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "dołączenie plików na końcu archiwum"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "dołączenie tylko plików nowszych niż kopie w archiwum"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "dołączenie plików tar do archiwum"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "skasowanie plików z archiwum (nie na taśmie!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "przetestowanie etykiety archiwum i wyjście"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Modyfikatory działania:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "efektywne przetwarzanie plików rzadkich"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "ustawienie wersji używanego formatu plików rzadkich (włącza --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "backup przyrostowy w starym formacie GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "backup przyrostowy w nowym formacie GNU"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "numer poziomu tworzonej albo oglądanej przyrostowej kopii zapasowej"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "bez zakończenia błędem jeżeli niedostępne pliki"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1488,124 +1497,124 @@ msgstr ""
 "plików jest podana w linii poleceń albo przez opcję -T. LICZBA domyślnie "
 "wynosi 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "archiwum o swobodnym dostępie"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "archiwum bez swobodnego dostępu"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "bez sprawdzania numerów urządzeń przy tworzeniu archiwów przyrostowych"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr "ze sprawdzaniem numerów urządzeń przy tworzeniu archiwów przyrostowych"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Sterowanie zamazywaniem"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "próba weryfikacji archiwum po zapisaniu"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "usunięcie plików po dodaniu do archiwum"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "bez zamazania istniejących plików rozpakowanymi"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "bez zastępowania istniejących plików, które są nowsze niż ich kopie w "
 "archiwum"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "nadpisywanie istniejących plików"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "usunięcie każdego pliku przed zamazaniem go rozpakowanym plikiem"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "opróżnianie starych katalogów przed rozpakowaniem kopii z archiwum"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "zachowanie metadanych istniejących katalogów"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "nadpisywanie metadanych istniejących katalogów przy rozpakowywaniu "
 "(domyslnie)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Wybór strumienia wyjściowego"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "rozpakowanie plików na standardowe wyjście"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "POLECENIE"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "przekazanie rozpakowywanych plików do innego programu"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "zignorowanie kodów wyjścia procesów potomnych"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 "traktowanie niezerowych kodów wyjściowych procesów potomnych jako błędu"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Przetwarzanie atrybutów plików:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "nadanie właściciela NAZWA dodanym plikom"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "nadanie grupy NAZWA dodanym plikom"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATA_ALBO_PLIK"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "ustawianie czasu modyfikacji dodanych plików z DATA_ALBO_PLIK"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ZMIANY"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "ZMIANA uprawnień dodanych plików (podanych symbolicznie)"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METODA"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1615,11 +1624,11 @@ msgstr ""
 "czytaniu (METODA='replace'; domyślnie) albo przez nieustawianie czasu "
 "(METODA='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "bez odtworzenia czasu modyfikacji rozpakowanego pliku"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1627,22 +1636,22 @@ msgstr ""
 "staranie się o odtworzenie właścicieli plików według zapisu w archiwum "
 "(domyślnie dla superusera)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 "rozpakowanie plików jako własności rozpakowującego (domyślnie dla zwykłych "
 "użytkowników)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "używanie numerów, nie nazw użytkowników/grup"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "odtworzenie informacji o uprawnieniach plików (domyślnie dla superusera)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1650,15 +1659,15 @@ msgstr ""
 "użycie umask użytkownika przy odtwarzaniu uprawnień z archiwum (domyślnie "
 "dla zwykłych użytkowników)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "pliki do rozpakowania posortowane jak w archiwum"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "to samo co równocześnie -p i -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1666,139 +1675,139 @@ msgstr ""
 "ustawianie czasów zmian i uprawnień odtworzonych katalogów opóźnione do "
 "końca rozpakowywania"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "wyłączenie efektu opcji --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Wybór i przełączanie urządzeń:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIWUM"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "użycie pliku lub urządzenia ARCHIWUM"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "plik archiwum lokalny, nawet jeżeli ma dwukropek"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "użyj POLECENIA zamiast /etc/rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "użyj POLECENIA zamiast rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "podanie napędu i gęstości"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "tworzenie/wypisanie/rozpakowanie archiwum wieloczęściowego"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "zmiana taśmy po zapisaniu LICZBA x 1024 bajtów"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "uruchomienie skryptu na końcu taśmy (włącza -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "użycie/uaktualnienie numeru części w PLIKU"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Parametry bloków:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKI"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOKI x 512 bajtów na rekord"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "LICZBA bajtów w rekordzie, wielokrotność 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "ignorowanie wyzerowanych bloków w archiwum (oznacza EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "podzielenie na bloki przy odczycie (dla pipe 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Wybór formatu archiwum:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "utworzenie archiwum w danym formacie."
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT może być jednym z następujących:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "stary format tara z V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "format GNU dla tara <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "format tara GNU 1.13"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "format POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "format POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "to samo co pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "to samo co --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "to samo co --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "słowo_kluczowe[[:]=wartość][,słowo_kluczowe[[:]=wartość]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "ustawianie słów kluczowych formatu pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEKST"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1806,80 +1815,80 @@ msgstr ""
 "utworzenie archiwum z nazwą wolumenu TEKST. Przy wypisywaniu/rozpakowaniu "
 "TEKST będzie użyty jako wzorzec dopasowania dla nazwy"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Opcje kompresji"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "użycie przyrostka nazwy archiwum do ustalenia programu kompresującego"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 "bez używania przyrostka nazwy archiwum do wyznaczenia programu kompresującego"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROGRAM"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "filtrowanie przez PROGRAM (akceptujący -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Wybór plików lokalnych:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "dodanie podanego PLIKU do archiwum (przydatne jeżeli jego nazwa startuje od "
 "myślnika)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "KATALOG"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "przejście do KATALOGU"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "nazwy plików do rozpakowania lub spakowania z PLIKU"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T czyta nazwy zakończone zerem, wyłącz -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "wyłączenie efektu użycia opcji --null"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 "usunięcie znaków cytowania z nazw plików czytanych poprzez opcję -T "
 "(domyślnie)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "bez usuwania znaków cytowania z nazw plików czytanych poprzez opcję -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "WZORZEC"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "wykluczenie nazw pasujących do WZORCA"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "wykluczenie nazw pasujących do wzorców w PLIKU"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1887,91 +1896,91 @@ msgstr ""
 "wykluczenie katalogów zawierających znacznik pamięci podręcznej CACHEDIR."
 "TAG, oprócz samych plików znacznika"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "wykluczenie katalogów zawierających CACHEDIR.TAG i ich podkatalogów"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "wykluczenie katalogów zawierających CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "wykluczenie katalogów zawierających PLIK, ale nie samego PLIKU"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "wykluczenie katalogów zawierających PLIK i ich podkatalogów"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "wykluczenie katalogów zawierających PLIK"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "wykluczenie katalogów systemu administrowania wersjami"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "wykluczenie plików kopii zapasowych i rezerwacji zasobów"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "bez automatycznego zagłębiania się w katalogi"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "pozostanie w jednym systemie plików"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "zagłębianie się w podkatalogi (domyślnie)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "bez usuwania początkowego `/' z nazw plików"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "archiwizacja plików, na które wskazują łącza symboliczne"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "archiwizacja plików, na które wskazują łącza zwykłe"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NAZWA-PLIKU"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "zaczęcie od pliku NAZWA-PLIKU w archiwum"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "zapisanie tylko plików nowszych niż DATA albo data PLIKU"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATA"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "porównywanie daty i czasu tylko dla zmienionych danych"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "TRYB"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "kopia zapasowa przed usunięciem, wybranie TRYBU zarządzania wersjami"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "NAPIS"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1979,100 +1988,100 @@ msgstr ""
 "kopia zapasowa przed usunięciem, zmiana domyślnego przyrostka ('~', jeżeli "
 "nie zmieniony przez zmienną środowiska SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Zmiany nazwy plików:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 "ucięcie przed rozpakowaniem LICZBY początkowych elementów ścieżki z nazw "
 "plików"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "WYRAŻENIE"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "użycie WYRAŻENIA zamiany sed-a do przekształcenia nazw plików"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Opcje filtracji nazw plików (dotyczą zarówno wzorców wykluczania jak "
 "włączania):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "traktowanie tak samo małych i wielkich liter"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "nazwy porównywane od początków nazw plików"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "wzorce odnoszą się do nazw po każdym / (domyślnie)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "odróżnianie małych i wielkich liter (domyślnie)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "używanie wildcards (domyślnie dla wykluczania)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "dosłowne porównywanie napisów"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "wildcards nie są porównywane z `/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "wildcards są porównywane z '/' (domyślnie dla wykluczania)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informacje:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "wypisywanie szczegółów o przetwarzanych plikach"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "SŁOWO KLUCZOWE"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "sterowanie ostrzeżeniami"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "wypisywanie co ILE rekordów informacji o przetwarzaniu (domyslnie co 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "AKCJA"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "wykonanie AKCJI przy każdym punkcie kontrolnym"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "wypisanie komunikatu jeżeli nie wszytkie łącza zostały zapisane"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SYGNAŁ"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2084,27 +2093,31 @@ msgstr ""
 "sygnały: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 i SIGUSR2; nazwy bez prefiksu SIG "
 "są też akceptowane"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
-msgstr "wypisanie dat modyfikacji plików w UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "wypisanie czasów modyfikacji plików w UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "wypisanie czasu pliku z pełną dokładnością"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "zapisanie dokładnych informacji w PLIKU"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "pokazanie przy każdym komunikacie numeru bloku w archiwum"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "proszenie o potwierdzenie każdego działania"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "wypisanie domyślnych ustawień tar-a"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2112,33 +2125,33 @@ msgstr ""
 "wypisywanie każdego katalogu nie pasującego do kryteriów szukania przy "
 "wypisywaniu albo rozpakowywaniu archiwum"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "pokazanie nazw plików albo archiwów po przeszktałceniu"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STYL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "ustawienie stylu ujmowania nazw w cudzysłowy; poniżej dozwolone wartości "
 "STYLU"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "dodatkowe ujmowanie w znaki cytowania znaków z ŁAŃCUCHA"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "wyłączenie ujmowania w znaki cytowania znaków z ŁAŃCUCHA"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Opcje kompatybilności:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2146,63 +2159,63 @@ msgstr ""
 "przy tworzeniu: to samo co --old-archive przy odtwarzaniu: to co --no-same-"
 "owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Inne opcje:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "wyłączenie używania potencjalnie szkodliwych opcji"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 "Nie można podać więcej niż jednej opcji z `-Acdtrux' albo `--test-label'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Niezgodne opcje kompresji"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Nieznana nazwa sygnału: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Nie znaleziono pliku z datą"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Postawienie %s w miejscu nieznanego formatu daty %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Opcja %s: Potraktowanie daty `%s' jako %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: lista plików już przeczytana"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: przeczytana nazwa pliku zawiera znak NUL"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "filtrowanie archiwum przez %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Prawidłowe argumenty dla opcji --quoting-style:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2210,51 +2223,51 @@ msgstr ""
 "\n"
 "*Ten* tar ma domyślne parametry:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Błędny współczynnik łączenia w bloki"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Błędna długość taśmy"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Błędny numer poziomu przyrostowej kopii zapasowej"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Więcej niż jedna data graniczna"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Błędna wartość wersji plików rzadkich"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "ten system nie pozwala na użycie --atime-preserve='system'"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "wartość --checkpoint nie jest liczbą całkowitą"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Błędna grupa"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Błędne uprawnienia podane w opcji"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Błędny numer"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Błędny właściciel"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2262,68 +2275,68 @@ msgstr ""
 "Opcja --preserve jest przestarzała, zamiast niej użyj --preserve-permissions "
 "--preserve-order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Błędna wielkość rekordu"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Rozmiar rekordu musi być wielokrotnością %d"
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Błędna ilość elementów"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Wolno użyć tylko jednej opcji polecenia --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Błędna specyfikacja gęstości: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Nieznana gęstość: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Opcje `-[0-7][lmh]' nie są używane w *tym* tarze"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[PLIK]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Stara opcja `%c' wymaga argumentu."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence nie ma znaczenia bez listy plików"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence nie może być użyte w tym trybie"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Archiwum składające się z wielu plików wymaga opcji `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Nie można połączyć --listed-incremental z --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "opcja --level nic nie znaczy bez użycia --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2331,47 +2344,47 @@ msgstr[0] "%s: Za długa etykieta części (może mieć do %lu bajtu)"
 msgstr[1] "%s: Za długa etykieta części (może mieć do %lu bajtów)"
 msgstr[2] "%s: Za długa etykieta części (może mieć do %lu bajtów)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Nie można zweryfikować archiwum wieloczęściowego"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Nie można zweryfikować archiwum skompresowanego"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Nie można używać wieloczęściowego archiwum skompresowanego"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Nie można połączyć skompresowanych archiwów"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option może być użyta tylko przy archiwach POSIX-owych"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Długość części nie może być mniejsza od wielkości rekordu"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "opcja --preserve-order nie może być używana z --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Tchórzliwie odmawiam utworzenia pustego archiwum"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Opcje `-Aru' są niekompatybilne z `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Musisz podać jedną z opcji `-Acdtrux' albo `--test-label'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Zakończenie w stanie błędu z powodu uprzednich błędów"
@@ -2384,56 +2397,56 @@ msgstr[0] "%s: Plik skurczył się o %s bajt"
 msgstr[1] "%s: Plik skurczył się o %s bajty"
 msgstr[2] "%s: Plik skurczył się o %s bajtów"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Słowo kluczowe %s jest nieznane albo jeszcze nie zaimplementowane"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Czas spoza dozwolonego zakresu"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Nie może być użyty wzorzec %s"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Słowo kluczowe %s nie może być zastąpione"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Błędny nagłówek rozszerzony: brakuje długości"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Długość nagłówka rozszerzonego jest poza dozwolonym zakresem"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Długośc nagłówka rozszerzonego %*s jest poza zakresem"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Błędny nagłówek rozszerzony: brakuje odstępu po długości"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Błędny nagłówek rozszerzony: brakuje znaku równości"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Błędny nagłówek rozszerzony: brakuje znaku mowej linii"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Zignorowane nieznane słowo kluczowe nagłówka rozszerzonego `%s'"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2442,27 +2455,27 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Nagłówek rozszerzony - %s=%s jest poza zakresem %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Błędny nagłówek rozszerzony: błędny %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Błędny nagłówek rozszerzony: nadmiarowe %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Błędny nagłówek rozszerzony: błędny %s: niespodziewany ogranicznik %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Błędny nagłówek rozszerzony: błędny %s: nieparzysta liczba wartości"
@@ -2503,7 +2516,7 @@ msgstr "Punkt kontrolny zapisu %u"
 msgid "Read checkpoint %u"
 msgstr "Punkt kontrolny czytania %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2511,69 +2524,69 @@ msgstr ""
 "genfile służy do operacji na plikach w ramach zestawu testów GNU paxutils.\n"
 "OPCJE:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Opcje tworzenia plików:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "ROZMIAR"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Utworzenie pliku o podanym ROZMIARZE"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Pisanie na pliku NAZWA zamiast na standardowe wyjście"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Czytanie nazw plików z PLIKU"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T czyta nazwy zakończone zerem"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "Wypełnienie pliku podanym WZORCEM. WZORZEC to 'default' albo 'zeros'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Rozmiar bloku pliku rzadkiego"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Utworzenie pliku rzadkiego. Reszta argumentów określa mapę pliku."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "POZYCJA"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Ustawienie pozycji zapisu przez zapisem danych"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Opcje statystyki plików"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Wypisanie zawartości  struct stat  dla każdego podanego pliku. Domyślny "
 "FORMAT: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Opcje równoczesnego wykonywania:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "OPCJA"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2581,20 +2594,20 @@ msgstr ""
 "Wykonanie ARGUMENTÓW. Przydatne z --checkpoint i jednym z --cut, --append, --"
 "touch albo --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Wykonanie podanej akcji (zobacz niżej) po napotkaniu punktu kontrolnego NUMER"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Ustaw datę następnej opcji --touch"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Wypisanie wykonanych punktów kontrolnych i kodu wyjścia POLECENIA"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2602,7 +2615,7 @@ msgstr ""
 "Akcje równoczesnego wykonania. Są podejmowane po osiągnięciu punktu "
 "kontrolnego o numerze podanym przez opcję --checkpoint"
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2610,146 +2623,143 @@ msgstr ""
 "Obcięcie PLIKU do rozmiaru podanego przez poprzednia opcję --length (albo 0, "
 "jeżeli nie został podany)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Dodanie ROZMIAR bajtów do PLIKU. ROZMIAR jak podany przez poprzednią opcję --"
 "length."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Uaktualnienie czasów dostepu i modyfikacji PLIKU"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Wykonanie POLECENIA"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "Usunięcie PLIKU"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Błędny rozmiar: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Liczba spoza dozwolonego zakresu: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Ujemny rozmiar: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "błąd stat(%s)"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "żądana długość pliku %lu, faktyczna %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "utworzony plik nie jest rzadki"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Błąd przetwarzania liczby blisko `%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Nieznany format daty"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENTY...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "nie można otworzyć `%s'"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "nie można ustawić pozycji"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "nazwa pliku zawiera znak NUL"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "nie można utworzyć pliku rzadkiego na standardowym wyjściu, użyj opcji --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "nieprawidłowa maska (koło `%s')"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr " Nieznane pole `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "nie można ustawić czasu na `%s'"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "nie można usunąć `%s'"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Polecenie zakończyło się poprawnie\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Polecenie zakończyło się niepoprawnie z kodem %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Polecenie zostało zakończone sygnałem %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Polecenie zostało zatrzymane sygnałem %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Został zapisany obraz pamięci (core dump) polecenia\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Polecenie zakończone\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat wymaga podania nazwy pliku"
 
-#~ msgid "Cannot resolve hostname %s"
-#~ msgstr "Nieznany adres nazwy %s"
-
-#~ msgid "suppress this warning."
-#~ msgstr "wyłączyć to ostrzeżenie"
+#~ msgid "Cannot save working directory"
+#~ msgstr "Nie można zapisać bieżącego katalogu"
index 0a5f0f6d76a84419796bf1a77b28efb9c978ebb7..8d91ad3191f134efce2dee7cc1a914ecf4a8edf6 100644 (file)
Binary files a/po/pt.gmo and b/po/pt.gmo differ
index 57516eae18853cce29d35efa375f1c887e8412c6..f5f45b3046a26c0518333eb65d6f40c88dc4d191 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,14 +2,16 @@
 # Copyright (1995) Free Software Foundation, Inc.
 # António José Coutinho <ajc@di.uminho.pt>
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.11.9\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 1996-04-20 21:50\n"
 "Last-Translator: António José Coutinho <ajc@di.uminho.pt>\n"
 "Language-Team: Portuguese <pt@li.org>\n"
+"Language: pt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -88,7 +90,7 @@ msgstr "Para mais informa
 msgid "Report bugs to %s.\n"
 msgstr ""
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Erro desconhecido, do sistema"
 
@@ -100,8 +102,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -140,56 +142,61 @@ msgstr ""
 msgid "write error"
 msgstr "Escreve-se registo\n"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "Valor inválido para tamanho de registo (record_size)"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "A antiga opção `%c' exige um argumento."
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "A antiga opção `%c' exige um argumento."
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr ""
@@ -519,190 +526,190 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Não se consegue executar uma \"shell\" remota"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr ""
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr ""
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Formato de data inválido \"%s\""
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr ""
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr ""
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr ""
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Fim de ficheiro prematuro\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Valor inválido para tamanho de registo (record_size)"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Fim de ficheiro inesperado nos nomes truncados"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "Não se consegue abrir %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Comando desconhecido"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Isto  não se parece a um arquivo \"tar\""
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Número total de de \"bytes\" escritos: %d\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 #, fuzzy
 msgid "Total bytes read"
 msgstr "Número total de de \"bytes\" escritos: %d\n"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Número total de de \"bytes\" escritos: %d\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr ""
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Valor inválido para tamanho de registo (record_size)"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 #, fuzzy
 msgid "No archive name given"
 msgstr "Não deram nome de arquivo, que  fazer?"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Não se pode  de verificar arquivos stdin ou stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 #, fuzzy
 msgid "Cannot update compressed archives"
 msgstr "Não se pode actualizar o verificar um arquivo comprimido"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "No princípio da fita, pára-se imediatamente"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Erros de mais: termina-se"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Tamanho de bloco (blocksize) = blocos de %d"
 msgstr[1] "Tamanho de bloco (blocksize) = blocos de %d"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 #, fuzzy
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Não se conseguiu recuar o arquivo; pode ser ilegível sem -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr ""
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr ""
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, fuzzy, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "\aPreparar o volume no. %d para  %s e premir \"Return\": "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr ""
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ATENÇÃO: O arquivo está incompleto"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -714,71 +721,71 @@ msgstr ""
 " !          Criar uma \"sub-shell\" (interpretador de comandos)\n"
 " ?          Escrever esta lista\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Não há novo volume; termina-se. \n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr ""
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s não tem continuidade neste volume"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s não tem continuidade neste volume"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, fuzzy, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s não é a dimensão correcta (%ld != %ld + %ld)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Este volume está fora da sequência"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, fuzzy, c-format
 msgid "Archive not labeled to match %s"
 msgstr "O arquivo não tem etiqueta e não condiz com %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, fuzzy, c-format
 msgid "Volume %s does not match %s"
 msgstr "O volume não condiz!  %s!=%s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr ""
@@ -791,22 +798,22 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "%s: Só se pôde ler  %d de um total de %ld \"bytes\"\n"
 msgstr[1] "%s: Só se pôde ler  %d de um total de %ld \"bytes\"\n"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 #, fuzzy
 msgid "Contents differ"
 msgstr "Tempo de modificação"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Fim de ficheiro inesperado no arquivo"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 #, fuzzy
 msgid "File type differs"
 msgstr "%s: Ligação (\"link\") simbólica é diferente\n"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr ""
 
@@ -825,149 +832,149 @@ msgstr "%s: %s diferente\n"
 msgid "Mod time differs"
 msgstr "Tempo de modificação"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 #, fuzzy
 msgid "Size differs"
 msgstr "%s: Ligação (\"link\") simbólica é diferente\n"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, fuzzy, c-format
 msgid "Not linked to %s"
 msgstr "%s: Não está ligado a %s\n"
 
-#: src/compare.c:292
+#: src/compare.c:287
 #, fuzzy
 msgid "Symlink differs"
 msgstr "%s: Ligação (\"link\") simbólica é diferente\n"
 
-#: src/compare.c:321
+#: src/compare.c:316
 #, fuzzy
 msgid "Device number differs"
 msgstr "%s: Os números do periférico mudaram\n"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verificação"
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "Tipo de ficheiro \"%c\" desconhecido para %s; comparado como um ficheiro "
 "normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "ERRO DE VERIFICAÇÃO: Encontraram-se %d cabeçalhos inválidos"
 msgstr[1] "ERRO DE VERIFICAÇÃO: Encontraram-se %d cabeçalhos inválidos"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr ""
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr ""
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: não foi modificado; não será arquivado"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: não foi modificado; não será arquivado"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "O ficheiro %s diminuiu em %d \"bytes\", será completado com zeros"
 msgstr[1] "O ficheiro %s diminuiu em %d \"bytes\", será completado com zeros"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, fuzzy, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: Está num outro sistema de ficheiros; não será arquivado"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 #, fuzzy
 msgid "contents not dumped"
 msgstr " (imagem da memória despejada \"core dumped\")"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tipo de ficheiro desconhecido; ficheiro ignorado"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " ligação para %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, fuzzy, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: não foi modificado; não será arquivado"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, fuzzy, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s é o arquivo; não será arquivado"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr ""
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr ""
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr ""
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Salta para próximo cabeçalho"
 
@@ -975,80 +982,80 @@ msgstr "Salta para pr
 msgid "Deleting non-header from archive"
 msgstr "Apaga-se do arquivo um não-cabeçalho"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr ""
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr ""
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Estão-se a extrair ficheiros contíguos como sendo ficheiros normais"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr ""
 "Está-se a tentar extrair ligações simbólicas (sym. links) como ligações "
 "físicas (hard links)"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, fuzzy, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr ""
 "Não se pode extraír `%s' -- é a continuação de um ficheiro de outro volume"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Fim de ficheiro inesperado no ficheiro de arquivo"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr ""
 "Tipo \"%c\" do ficheiro \"%s\" desconhecido; extrai-se como um ficheiro "
 "normal"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr ""
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Não se consegue mudar o nome de %s para %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "Mudou-se o nome do directoria %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed"
 msgstr "Mudou-se o nome do directoria %s"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, fuzzy, c-format
 msgid "%s: Directory is new"
 msgstr "O directoria %s é novo"
@@ -1161,174 +1168,174 @@ msgstr "%s: Apaga-se  %s\n"
 msgid "%s: Cannot remove"
 msgstr "Não se consegue apagar %s"
 
-#: src/list.c:115
+#: src/list.c:130
 #, fuzzy, c-format
 msgid "%s: Omitting"
 msgstr "Omite-se %s"
 
-#: src/list.c:133
+#: src/list.c:146
 #, fuzzy, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloco %10ld: ** Bloco de NULs **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, fuzzy, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloco %10ld: ** Fim-de-ficheiro **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, fuzzy, c-format
 msgid "block %s: "
 msgstr "bloco %10ld: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr ""
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr ""
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 
-#: src/list.c:821
+#: src/list.c:836
 #, fuzzy, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Este volume está fora da sequência"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr ""
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " ligação para %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, fuzzy, c-format
 msgid " unknown file type %s\n"
 msgstr " tipo de ficheiro desconhecido \"%c\"\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Cabeçalho de volume--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, fuzzy, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Continua no \"byte\" %ld--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Criação de directoria::"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Não se pode mudar para a directoria %s"
+
+#: src/misc.c:571
 #, fuzzy, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Mudou-se o nome %s para %s"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, fuzzy, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "Não se consegue mudar o nome de %s para %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, fuzzy, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Mudou-se o nome %s para %s"
 
-#: src/misc.c:669
-#, fuzzy
-msgid "Cannot save working directory"
-msgstr "Não se pode mudar para a directoria %s"
-
-#: src/misc.c:675
-#, fuzzy
-msgid "Cannot change working directory"
-msgstr "Não se pode mudar para a directoria %s"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr ""
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "Mudou-se o nome do directoria %s"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr ""
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr ""
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Não foi encontrado no arquivo"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Não foi encontrado no arquivo"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "O arquivo não tem etiqueta e não condiz com %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1353,7 +1360,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1364,7 +1371,7 @@ msgid ""
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1376,80 +1383,80 @@ msgid ""
 "  never, simple   always make simple backups\n"
 msgstr ""
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Fim de ficheiro inesperado no arquivo"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1457,566 +1464,566 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 #, fuzzy
 msgid "remove files after adding them to the archive"
 msgstr "Retira-se a especificação do \"drive\" aos nomes no arquivo"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr ""
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Não se pode verificar arquivos multi-volume"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Arquivo para stdin"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Há conflitos entre as opções de compressão"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "Não se consegue escrever para o programa de compressão"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "Não se consegue escrever para o programa de compressão"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Não se pode mudar para a directoria %s"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Retira-se \"/\" das ligações (\"links\") absolutas "
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr ""
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2024,291 +2031,295 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 #, fuzzy
 msgid "ask for confirmation for every action"
 msgstr "Não se consegue obter confirmação, do utilizador"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Não se pode especificar mais do que uma das opções \"-Acdtrux\""
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Há conflitos entre as opções de compressão"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr "Opção \"%c\" desconhecida"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr ""
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr ""
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr ""
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr ""
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr ""
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr ""
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr ""
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "Valor inválido para tamanho de registo (record_size)"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr ""
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr ""
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr ""
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 #, fuzzy
 msgid "Invalid record size"
 msgstr "Valor inválido para tamanho de registo (record_size)"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "O tamanho dos registos tem que ser múltiplo de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr ""
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 #, fuzzy
 msgid "Only one --to-command option allowed"
 msgstr "Só se permite uma opção de compressão"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, fuzzy, c-format
 msgid "Unknown density: `%c'"
 msgstr "Opção \"%c\" desconhecida"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "As opções \"-[0-7][lmh]\" não são suportadas por *este* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "A antiga opção `%c' exige um argumento."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Para usar vários arquivos é necessária a opção \"-M\""
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr ""
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Não se pode verificar arquivos multi-volume"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 #, fuzzy
 msgid "Cannot verify compressed archives"
 msgstr "Não se pode actualizar o verificar um arquivo comprimido"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Não se pode de usar arquivos multi-volume comprimidos"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Não se pode actualizar o verificar um arquivo comprimido"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Recusa-se, covardemente, a criar um arquivo vazio"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "As opções \"-Aru\" são imcompatíveis com \"-f -\""
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Tem que se especificar uma das opções \"-Acdtrux\""
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2320,83 +2331,83 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: O ficheiro diminui em %d bytes, (desgraça!)"
 msgstr[1] "%s: O ficheiro diminui em %d bytes, (desgraça!)"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr ""
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr ""
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2437,243 +2448,251 @@ msgstr "Escreve-se o ponto de verifica
 msgid "Read checkpoint %u"
 msgstr "Leu-se o ponto de verificação %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr ""
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Há conflitos entre as opções de compressão"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr ""
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Forma de usar: %s [OPÇÃO]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 #, fuzzy
 msgid "Update the access and modification times of FILE"
 msgstr "Não se conseguiu modificar os tempos de acesso e modificação de %s"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Formato de data inválido \"%s\""
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr ""
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Erro desconhecido, do sistema"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, fuzzy, c-format
 msgid "cannot open `%s'"
 msgstr "Não se consegue abrir %s"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Não se consegue executar %s"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr "Opção \"%c\" desconhecida"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "Não se consegue executar \"stat\" para o ficheiro %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "Não se consegue abrir %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr ""
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Nomes de ficheiros truncados--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Não se pode mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "Não se consegue mudar o nome de %s para %s"
+
 #~ msgid "Reading %s\n"
 #~ msgstr "Leitura de %s\n"
 
index 0e52ec58c984082e7e6fd340fc21c37dcbe0f0cf..65149dcd15ba4f13e1b05eaa1e16564f69ab2bbd 100644 (file)
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
index 03bea5c3d586708e6c15e08c90ca3fc92622b35f..555fbe793502279499b1b35462b090208ec1b509 100644 (file)
@@ -7,14 +7,16 @@
 # António José Coutinho <ajc@di.uminho.pt>, 1996.
 # Marcus Moreira de Souza <marcusms@frb.br>
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.13.25\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2002-11-27 20:30-0300\n"
 "Last-Translator: Alexandre Folle de Menezes <afmenez@terra.com.br>\n"
 "Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -93,7 +95,7 @@ msgstr ""
 "Informar erros no programa para <bug-tar@gnu.org>.\n"
 "Informar erros na tradução para <afmenez@terra.com.br>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Erro de sistema desconhecido"
 
@@ -105,8 +107,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -144,56 +146,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: a opção `%s' é ambígua\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: a opção `--%s' não admite um argumento\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: a opção `%c%s' não admite um argumento\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: a opção `%s' exige um argumento\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opção `--%s' não reconhecida\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opção `%c%s' não reconhecida\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: opção inválida -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: a opção exige um argumento -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: a opção `-W %s' é ambígua\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: a opção `-W %s' não aceita um argumento\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: a opção `%s' exige um argumento\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memória esgotada"
@@ -522,190 +529,190 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Impossível executar um shell remoto"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Direção de procura fora de faixa"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Modo inválido informado na opção"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Carimbo de horário inválido"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Deslocamento de procura fora de faixa"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Tamanho da fita inválido"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Deslocamento de procura fora de faixa"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Fim de arquivo prematuro\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "%s: opção inválida -- %c\n"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Final-de-arquivo inesperado no arquivo-tar"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Impossível saltar para %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Comando sem sentido"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Este não parece ser um arquivo-tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Total de bytes escritos: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Total de bytes escritos: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Valor inválido para \"record_size\""
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Nome de arquivo-tar não informado"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr ""
 "Impossível verificar arquivos-tar de entrada/saída padrão (stdin/stdout)"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Impossível atualizar arquivos-tar compactados"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "No princípio da fita, encerrando agora"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Muitos erros, encerrando"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Tamanho de registro = %lu blocos"
 msgstr[1] "Tamanho de registro = %lu blocos"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, fuzzy, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Bloco desalinhado (%lu bytes) no arquivo-tar"
 msgstr[1] "Bloco desalinhado (%lu bytes) no arquivo-tar"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Impossível recuar no arquivo-tar; pode estar ilegível sem -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: contém um número de volume inválido"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Sobrecarga de número de volumes"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Prepare o volume #%d para %s e tecle Enter: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Fim-de-arquivo onde era esperado resposta do usuário"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "AVISO: O arquivo-tar está incompleto"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -717,71 +724,71 @@ msgstr ""
 " !          Criar um \"sub-shell\"\n"
 " ?          Mostra esta lista\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Nenhum volume novo; encerrando.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "comando `%s' falhou"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s não continua neste volume"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s não continua neste volume"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s é o tamanho errado (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Este volume está fora de sequência"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "O arquivo-tar não rotulado para casar com %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "O volume %s não casa com %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -792,20 +799,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Só foi possível ler %lu de %lu bytes"
 msgstr[1] "Só foi possível ler %lu de %lu bytes"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "O conteúdo é diferente"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Final-de-arquivo inesperado no arquivo-tar"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "O tipo de arquivo é diferente"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Os modos são diferentes"
 
@@ -821,144 +828,144 @@ msgstr "os gid s
 msgid "Mod time differs"
 msgstr "Os horários de modificação são diferentes"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Os tamanhos são diferentes"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Não está \"linkado\" a %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "O (\"Link\") simbólico é diferente"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "O número de dispositivo é diferente"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verificar "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s: Tipo de arquivo \"%c\" desconhecido, comparado como um arquivo normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "ERRO DE VERIFICAÇÃO: detectados %d cabeçalhos inválidos"
 msgstr[1] "ERRO DE VERIFICAÇÃO: detectados %d cabeçalhos inválidos"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "valor %s fora da faixa %s: %s..%s; substituindo %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "valor %s fora da faixa %s: %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Gerando cabeçalhos octais negativos"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: arquivo sem alterações; não será arquivado"
 
-#: src/create.c:634
+#: src/create.c:621
 #, fuzzy, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: arquivo sem alterações; não será arquivado"
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: arquivo sem alterações; não será arquivado"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: o arquivo diminuiu %s bytes; completando com zeros"
 msgstr[1] "%s: o arquivo diminuiu %s bytes; completando com zeros"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: arquivo está em outro sistema de arquivos; não será arquivado"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tipo de arquivo desconhecido; arquivo ignorado"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " link para %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: arquivo sem alterações; não será arquivado"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: arquivo é o arquivo-tar; não será arquivado"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: arquivo alterado enquanto estava sendo lido"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: \"socket\" ignorado"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: porta ignorada"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Pulando para o próximo cabeçalho"
 
@@ -966,75 +973,75 @@ msgstr "Pulando para o pr
 msgid "Deleting non-header from archive"
 msgstr "Removendo um não-cabeçalho do arquivo-tar"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: o carimbo de horário %s está %lu s no futuro"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Inconsistência inesperada ao criar diretório"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Diretório renomeado antes de se poder extrair seu estado"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extraindo arquivos contíguos como sendo arquivos normais"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Tentativa de extrair \"links\" simbólicos como \"links\" físicos"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Impossível extrair -- arquivo é a continuação de outro volume"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Fim de arquivo inesperado nos nomes cifrados"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Tipo de arquivo '%c' desconhecido; extraindo como arquivo normal"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Impossível fazer backup deste arquivo"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Impossível renomear para %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Diretório foi renomeado"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Diretório foi renomeado"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: O diretório é novo"
@@ -1146,35 +1153,35 @@ msgstr "%s: Removendo %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Impossível remover"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Omitindo"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloco %s: ** Bloco de NULs **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloco %s: ** Fim-de-arquivo **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "bloco %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Espaço em branco no cabeçalho onde valor numérico `%s' era esperado"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1182,138 +1189,140 @@ msgstr ""
 "complemento de dois"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "O valor octal do arquivo-tar %.*s está fora de faixa %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "o arquivo-tar contém cabeçalhos base-64 obsoletos"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "A string base-64 assinada do arquivo-tar %s está fora de faixa %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "O valor base-256 de arquivo-tar está fora da faixa %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "O arquivo-tar contém %.*s onde valor numérico %s era esperado"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "o valor do arquivo-tar %s está fora da faixa %s: %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " link para %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tipo de arquivo \"%s\" desconhecido\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Cabeçalho de volume--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Continua no byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Criando de diretório:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Impossível mudar o diretório de trabalho"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Renomeando %s para %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Impossível renomear para %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Renomeando %s de volta para %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Impossível salvar diretório de trabalho"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Impossível mudar o diretório de trabalho"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: arquivo removido antes de ser lido"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: arquivo removido antes de ser lido"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "processo filho"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "canal interprocesso"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Não foi encontrado no arquivo-tar"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Não foi encontrado no arquivo-tar"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "O arquivo-tar não rotulado para casar com %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1337,7 +1346,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1357,7 +1366,7 @@ msgstr ""
 "  %s -tvf arquivo.tar         # Lista todos os arquivos em arquivo.tar.\n"
 "  %s -xf arquivo.tar          # Extrai todos os arquivos de arquivo.tar\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1379,80 +1388,80 @@ msgstr ""
 "  nil, existing   numera se existe backup numerado, se não faz simples\n"
 "  never, simple   sempre faz backups simples\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Final-de-arquivo inesperado no arquivo-tar"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1460,565 +1469,565 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr ""
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 #, fuzzy
 msgid "extract files to standard output"
 msgstr "Erro ao escrever para saída padrão"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Impossível verificar arquivos-tar multi-volume"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Opções de formato do arquivo-tar conflitantes"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Opções de compressão conflitantes"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Impossível mudar o diretório de trabalho"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Removendo `%.*s' inicial dos nomes dos membros"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "O volume %s não casa com %s"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2026,290 +2035,295 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Modo inválido informado na opção"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr ""
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Não é possível especificar mais do que uma das opções \"-Acdtrux\""
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Opções de compressão conflitantes"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " tipo de arquivo \"%s\" desconhecido\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Arquivo de datas não encontrado"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Substituindo %s pelo formato de data desconhecido %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: arquivo é o arquivo-tar; não será arquivado"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "%s: arquivo é o arquivo-tar; não será arquivado"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Fator de blocagem inválido"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Tamanho da fita inválido"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Mais do que uma data limite"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Grupo inválido"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Modo inválido informado na opção"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 #, fuzzy
 msgid "Invalid number"
 msgstr "Número de inode inválido"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Dono inválido"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Tamanho de registro inválido"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "O tamanho dos registros tem que ser múltiplo de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 #, fuzzy
 msgid "Invalid number of elements"
 msgstr "Tamanho da fita inválido"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr ""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "As opções \"-[0-7][lmh]\" não são suportadas por *este* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "A opção antiga `%c' exige um argumento."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Múltiplos arquivos-tar é exigem a opção \"-M\""
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Impossivel combinar --listed-incremental com --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, fuzzy, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: O rótulo do volume é longo demais (o limite é %lu bytes)"
 msgstr[1] "%s: O rótulo do volume é longo demais (o limite é %lu bytes)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Impossível verificar arquivos-tar multi-volume"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Impossível verificar arquivos-tar compactados"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Impossível usar arquivos-tar compactados multi-volume"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Impossível atualizar arquivos-tar compactados"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Recusando a criar um arquivo-tar vazio"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "As opções `-Aru' são incompatíveis com `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Deve ser especificada uma das opções \"-Acdtrux\""
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2321,84 +2335,84 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: O arquivo encolheu %s bytes"
 msgstr[1] "%s: O arquivo encolheu %s bytes"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Carimbo de horário fora da faixa"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "A string base-64 assinada do arquivo-tar %s está fora de faixa %s"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "o valor do arquivo-tar %s está fora da faixa %s: %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2439,247 +2453,258 @@ msgstr "Ponto de verifica
 msgid "Read checkpoint %u"
 msgstr "Ponto de verificação de leitura %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Gera arquivos de dados para pacote de testes GNU tar.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Opções de compressão conflitantes"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "Erro ao escrever para saída padrão"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Uso: %s [OPÇÃO]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Carimbo de horário inválido"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Número do inode fora de faixa"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Erro de sistema desconhecido"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Impossível fechar"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " tipo de arquivo \"%s\" desconhecido\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Impossível saltar para %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Impossível saltar para %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "O processo filho morreu com o sinal %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Nomes de arquivos truncados--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Impossível salvar diretório de trabalho"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Impossível renomear para %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: opção ilegal -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Lendo %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "\n"
@@ -2689,12 +2714,6 @@ msgstr "--Nomes de arquivos truncados--\n"
 #~ "Informar erros no programa para <bug-tar@gnu.org>.\n"
 #~ "Informar erros na tradução para <afmenez@terra.com.br>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Lendo %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Erro não é recuperável: saindo agora"
-
 #, fuzzy
 #~ msgid "filter the archive through compress"
 #~ msgstr "%s: arquivo é o arquivo-tar; não será arquivado"
@@ -2737,6 +2756,9 @@ msgstr "--Nomes de arquivos truncados--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Fim de arquivo prematuro"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Erro não é recuperável: saindo agora"
+
 #~ msgid "block size"
 #~ msgstr "tamanho de bloco"
 
index 6ca8d607e390be8e38805bbe0a4a7f305d51b1e7..43bd100e7575112d85279a96ebe7386f257d908e 100644 (file)
Binary files a/po/ro.gmo and b/po/ro.gmo differ
index b72ef8843974d83aac47a5eced20e40ec7a6979f..1397ea50cc91ecdbb7d4d0fa624201c3ab7f21ae 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -3,14 +3,16 @@
 # Laurentiu Buzdugan <lbuz@rolix.org>>, 2005.
 #
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.15.1\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2005-07-15 12:00-0500\n"
 "Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -87,7 +89,7 @@ msgstr ""
 msgid "Report bugs to %s.\n"
 msgstr "Raportaþi bug-uri la %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Eroare sistem necunoscutã"
 
@@ -101,8 +103,8 @@ msgstr "Afi
 msgid "give a short usage message"
 msgstr "Afiºeazã un scurt mesaj despre folosire"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NUME"
 
@@ -141,56 +143,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: opþiunea `%s' este ambiguã\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: opþiunea `--%s' nu permite un argument\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: opþiunea `%c%s' nu permite un argument\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: opþiunea `%s' necesitã un argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opþiunea `--%s' nu este recunoscutã\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opþiunea `%c%s' bu este recunoscutã\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: opþiune invalidã -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: opþiunea necesitã un argument -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: opþiunea `-W %s' este ambiguã\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: opþiunea `-W %s' nu permite un argument\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: opþiunea `%s' necesitã un argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "memorie epuizatã"
@@ -514,190 +521,190 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Nu pot executa shell remote"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Direcþie cãutare (seek direction) în afara domeniului"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Mod invalid furnizat ca opþiune"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Înregistrare timp invalidã"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Decalaj cãutare (seek offset) în afara domeniului"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Lungime de bandã invalidã"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Decalaj cãutare (seek offset) în afara domeniului"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: eof prematur\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Mod de operare principal:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "EOF neaºteptat în arhivã"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NUMÃR"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FIªIER"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Nu pot cãuta (seek) cãtre %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Comandã gunoi"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Aceasta nu pare a fi o arhivã tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Numãr total octeþi scriºi: %s (%s, %s/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Numãr total octeþi scriºi: %s (%s, %s/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(pipe)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Valoare invalidã pentru record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Nume arhivã nu a fost furnizat"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Nu pot verifica arhive atdin/stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Arhiva este compresatã. Folosiþi opþiunea %s."
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Nu pot actualiza arhive comprimate"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "La începutul benzii, ieºim acum"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Prea multe erori, ieºim"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Dimensiune înregistrare = %lu bloc"
 msgstr[1] "Dimensiune înregistrare = %lu blocuri"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Bloc ne-aliniat (%lu octet) în arhivã"
 msgstr[1] "Bloc ne-aliniat (%lu octeþi) în arhivã"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Nu pot backspace fiºierul arhivã; acesta ar putea fi de necitit fãrã -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek nu s-a oprit la limita unei înregistrãri"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: conþine numãr volum invalid"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Depãºire domeniu numãr volum"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Preparã volum #%d pentru %s ºi apasã tasta return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "EOF unde era aºteptat rãspunsul utilizatorului"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "AVERTISMENT: Arhiva este incompletã"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -709,72 +716,72 @@ msgstr ""
 " !          Lanseazã un subshell\n"
 " ?          Afiºeazã aceastã listã de opþiuni\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Nici un volum nou; terminãm.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "`%s' comanda a eºuat"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s nu este continuat pe acest volum"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s nu este continuat pe acest volum"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s este de dimensiune greºitã (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Acest volum este în afara secvenþei"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arhiva nu este etichetatã sã se potriveascã cu %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Volumul %s nu se potriveºte cu %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, fuzzy, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 "%s: nume fiºier prea lung pentru a fi storat într-un antet GNU multivolum"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "rmtlseek nu s-a oprit la limita unei înregistrãri"
@@ -786,20 +793,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Am putut citi doar %lu din %lu octet"
 msgstr[1] "Am putut citi doar %lu din %lu octeþi"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Conþinuturile diferã"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "EOF neaºteptat în arhivã"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Tipul fiºierelor diferã"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Modurile diferã"
 
@@ -815,145 +822,145 @@ msgstr "Gid difer
 msgid "Mod time differs"
 msgstr "Timp modificare diferã"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Dimensiunea diferã"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Nu este link-at cãtre %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symlink diferã"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Numãr dispozitiv diferã"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verificã "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s: Tip de fiºier necunoscut '%c', folosesc diff ca pentru un fiºier normal"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Arhiva conþine nume de fiºiere cu prefixele îndepãrtate."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Verificare ar putea eºua sã gãseascã fiºierele originale."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "VERIFICàEªEC: detectat %d antet invalid"
 msgstr[1] "VERIFICàEªEC: detectat %d antete invalide"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Un bloc zero singuratic la %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, fuzzy, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: conþine o etichetã de director cache; nimic generat"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "valoarea %s în afara %s intervalului %s..%s; înlocuiesc %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "valoarea %s în afara %s intervalului %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Generez antete octale negative"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: numele fiºierul este prea lung (maxim %d); nimic generat"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: numele fiºierul este prea lung (nu poate fi spart); nimic generat"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: numele link-ului este prea lung; nimic generat"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Fiºier scurtat cu %s octet; completat cu zerouri"
 msgstr[1] "%s: Fiºier scurtat cu %s octeþi; completat cu zerouri"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: fiºierul este pe un sistem de fiºiere diferit; nimic generat"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Tip de fiºier necunoscut; fiºier ignorat"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Link lipsã cãtre '%s'.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: fiºierul este neschimbat; nimic generat"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: fiºierul este în arhivã; nimic generat"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 #, fuzzy
 msgid "directory not dumped"
 msgstr "%s: conþine o etichetã de director cache; nimic generat"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: fiºier schimbat în timp ce îl citeam"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socket ignorat"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: uºã ignoratã"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Sãrim la urmãtorul antet"
 
@@ -961,75 +968,75 @@ msgstr "S
 msgid "Deleting non-header from archive"
 msgstr "ªtergem non-antet din arhivã"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: înregistrare de timp neverosimilã %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: înregistrare timp %s este %lu sec în viitor"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Inconsistenþã neaºteptatã când cream directorul"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Director redenumit înainte de a fi putut extrage starea sa"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extragem fiºiere contigue ca fiºiere normale"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Încerc extragerea link-urilor simbolice ca link-uri hard"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Nu pot extrage -- fiºierul este continuat din altã arhivã"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "EOF neaºteptat în numele amestecate"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Tip de fiºier necunoscut '%c', extras ca fiºier normal"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, fuzzy, c-format
 msgid "Current %s is newer or same age"
 msgstr "`%s' curent este mai nou"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Nu am putut arhiva (backup) acest fiºier"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: Nu pot redenumi ca %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Directorul a fost redenumit"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Directorul a fost redenumit"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Directorul este nou"
@@ -1143,35 +1150,35 @@ msgstr "%s: 
 msgid "%s: Cannot remove"
 msgstr "%s: Nu pot ºterge"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Omis"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "bloc %s: ** Bloc de NUL-uri **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "bloc %s: ** Sfârºit de fiºier **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "bloc %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Spaþii libere în antet unde valoare %s numericã aºteptatã"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1179,139 +1186,141 @@ msgstr ""
 "lui doi"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Valoare octalã arhivã %.*s este în afara %s intervalului"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arhiva conþine antete în baza-64 depãºite"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "ªir în baza-64 (semnãtura arhivei) %s este în afara %s intervalului"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Valoare baza-256 a arhivei este în afara %s intervalului"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arhiva conþine %.*s unde valoare %s numericã aºteptatã"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, fuzzy, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Valoare arhivã %s este în afara %s intervalului %s.%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " link cãtre %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " tip fiºier necunoscut %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Link Lung--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Nume Lung--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Antet Volum--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Continuat la octet %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Creez director:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Nu pot schimba directorul în care lucrez"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Redenumesc %s ca %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Nu pot redenumi ca %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Redenumesc %s înapoi ca %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Nu pot salva directorul în care lucrez"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Nu pot schimba directorul în care lucrez"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Fiºier ºters înainte de a-l putea citi"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Fiºier ºters înainte de a-l putea citi"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proces copil"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "canal între-procese"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "pattern-urile de excludere potrivesc începutul numelor de fiºiere"
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Nu a fost gãsit în arhivã"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Lucrul cerut nu a fost gãsit în arhivã"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arhiva nu este etichetatã sã se potriveascã cu %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1335,7 +1344,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1363,7 +1372,7 @@ msgstr ""
 "  nil, existing   numeroteazã dacã existã backup numerotat, altfel simplu\n"
 "  never, simple   întotdeauna creazã backup simplu\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1392,79 +1401,79 @@ msgstr ""
 "  nil, existing   numeroteazã dacã existã backup numerotat, altfel simplu\n"
 "  never, simple   întotdeauna creazã backup simplu\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Mod de operare principal:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "listeazã conþinutul unei arhive"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "extrage fiºiere dintr-o arhivã"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "creazã o nouã arhivã"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "gãseºte diferenþele dintre arhive ºi sistemul de fiºiere"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "adaugã fiºiere la sfârºitul unei arhive"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "adaugã numai fiºierele mai noi decât copia din arhivã"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "adaugã fiºiere tar la o arhivã"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "ºterge din arhivã (nu pe benzi magnetice!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Modificatori operaþie:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "manipuleazã eficient fiºierele rerefiate (sparse)"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "foloseºte vechiul format GNU pentru backup incremental"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "foloseºte noul format GNU pentru backup incremental"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "nu termina cu non-zero pentru fiºiere ce nu pot fi citite"
 
-#: src/tar.c:428
+#: src/tar.c:429
 #, fuzzy
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
@@ -1477,314 +1486,314 @@ msgstr ""
 "--diff, --extract sau --list ºi când o listã de fiºiere este datã fie în "
 "linia de comandã sau folosind opþiunea -T.  Implicit, NUMBER=1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 #, fuzzy
 msgid "archive is seekable"
 msgstr "Arhiva este cãutabilã"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "Arhiva este cãutabilã"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "încearcã sã verifici arhiva dupã scrierea sa"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "ºterge fiºierele dupã ce acestea sunt adãugate la arhivã"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "nu înlocui fiºierele existente la extragere"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "nu înlocui fiºierele existente care sunt mai noi decât copiile acestora din "
 "arhivã"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "supra-scrie fiºierele existente la extragere"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "ºterge fiecare fiºier înainte de a extrage peste acesta"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "goleºte ierarhiile înainte de a extrage un director"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "pãstrazã metadata directoarelor existente"
 
-#: src/tar.c:466
+#: src/tar.c:467
 #, fuzzy
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "supra-scrie fiºierele existente la extragere"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "extrage fiºierele la ieºirea standard"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "COMANDÃ"
 
-#: src/tar.c:477
+#: src/tar.c:478
 #, fuzzy
 msgid "pipe extracted files to another program"
 msgstr "extrage fiºierele la ieºirea standard"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Manipulare atribute fiºiere:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "forþeazã NUME ca proprietar pentru fiºierele adãugate"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "forþeazã NUME ca grup pentru fiºierele adãugate"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATA-FIªIERULUI"
 
-#: src/tar.c:493
+#: src/tar.c:494
 #, fuzzy
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "stocheazã numai fiºiere mai noi decât DATA-FIªIERULUI"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "SCHIMBÃRI"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "forþeazã mod (simbolic) SCHIMBÃRI pentru fiºierele adãugate"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "nu extrage timpul de modificare al fiºierului"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "încearcã extragerea fiºierelor cu aceleaºi drepturi (ownership)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "extrage fiºierele ca dvs. însuºi"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "foloseºte întotdeauna numere pentru numele utilizator/grup"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "sorteazã numele de extras sã se potriveascã cu arhiva"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "la fel ca -p ºi -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Selectare ºi schimbare unitate:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARHIVÃ"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "foloseºte fiºier arhivã sau unitate ARHIVÃ"
 
-#: src/tar.c:534
+#: src/tar.c:535
 #, fuzzy
 msgid "archive file is local even if it has a colon"
 msgstr "fiºier arhivã este local chiar când are un :"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "foloseºte rmt COMANDàîn loc de rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "foloseºte remote COMANDàîn loc de rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "specificã unitate ºi densitate"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "creazã/listeazã/extrage arhiva pe volume multiple"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "schimbã banda dupã scriere a NUMÃR x 1024 octeþi"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "ruleazã script la terminarea fiecãrei benzi (implicã -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "foloseºte/actualizeazã numãrul de volum în FIªIER"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blocuri unitate:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOCURI"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOCURI x 512 octeþi pe întregistrare"
 
-#: src/tar.c:573
+#: src/tar.c:574
 #, fuzzy
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "DIMENSIUNE octeþi pe înregistrare, multiplu de 12"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "ignorã blocuri zero-uate în arhivã (înseamnã EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "redimensioneazã bloc în timpul citirii (pentru pipe-uri BSD4.2"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Selecþie format arhivã:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 #, fuzzy
 msgid "create archive of the given format"
 msgstr "creazã arhiva de formatul dat."
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT este unul din urmãtoarele"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "vechiul format tar V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "oldgnu    formatul GNU format ca pentru tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "formatul GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "formatul POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "formatul POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 #, fuzzy
 msgid "same as pax"
 msgstr "ca ºi pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "ca ºi --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "ca ºi --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 #, fuzzy
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "cuvânt_cheie[[:]=valoare][,cuvânt_cheie[[:]=valoare], ...]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "controleazã cuvintele cheie pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXT"
 
-#: src/tar.c:608
+#: src/tar.c:609
 #, fuzzy
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
@@ -1793,173 +1802,173 @@ msgstr ""
 "creazã arhivã nu nume volum NUME. La listare/extragere, foloseºte TEXT ca "
 "pattern de globbing"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Opþiunile de compresie sunt în conflict"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "filtreazã prin PROG (trebuie sã accepte -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Selecþie fiºier local:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "schimbã în directorul DIR"
 
-#: src/tar.c:643
+#: src/tar.c:644
 #, fuzzy
 msgid "get names to extract or create from FILE"
 msgstr "obþine numele de extras sau creat din fiºierul NUME"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T citeºte nume terminate cu null, deactiveazã cu -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATTERN"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "exclude fiºiere, date ca un PATTERN"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "pattern-urile de excludere sunt listate în FIªIER"
 
-#: src/tar.c:657
+#: src/tar.c:658
 #, fuzzy
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "exclude directoarele ce conþin o etichetã cache"
 
-#: src/tar.c:660
+#: src/tar.c:661
 #, fuzzy
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "exclude directoarele ce conþin o etichetã cache"
 
-#: src/tar.c:663
+#: src/tar.c:664
 #, fuzzy
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "exclude directoarele ce conþin o etichetã cache"
 
-#: src/tar.c:665
+#: src/tar.c:666
 #, fuzzy
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "exclude directoarele ce conþin o etichetã cache"
 
-#: src/tar.c:668
+#: src/tar.c:669
 #, fuzzy
 msgid "exclude everything under directories containing FILE"
 msgstr "exclude directoarele ce conþin o etichetã cache"
 
-#: src/tar.c:670
+#: src/tar.c:671
 #, fuzzy
 msgid "exclude directories containing FILE"
 msgstr "exclude directoarele ce conþin o etichetã cache"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "evitã coborârea automatã în directoare"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "stai în sistemul de fiºire local la creare arhivei"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "coboarã recursiv în directoare (implicit)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "nu elimina primul `/' din numele fiºierelor"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NUME-MEMBRU"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "începe la membrul NUME-MEMBRU în arhivã"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "stocheazã numai fiºiere mai noi decât DATA-FIªIERULUI"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATA"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "comparã data ºi timpul numai când a fost schimbatã data"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "fã backup înainte de ºtergere, alege CONTROL pentru versiuni"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "ªIR"
 
-#: src/tar.c:697
+#: src/tar.c:698
 #, fuzzy
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
@@ -1968,103 +1977,103 @@ msgstr ""
 "fã backup înainte de ºtergere, înlocuieºte prefixul normal ('~' în afarã de "
 "cazul când este determinat de variabila de mediu SIMPLE_BACKUP_SUFFIX"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 #, fuzzy
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "eliminã NUMÃR componente de la începutul numelor fiºierelor"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 #, fuzzy
 msgid "ignore case"
 msgstr "în excluderi ignorã cazul caracterelor (minuscule/majuscule)"
 
-#: src/tar.c:718
+#: src/tar.c:719
 #, fuzzy
 msgid "patterns match file name start"
 msgstr "pattern-urile de excludere potrivesc începutul numelor de fiºiere"
 
-#: src/tar.c:720
+#: src/tar.c:721
 #, fuzzy
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "pattern-urile de excludere potrivesc dupã orice / (implicit)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 #, fuzzy
 msgid "case sensitive matching (default)"
 msgstr "excluderea depinde de caz (minuscule/majuscule) (implicit)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "wildcard-urile în pattern-urile de excludere nu potrivesc '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 #, fuzzy
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "wildcard-urile din pattern-urile de excludere potrivesc '/' (implicit)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Ieºire informativã:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "listeazã cu amãnunte fiºierele procesate"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 #, fuzzy
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "afiºeazã mesaje despre progres la fiecare al 10-a înregistrare"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "afiºeazã un mesaj dacã nu toate link-urile sunt prelucrate"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2072,28 +2081,33 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "afiºeazã datele de modificare a fiºierelor în UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "trimite ieºire detaliatã în FIªIER"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "aratã numãrul blocului din arhivã pentru fiecare mesaj"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "cere confirmare pentru fiecare acþiune"
 
-#: src/tar.c:764
+#: src/tar.c:767
 #, fuzzy
 msgid "show tar defaults"
 msgstr "Aratã valorire implicite folosite de tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 #, fuzzy
 msgid ""
 "when listing or extracting, list each directory that does not match search "
@@ -2102,95 +2116,95 @@ msgstr ""
 "La listare sau extragere, listeazã fiecare director care nu se potriveºte cu "
 "criteriile de cãutare"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Opþiuni compatibilitate:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 #, fuzzy
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "la creare, ca ºi --old-archive.  La extragere, ca ºi --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Alte opþiuni:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Nu puteþi specifica mai mult de una dintre opþiunile `-Acdtrux'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Opþiunile de compresie sunt în conflict"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " tip fiºier necunoscut %s\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Fiºier date nu a fost gãsit"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Înlocuim %s pentru format de datã necunoscut %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, fuzzy, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Tratez data `%s' ca %s + %ld nanosecundã"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: fiºierul este în arhivã; nimic generat"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "filtreazã arhiva prin gzip"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2198,169 +2212,169 @@ msgstr ""
 "\n"
 "*Acest* tar foloseºte implicit:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Factor blocuri invalid"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Lungime de bandã invalidã"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Mai mult de o singurã datã limitã"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Grup invalid"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Mod invalid furnizat ca opþiune"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Numãr invalid"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Proprietar invalid"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Dimensiune înregistrare invalidã"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Dimensiune înregistrare trebuie sã fie un multiplu de %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Numãr invalid de elemente"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, fuzzy, c-format
 msgid "Malformed density argument: %s"
 msgstr "Argument densitate malformat: '%s'"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, fuzzy, c-format
 msgid "Unknown density: `%c'"
 msgstr "Densitate necunoscutã: '%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Opþiunile `-[0-7][lmh]' nu sunt suportate de *acest* tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FIªIER]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Vechea opþiune `%c' necesitã un argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence n-are sens fãrã o listã de fiºiere"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence nu poate fi folosit în modul de operare cerut"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Fiºiere de arhivã multiple necesitã opþiunea `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Nu puteþi combina --listed-incremental cu --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--occurrence n-are sens fãrã o listã de fiºiere"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Eticheta volumului este prea lungã (limita este %lu octet)"
 msgstr[1] "%s: Eticheta volumului este prea lungã (limita este %lu octeþi)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Nu pot verifica arhive pe volume multiple"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Nu pot verifica arhive comprimate"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Nu pot folosi arhive comprimate pe volume multiple"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Nu pot actualiza arhive comprimate"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option poate fi folosit numai pentru arhive POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Refuz categoric sã creez o arhivã goalã"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Opþiunile `-Aru' sunt incompatibile cu `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Trebuie sã specificaþi una din opþiunile `-Acdtrux'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2372,87 +2386,87 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Fiºier scurtat cu %s octet"
 msgstr[1] "%s: Fiºier scurtat cu %s octeþi"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, fuzzy, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Cuvânt_cheie %s necunoscut sau încã neimplementat"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Înregistrare timp în afara domeniului"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Pattern-ul %s nu poate fi folosit"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Cuvânt_cheie %s nu poate fi înlocuit (overridden)"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 #, fuzzy
 msgid "Malformed extended header: missing length"
 msgstr "Antet extins malformat: lipseºte semnul egal"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "ªir în baza-64 (semnãtura arhivei) %s este în afara %s intervalului"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 #, fuzzy
 msgid "Malformed extended header: missing blank after length"
 msgstr "Antet extins malformat: lipseºte spaþiu liber dupã lungime"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Antet extins malformat: lipseºte semnul egal"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 #, fuzzy
 msgid "Malformed extended header: missing newline"
 msgstr "Antet extins malformat: lipseºte semnul egal"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Valoare arhivã %s este în afara %s intervalului %s.%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Antet extins malformat: lipseºte semnul egal"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, fuzzy, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Antet extins malformat: lipseºte semnul egal"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Antet extins malformat: lipseºte semnul egal"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Antet extins malformat: lipseºte semnul egal"
@@ -2493,249 +2507,260 @@ msgstr "Scrie punct de verificare %d"
 msgid "Read checkpoint %u"
 msgstr "Citeºte punct de verificare %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr ""
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Alte opþiuni:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 #, fuzzy
 msgid "Create file of the given SIZE"
 msgstr "creazã arhiva de formatul dat."
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "extrage fiºierele la ieºirea standard"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 #, fuzzy
 msgid "Read file names from FILE"
 msgstr "Am citit %s octeþi de la %s"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 #, fuzzy
 msgid "-T reads null-terminated names"
 msgstr "-T citeºte nume terminate cu null, deactiveazã cu -C"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 #, fuzzy
 msgid "Seek to the given offset before writing data"
 msgstr "încearcã sã verifici arhiva dupã scrierea sa"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [OPÞIUNE...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 #, fuzzy
 msgid "Execute COMMAND"
 msgstr "COMANDÃ"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Înregistrare timp invalidã"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Numãr inode în afara intervalului"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Eroare sistem necunoscutã"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "%s: Nu pot cãuta (seek) cãtre %s"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " tip fiºier necunoscut %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Nu pot cãuta (seek) cãtre %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Nu pot cãuta (seek) cãtre %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr ""
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Amestecat numele fiºierelor--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Nu pot salva directorul în care lucrez"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: Nu pot redenumi ca %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: opþiune ilegalã -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Citesc %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2743,12 +2768,6 @@ msgstr "--Amestecat numele fi
 #~ "\n"
 #~ "Raportaþi bug-uri la <%s>.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Citesc %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Nu-mi pot reveni din eroare: termin acum"
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "filtrazã arhiva prin bzip2"
 
@@ -2797,6 +2816,9 @@ msgstr "--Amestecat numele fi
 #~ msgid "Premature end of file"
 #~ msgstr "Sfârºit de fiºier prematur"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Nu-mi pot reveni din eroare: termin acum"
+
 #~ msgid "block size"
 #~ msgstr "dimensiune bloc"
 
index 7a8b40fa54267ce6ebcd4dda55c76af4a5aedf0c..d33ad82cd3a0514ca96970e2be800a009bbf2631 100644 (file)
Binary files a/po/ru.gmo and b/po/ru.gmo differ
index 80c4a467deef95274717726cd397e380feed04ad..fb3aae40889898ea8ddcd02a312860d8e20458ba 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,20 +4,23 @@
 # Const Kaplinsky <const@ce.cctpu.edu.ru>, 1998, 1999.
 # Pavel Maryanov <acid_jack@ukr.net>, 2004, 2006, 2008.
 # Yuri Kozlov <yuray@komyakino.ru>, 2009.
+# Pavel Maryanov <acid@jack.kiev.ua>, 2010.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22\n"
+"Project-Id-Version: tar 1.23\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2009-10-11 16:43+0200\n"
-"Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-05-08 19:30+0200\n"
+"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #: gnu/argmatch.c:135
 #, c-format
@@ -64,8 +67,9 @@ msgid ""
 "Mandatory or optional arguments to long options are also mandatory or "
 "optional for any corresponding short options."
 msgstr ""
-"Обязательные или необязательные аргументы для длинный опций также являются "
-"обязательными или необязательными для соответствующих коротких опций."
+"Обязательные или необязательные аргументы для длинных параметров также "
+"являются обязательными или необязательными для соответствующих коротких "
+"параметров."
 
 #: gnu/argp-help.c:1639
 msgid "Usage:"
@@ -77,21 +81,21 @@ msgstr " или: "
 
 #: gnu/argp-help.c:1655
 msgid " [OPTION...]"
-msgstr " [Ð\9eÐ\9fЦÐ\98Я...]"
+msgstr " [Ð\9fÐ\90РÐ\90Ð\9cÐ\95ТР...]"
 
 #: gnu/argp-help.c:1682
 #, c-format
 msgid "Try `%s --help' or `%s --usage' for more information.\n"
 msgstr ""
-"Попробуйте `%s --help' или `%s --usage' для получения дополнительной "
-"информации.\n"
+"Попробуйте `%s --help' или `%s --usage' для получения дополнительных "
+"сведений.\n"
 
 #: gnu/argp-help.c:1710
 #, c-format
 msgid "Report bugs to %s.\n"
-msgstr "Отчеты об ошибках отправляйте на %s.\n"
+msgstr "Отчёты об ошибках отправляйте по адресу: %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Неизвестная системная ошибка"
 
@@ -103,8 +107,8 @@ msgstr "вывод этой справки"
 msgid "give a short usage message"
 msgstr "вывод короткого сообщения об использовании"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "ИМЯ"
 
@@ -136,65 +140,70 @@ msgstr "%s: Слишком много аргументов\n"
 
 #: gnu/argp-parse.c:756
 msgid "(PROGRAM ERROR) Option should have been recognized!?"
-msgstr "(Ð\9eШÐ\98Ð\91Ð\9aÐ\90 Ð\9fРÐ\9eÐ\93РÐ\90Ð\9cÐ\9cЫ) Ð\9eпÑ\86иÑ\8f Ð´Ð¾Ð»Ð¶Ð½Ð° Ð±Ñ\8bла Ð±Ñ\8bÑ\82Ñ\8c Ñ\80аÑ\81познана?!"
+msgstr "(Ð\9eШÐ\98Ð\91Ð\9aÐ\90 Ð\9fРÐ\9eÐ\93РÐ\90Ð\9cÐ\9cЫ) Ð\9fаÑ\80амеÑ\82Ñ\80 Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ\8bл Ð±Ñ\8bÑ\82Ñ\8c Ñ\80аÑ\81познан?!"
 
 #: gnu/closeout.c:114
 msgid "write error"
 msgstr "ошибка записи"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
-#, fuzzy, c-format
+#: gnu/getopt.c:529 gnu/getopt.c:545
+#, c-format
 msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: Ð¾Ð¿Ñ\86иÑ\8f `%s' Ð½Ðµ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ\87на\n"
+msgstr "%s: Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Â«%s» Ð½Ðµ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ\87ен\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
-#, fuzzy, c-format
+#: gnu/getopt.c:578 gnu/getopt.c:582
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: опция `--%s' не разрешает использовать аргумент\n"
+msgstr "%s: с параметром «--%s» нельзя использовать аргумент\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
-#, fuzzy, c-format
+#: gnu/getopt.c:591 gnu/getopt.c:596
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: опция `%c%s' не разрешает использовать аргумент\n"
+msgstr "%s: с параметром «%c%s» нельзя использовать аргумент\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: Ð´Ð»Ñ\8f Ð¾Ð¿Ñ\86ии `%s' требуется аргумент\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: Ð´Ð»Ñ\8f Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Â«%s» требуется аргумент\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
-#, fuzzy, c-format
+#: gnu/getopt.c:696 gnu/getopt.c:699
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: нераспознанная опция `--%s'\n"
+msgstr "%s: нераспознанный параметр «--%s»\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
-#, fuzzy, c-format
+#: gnu/getopt.c:707 gnu/getopt.c:710
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: нераспознанная опция `%c%s'\n"
+msgstr "%s: нераспознанный параметр «%c%s»\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
-#, fuzzy, c-format
+#: gnu/getopt.c:759 gnu/getopt.c:762
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: Ð½ÐµÐ²ÐµÑ\80наÑ\8f Ð¾Ð¿Ñ\86иÑ\8f  -- %c\n"
+msgstr "%s: Ð½ÐµÐ´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имÑ\8bй Ð¿Ð°Ñ\80амеÑ\82Ñ\80 -- Â«%c»\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
-#, fuzzy, c-format
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: Ð´Ð»Ñ\8f Ð¾Ð¿Ñ\86ии Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð°Ñ\80гÑ\83менÑ\82 -- %c\n"
+msgstr "%s: Ð´Ð»Ñ\8f Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð°Ñ\80гÑ\83менÑ\82 -- Â«%c»\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
-#, fuzzy, c-format
+#: gnu/getopt.c:885 gnu/getopt.c:901
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: Ð¾Ð¿Ñ\86иÑ\8f `-W %s' Ð½Ðµ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ\87на\n"
+msgstr "%s: Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Â«-W %s» Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ\87ен\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
-#, fuzzy, c-format
+#: gnu/getopt.c:925 gnu/getopt.c:943
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: опция `-W %s' не разрешает использовать аргумент\n"
+msgstr "%s: с параметром «-W %s» нельзя использовать аргумент\n"
+
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: для параметра «%s» требуется аргумент\n"
 
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
-msgstr "памÑ\8fÑ\82Ñ\8c Ð¸Ñ\81Ñ\87еÑ\80пана"
+msgstr "недоÑ\81Ñ\82аÑ\82оÑ\87но Ð¿Ð°Ð¼Ñ\8fÑ\82и"
 
 #: gnu/openat-die.c:36
 #, c-format
@@ -227,11 +236,11 @@ msgstr "не удалось вернуться в первоначальный 
 #. and use glyphs suitable for your language.
 #: gnu/quotearg.c:274
 msgid "`"
-msgstr "`"
+msgstr "«"
 
 #: gnu/quotearg.c:275
 msgid "'"
-msgstr "'"
+msgstr "»"
 
 #. TRANSLATORS: A regular expression testing for an affirmative answer
 #. (english: "yes").  Testing the first character may be sufficient.
@@ -256,12 +265,12 @@ msgstr "^[nN]"
 #: gnu/version-etc.c:76
 #, c-format
 msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Упакован %s (%s)\n"
 
 #: gnu/version-etc.c:79
 #, c-format
 msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Упакован %s\n"
 
 #. TRANSLATORS: Translate "(C)" to the copyright symbol
 #. (C-in-a-circle), if this symbol is available in the user's
@@ -290,19 +299,19 @@ msgstr ""
 #: gnu/version-etc.c:104
 #, c-format
 msgid "Written by %s.\n"
-msgstr "Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s.\n"
+msgstr "Ð\90вÑ\82оÑ\80: %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #: gnu/version-etc.c:108
 #, c-format
 msgid "Written by %s and %s.\n"
-msgstr "Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s и %s.\n"
+msgstr "Ð\90вÑ\82оÑ\80Ñ\8b: %s и %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #: gnu/version-etc.c:112
 #, c-format
 msgid "Written by %s, %s, and %s.\n"
-msgstr "Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s и %s.\n"
+msgstr "Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s и %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
 #. You can use line breaks, estimating that each author name occupies
@@ -313,7 +322,7 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "and %s.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s\n"
 "и %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
@@ -325,7 +334,7 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, and %s.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s,\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s,\n"
 "%s и %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
@@ -337,7 +346,7 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, %s, and %s.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s,\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s,\n"
 "%s, %s и %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
@@ -349,7 +358,7 @@ msgid ""
 "Written by %s, %s, %s,\n"
 "%s, %s, %s, and %s.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s,\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s,\n"
 "%s, %s, %s и %s.\n"
 
 #. TRANSLATORS: Each %s denotes an author name.
@@ -362,7 +371,7 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "and %s.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s,\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s,\n"
 "%s, %s, %s, %s\n"
 "и %s.\n"
 
@@ -376,7 +385,7 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "%s, and %s.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s,\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s,\n"
 "%s, %s, %s, %s,\n"
 "%s и %s.\n"
 
@@ -390,7 +399,7 @@ msgid ""
 "%s, %s, %s, %s,\n"
 "%s, %s, and others.\n"
 msgstr ""
-"Ð\9fÑ\80огÑ\80амма Ñ\81оздана %s, %s, %s,\n"
+"Ð\90вÑ\82оÑ\80Ñ\8b: %s, %s, %s,\n"
 "%s, %s, %s, %s,\n"
 "%s, %s и другими.\n"
 
@@ -399,31 +408,32 @@ msgstr ""
 #. "Report translation bugs to <...>\n" with the address for translation
 #. bugs (typically your translation team's web or email address).
 #: gnu/version-etc.c:247
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Report bugs to: %s\n"
-msgstr "Отчеты об ошибках отправляйте на %s.\n"
+msgstr ""
+"\n"
+"Отчёты об ошибках отправляйте по адресу: %s\n"
 
 #: gnu/version-etc.c:249
-#, fuzzy, c-format
+#, c-format
 msgid "Report %s bugs to: %s\n"
-msgstr "Отчеты об ошибках отправляйте на %s.\n"
+msgstr "Отчёты об ошибках %s отправляйте по адресу <%s>\n"
 
 #: gnu/version-etc.c:253
 #, c-format
 msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "Домашняя страница %s: %s\n"
 
 #: gnu/version-etc.c:255
-#, fuzzy, c-format
+#, c-format
 msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
-msgstr "Домашняя страница %s: <http://www.gnu.org/software/%s/>.\n"
+msgstr "Домашняя страница %s: <http://www.gnu.org/software/%s/>\n"
 
 #: gnu/version-etc.c:258
-#, fuzzy
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr "Справка по работе с ПО GNU: <http://www.gnu.org/gethelp/>.\n"
+msgstr "Справка по работе с ПО GNU: <http://www.gnu.org/gethelp/>\n"
 
 #. TRANSLATORS: %s after `Cannot' is a function name, e.g. `Cannot open'.
 #. Directly translating this to another language will not work, first because
@@ -533,151 +543,146 @@ msgstr "stdout"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Не удаётся подключиться к %s: ошибка разрешения"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
-msgstr "Невозможно запустить удалённый командный процессор"
+msgstr "Не удаётся запустить удалённый командный процессор"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Направление поиска за пределами диапазона"
 
-#: rmt/rmt.c:419
-#, fuzzy
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
-msgstr "Ð\92 Ð¾Ð¿Ñ\86ии Ñ\83казан Ð½ÐµÐ²ÐµÑ\80нÑ\8bй Ñ\80ежим Ð´Ð¾Ñ\81Ñ\82Ñ\83па"
+msgstr "Ð\9dедопÑ\83Ñ\81Ñ\82имое Ð½Ð°Ð¿Ñ\80авление Ð¿Ð¾Ð¸Ñ\81ка"
 
-#: rmt/rmt.c:427
-#, fuzzy
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
-msgstr "Недопустимый размер: %s"
+msgstr "Недопустимое смещение поиска"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Смещение поиска за пределами диапазона"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
-#, fuzzy
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
-msgstr "Ð\9dевеÑ\80наÑ\8f Ð´Ð»Ð¸Ð½Ð° Ð»ÐµÐ½Ñ\82Ñ\8b"
+msgstr "Ð\9dедопÑ\83Ñ\81Ñ\82имое Ñ\87иÑ\81ло Ð±Ð°Ð¹Ñ\82"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
-#, fuzzy
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
-msgstr "СмеÑ\89ение Ð¿Ð¾Ð¸Ñ\81ка за пределами диапазона"
+msgstr "ЧиÑ\81ло Ð±Ð°Ð¹Ñ\82 за пределами диапазона"
 
-#: rmt/rmt.c:539
-#, fuzzy
+#: rmt/rmt.c:558
 msgid "Premature eof"
-msgstr "rmtd: Преждевременный конец файла\n"
+msgstr "Неожиданный конец файла"
 
-#: rmt/rmt.c:582
-#, fuzzy
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
-msgstr "Ð\9eÑ\81новной Ñ\80ежим Ñ\80абоÑ\82Ñ\8b:"
+msgstr "Ð\9dедопÑ\83Ñ\81Ñ\82имÑ\8bй ÐºÐ¾Ð´ Ð¾Ð¿ÐµÑ\80аÑ\86ии"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
-msgstr ""
+msgstr "Операция не поддерживается"
 
-#: rmt/rmt.c:645
-#, fuzzy
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
-msgstr "Ð\9dеожиданнÑ\8bй ÐºÐ¾Ð½ÐµÑ\86 Ñ\84айла Ð² Ð°Ñ\80Ñ\85иве"
+msgstr "Ð\9dеожиданнÑ\8bе Ð°Ñ\80гÑ\83менÑ\82Ñ\8b"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
+"Работа с накопителем на магнитной ленте с приёмом команд от удалённого "
+"процесса"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "N"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
-msgstr ""
+msgstr "задайте уровень отладки"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
-msgstr ""
+msgstr "задайте имя выходного файла отладки"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
-#, fuzzy, c-format
+#: rmt/rmt.c:715 rmt/rmt.c:783
+#, c-format
 msgid "cannot open %s"
-msgstr "невозможно открыть `%s'"
+msgstr "не удаётся открыть %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "слишком много аргументов"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Неверная команда"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Это не похоже на tar-архив"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Всего записано байт"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Всего прочитано байт"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Всего удалено байт: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(канал)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
-msgstr "Ð\9dевеÑ\80ное значение для record_size"
+msgstr "Ð\9dедопÑ\83Ñ\81Ñ\82имое значение для record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Не указано имя архива"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
-msgstr "Невозможно проверить архив на stdin/stdout"
+msgstr "Не удаётся проверить архив на stdin/stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
-msgstr "Ð\90Ñ\80Ñ\85ив Ñ\81жаÑ\82. Ð\98Ñ\81полÑ\8cзÑ\83йÑ\82е Ð¾Ð¿Ñ\86иÑ\8e %s"
+msgstr "Ð\90Ñ\80Ñ\85ив Ñ\81жаÑ\82. Ð\98Ñ\81полÑ\8cзÑ\83йÑ\82е Ð¿Ð°Ñ\80амеÑ\82Ñ\80 %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
-msgstr "Невозможно обновить сжатые архивы"
+msgstr "Не удаётся обновить сжатые архивы"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Начало ленты, завершение работы"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Слишком много ошибок, завершение работы"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
@@ -685,7 +690,7 @@ msgstr[0] "Размер записи = %lu блок"
 msgstr[1] "Размер записи = %lu блока"
 msgstr[2] "Размер записи = %lu блоков"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
@@ -693,39 +698,39 @@ msgstr[0] "Невыровненный блок (%lu байт) в архиве"
 msgstr[1] "Невыровненный блок (%lu байта) в архиве"
 msgstr[2] "Невыровненный блок (%lu байт) в архиве"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Невозможно вернуться назад на один архивный файл; он может быть нечитаемым "
 "без -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek не остановился на границе записи"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: содержит неверный номер тома"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Переполнение номера тома"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Приготовьте том Номер %d для %s и нажмите Enter: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Конец файла вместо ожидаемого ответа пользователя"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: Архив не полный"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -737,66 +742,66 @@ msgstr ""
 " q             Выход из tar\n"
 " y или [нов.строка] Продолжение операции\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Порождение подпроцесса командного процессора\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Вывод этого списка\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Нет нового тома, завершение работы.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Не указано имя имя файла. Попробуйте ещё раз.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Неверные входные данные. Наберите ? для получения справки.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Сбой команды %s"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s, возможно, продолжается на этом томе - в заголовке находится усечённое имя"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s не продолжается на этом томе"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s является неверным размером (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Этот том вне последовательности (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Метка архива не соответствует %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Том %s не соответствует %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -804,7 +809,7 @@ msgstr ""
 "%s: слишком длинное имя файла для сохранения в многотомном заголовке GNU; "
 "обрезано"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "запись не остановилась на границе блока"
 
@@ -816,20 +821,20 @@ msgstr[0] "Можно было прочитать только %lu байт из
 msgstr[1] "Можно было прочитать только %lu байта из %lu"
 msgstr[2] "Можно было прочитать только %lu байт из %lu"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Содержимое различно"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Неожиданный конец файла в архиве"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Типы файлов отличаются"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Права доступа отличаются"
 
@@ -845,42 +850,42 @@ msgstr "Gid отличаются"
 msgid "Mod time differs"
 msgstr "Время изменения отличается"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Размеры отличаются"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Не ссылается на %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Символические ссылки отличаются"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Номера устройств отличаются"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Проверка "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Неизвестный тип файла `%c', сравнён как обычный файл "
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Архив содержит файлы с именами, из которых удалены префиксы."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "При проверке оригинальные файлы могут быть не найдены."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
@@ -888,46 +893,46 @@ msgstr[0] "СБОЙ ПРОВЕРКИ: обнаружен %d неверный з
 msgstr[1] "СБОЙ ПРОВЕРКИ: обнаружено %d неверных заголовка"
 msgstr[2] "СБОЙ ПРОВЕРКИ: обнаружено %d неверных заголовков"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Нулевой блок в %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: содержит каталог с кэшем тегов %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "значение %s за пределами %s диапазона %s..%s; заменяется на %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "значение %s за пределами %s диапазона %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Создаются отрицательные восьмеричные заголовки"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: имя файла слишком длинное (максимум %d); не сброшено"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: имя файла слишком длинное (не может быть разделено); не сброшено"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: имя ссылки слишком длинное; не сброшено"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -935,55 +940,55 @@ msgstr[0] "%s: Файл урезан на %s байт; дополнен нуля
 msgstr[1] "%s: Файл урезан на %s байта; дополнен нулями"
 msgstr[2] "%s: Файл урезан на %s байт; дополнен нулями"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: файл находится на другой файловой системе; не сброшен"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "содержимое не сброшено"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Неизвестный тип файла; файл проигнорирован"
 
-#: src/create.c:1472
-#, fuzzy, c-format
+#: src/create.c:1527
+#, c-format
 msgid "Missing links to %s."
-msgstr "Отсутствуют ссылки на %s.\n"
+msgstr "Отсутствуют ссылки на %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: файл не изменён; не сброшен"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: файл является архивом; не сброшен"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "каталог не сброшен"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: файл изменился во время чтения"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: сокет проигнорирован"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door проигнорирован"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Пропускается до следующего заголовка"
 
@@ -991,74 +996,74 @@ msgstr "Пропускается до следующего заголовка"
 msgid "Deleting non-header from archive"
 msgstr "Удаляется не-заголовок из архива"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: невероятно старая временная метка %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: временная метка %s - %s с в будущем "
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Неожиданная противоречивость при создании каталога"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Каталог переименован до того, как мог быть извлечен его статус"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Непрерывные файлы извлекаются как обычные"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Выполняется попытка извлечь символические ссылки как жесткие"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Невозможно извлечь -- файл продолжается с другого тома"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Непредвиденный длинный заголовок имени"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Неизвестный тип файла `%c', извлечён как обычный файл"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Текущий %s более новый или такого же возраста"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Невозможно было выполнить резервное копирование этот файла"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Невозможно переименовать %s в %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Каталог был переименован из %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Каталог был переименован"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Каталог новый"
@@ -1168,35 +1173,35 @@ msgstr "%s: Удаляется %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Невозможно удалить"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Пропускается"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "блок %s: ** Блок нулей **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "блок %s: ** Конец файла **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "блок %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "В заголовке пустое поле вместо ожидаемого числового значения %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1204,150 +1209,152 @@ msgstr ""
 "дополнение до двух"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Восьмеричное значение архива %.*s за пределами диапазона %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Архив содержит устаревающие заголовки base-64"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Архив подписан строкой base-64 %s за пределами диапазона %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Значение base-256 архива за пределами диапазона %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Заголовок содержит %.*s вместо ожидаемого числового значения %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Значение архива %s за пределами %s диапазона %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " ссылка на %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " неизвестный тип файла %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Длинная ссылка--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Длинное имя--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Заголовок тома--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Продолжение с позиции %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Создание каталога:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Невозможно изменить рабочий каталог"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s переименован в %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Невозможно переименовать в %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "%s переименовывается назад в %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Невозможно сохранить рабочий каталог"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Невозможно изменить рабочий каталог"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Файла удален до его считывания"
 
-#: src/misc.c:774
-#, fuzzy, c-format
+#: src/misc.c:866
+#, c-format
 msgid "%s: Directory removed before we read it"
-msgstr "%s: Ð¤Ð°Ð¹Ð»Ð° Ñ\83дален Ð´Ð¾ ÐµÐ³Ð¾ Ñ\81Ñ\87иÑ\82Ñ\8bвания"
+msgstr "%s: ÐºÐ°Ñ\82алог Ñ\83далÑ\91н Ð´Ð¾ ÐµÐ³Ð¾ Ñ\87Ñ\82ения"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "дочерний процесс"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "межпроцессорный канал"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "В именах файлов используются символы подстановки."
+msgstr "В именах файлов используются символы подстановки"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
-"Используйте --wildcards, чтобы задействовать эти символы, или --no-wildcards,"
+"Используйте --wildcards, чтобы задействовать эти символы, или --no-"
+"wildcards, чтобы убрать это предепреждение."
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Не найден в архиве"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Требуемое вхождение не найдено в архиве"
 
-#: src/names.c:894
-#, fuzzy
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Метка архива не соответствует %s"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
-msgstr "--preserve-order несовместим с --listed-incremental"
+msgstr ""
+"Параметра -C в списке файлов нельзя Использовать с параметром --listed-"
+"incremental"
 
-#: src/names.c:900
-#, fuzzy
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
-msgstr "--preserve-order несовместим с --listed-incremental"
+msgstr ""
+"С параметром --listed-incremental можно использовать только параметр -C"
 
 #: src/tar.c:81
 #, c-format
 msgid "Options `-%s' and `-%s' both want standard input"
-msgstr "Ð\9eбе Ð¾Ð¿Ñ\86ии `-%s' Ð¸ `-%s' Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\82 стандартный ввод"
+msgstr "Ð\94лÑ\8f Ð¾Ð±Ð¾Ð¸Ñ\85 Ð¿Ð°Ñ\80амеÑ\82Ñ\80ов Â«-%s» Ð¸ Â«-%s» Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f стандартный ввод"
 
 #: src/tar.c:158
 #, c-format
@@ -1363,10 +1370,10 @@ msgstr "Запрошены расширения GNU для несовмести
 msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
-"Неизвестный стиль цитирования `%s'. Воспользуйтесь `%s --quoting-style=help' "
-"для получения полного списка. "
+"Неизвестный стиль цитирования «%s». Воспользуйтесь параметром «%s --quoting-"
+"style=help» для получения полного списка. "
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1376,8 +1383,8 @@ msgid ""
 "  tar -tvf archive.tar         # List all files in archive.tar verbosely.\n"
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
-"GNU `tar' предназначен для сохранения файлов на магнитную ленту или в архив "
-"на Ð´Ð¸Ñ\81ке Ð¸ Ð´Ð»Ñ\8f Ð²Ð¾Ñ\81Ñ\81Ñ\82ановлениÑ\8f Ð¾Ñ\82делÑ\8cнÑ\8bÑ\85 Ñ\84айлов Ð¸Ð· Ð°Ñ\80Ñ\85ива.\n"
+"GNU tar предназначен для сохранения файлов на магнитную ленту или в архив на "
+"диске и для восстановления отдельных файлов из архива.\n"
 "\n"
 "Примеры:\n"
 "  tar -cf archive.tar foo bar  # Создание archive.tar из файлов foo и bar.\n"
@@ -1385,7 +1392,7 @@ msgstr ""
 "архиве archive.tar.\n"
 "  tar -xf archive.tar          # Извлечение всех файлов из archive.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1396,7 +1403,7 @@ msgid ""
 "  nil, existing   numbered if numbered backups exist, simple otherwise\n"
 "  never, simple   always make simple backups\n"
 msgstr ""
-"Суффикс для резервных копий - `~', если он не установлен через --suffix\n"
+"Суффикс для резервных копий - '~', если он не установлен через --suffix\n"
 "или SIMPLE_BACKUP_SUFFIX. Управление версиями может быть установлено\n"
 "через --backup или VERSION_CONTROL. Значениями могут быть:\n"
 "\n"
@@ -1406,80 +1413,80 @@ msgstr ""
 "простые\n"
 "  never, simple   всегда создавать простые резервные копии\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Основной режим работы:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "вывод списка содержимого архива"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "извлечение файлов из архива"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "создание нового архива"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "поиск различий между архивом и файловой системой"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "добавление файлов в конец архива"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "добавление в архив только более новых файлов"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "присоединение tar-файлов к архиву"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "удаление из архива (не на магнитных лентах!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "проверка метки тома архива и выход"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Модификаторы:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "эффективная обработка разрежённых файлов"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "установить версию используемого формата разрежения (подразумевает --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "обработка добавочного резервирования старого формата GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "обработка добавочного резервирования нового формата GNU"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
-msgstr ""
+msgstr "уровень копирования для созданного разностного архива со списком"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "не завершать работу при ненулевом статусе для нечитаемых файлов"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1491,126 +1498,125 @@ msgstr ""
 "list, и когда список файлов задан либо в командной строке, либо через опцию -"
 "T. По умолчанию N равен 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "доступен поиск по архиву"
 
-#: src/tar.c:436
-#, fuzzy
+#: src/tar.c:437
 msgid "archive is not seekable"
-msgstr "доÑ\81Ñ\82Ñ\83пен Ð¿Ð¾Ð¸Ñ\81к Ð¿Ð¾ Ð°Ñ\80Ñ\85ивÑ\83"
+msgstr "поиÑ\81к Ð¿Ð¾ Ð°Ñ\80Ñ\85ивÑ\83 Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пен"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "не проверять номера устройств при создании инкрементных архивов"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "проверять номера устройств при создании инкрементных архивов (по умолчанию)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Управление перезаписью:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "попытка проверить архив после его записи"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "удаление файлов после их добавления в архив"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "не перезаписывать существующие файлы при извлечении"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 "не перезаписывать существующие файлы, которые более новые, чем их копии в "
 "архиве"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "перезапись существующих файлов при извлечении"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "удаление каждого файла до извлечения поверх него"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "очистка всей иерархии до извлечения каталога"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "сохранение метаданных существующих каталогов"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "перезапись существующих файлов при извлечении (по умолчанию)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Выбор выходного потока:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "извлекать файлы на стандартный вывод"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "КОМАНДА"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "перенаправлять извлечённые файлы в другую программу"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "игнорировать коды завершения дочерних процессов"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "считать ненулевые коды завершения дочерних процессов как ошибку"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Обработка атрибутов файлов:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 "принудительно устанавливать ИМЯ в качестве владельца для добавленных файлов"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 "принудительно устанавливать ИМЯ в качестве группы для добавленных файлов"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "ДАТА-ИЛИ-ФАЙЛ"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "устанавливать для добавленных файлов mtime из ДАТЫ-ИЛИ-ФАЙЛА"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "РЕЖИМ"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 "принудительно устанавливать (символьный) РЕЖИМ доступа для добавляемых файлов"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "СПОСОБ"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1620,33 +1626,34 @@ msgstr ""
 "после чтения (СПОСОБ='replace'; используется по умолчанию) или не установки "
 "времени в первую очередь (СПОСОБ='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "не извлекать время изменения файла"
 
-#: src/tar.c:504
-#, fuzzy
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
-msgstr "попытаться извлечь файлы с тем же владельцем"
+msgstr ""
+"попытаться извлечь файлы с тем же владельцем, что и в архиве (по умолчанию "
+"для супепользователя)"
 
-#: src/tar.c:506
-#, fuzzy
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
-msgstr "извлекать файлы как свои собственные"
+msgstr ""
+"извлекать файлы как свои собственные (по умолчанию для обычных пользователей)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "использовать числа вместо имён владельца/группы"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "извлекать информацию о правах доступа к файлу (по умолчанию для "
 "суперпользователя)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1654,15 +1661,15 @@ msgstr ""
 "применять umask пользователя при извлечении прав доступа из архива (по "
 "умолчанию для обычных пользователей)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "сортировать извлекаемые имена в том же порядке, что и в архиве"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "эквивалент -p и -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1670,140 +1677,140 @@ msgstr ""
 "не устанавливать время изменения и права доступа извлечённых каталогов до "
 "завершения процесса извлечения"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
-msgstr "оÑ\82мениÑ\82Ñ\8c Ð´ÐµÐ¹Ñ\81Ñ\82вие Ð¾Ð¿Ñ\86ии --delay-directory-restore"
+msgstr "оÑ\82мениÑ\82Ñ\8c Ð´ÐµÐ¹Ñ\81Ñ\82вие Ð¿Ð°Ñ\80амеÑ\82Ñ\80а --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Выбор и переключение устройств:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "АРХИВ"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "использовать файл или устройство АРХИВ"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "файл архива является локальным, даже если содержит двоеточие"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "использовать указанную КОМАНДУ rmt вместо rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "использовать удалённую КОМАНДУ вместо rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "указать устройство и плотность"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "создание/листинг/извлечение многотомных архивов"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "сменить ленту после записи ЧИСЛО x 1024 байт"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 "запустить скрипт по окончании каждой ленты (подразумевается использование -М)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "использовать/обновлять номера тома в ФАЙЛЕ"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Разбиение на блоки:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "БЛОКИ"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "число БЛОКОВ x 512 байт на запись"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "ЧИСЛО байт на запись, кратное 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "игнорировать нулевые блоки в архиве (т.е. EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "заново разбивать на блоки при чтении (для каналов 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Формата архива:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "ФОРМАТ"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "создать архив в указанном формате"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "ФОРМАТОМ может быть:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "старый формат tar V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "формат GNU как в tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "формат GNU tar 1.13.х"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "формат POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "формат POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "эквивалент pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "эквивалент --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "эквивалент --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "keyword[[:]=значение][,keyword[[:]=значение]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "управляющие ключевые слова pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "ТЕКСТ"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1811,76 +1818,76 @@ msgstr ""
 "создать архив с именем тома ТЕКСТ; при листинге/извлечении использовать "
 "ТЕКСТ в качестве шаблона подстановки"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Опции сжатия:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "использовать суффикс архива для определения программы сжатия"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "не использовать суффикс архива для определения программы сжатия"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "ПРОГ"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "пропустить архив через ПРОГ (должна поддерживать -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Выбор локальных файлов:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "добавить указанный ФАЙЛ в архив (полезно, если имя начинается с дефиса)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "КАТАЛОГ"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "перейти в КАТАЛОГ"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "загрузить из ФАЙЛА имена для извлечения или создания"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T читает строки, оканчивающиеся нулём, отключает опцию -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "выключить воздействие предыдущей опции --null"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "убрать кавычки с имён файлов, прочитанных с опцией -T (по умолчанию)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "не убирать кавычки с имён файлов, прочитанных с опцией -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "ШАБЛОН"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "исключать файлы, определённые ШАБЛОНОМ"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "исключать шаблоны, перечисленных в ФАЙЛЕ"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1888,93 +1895,93 @@ msgstr ""
 "исключать содержимое каталогов с файлом CACHEDIR.TAG за исключением самого "
 "файла с тегами"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "исключать всё содержимое каталогов, содержащих файл CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "исключать каталоги, содержащие файл CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "исключать каталоги, содержащие ФАЙЛ, за исключением самого ФАЙЛА"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "исключать всё содержимое каталогов, содержащих ФАЙЛ"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "исключать каталоги с ФАЙЛОМ"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "исключать каталоги CVS"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
-msgstr ""
+msgstr "исключать резервные файлы и файлы блокировки"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "отключить автоматический спуск в каталоги"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "оставаться в локальной файловой системе при создании архива"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "рекурсивный спуск по каталогам (по умолчанию)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "не удалять начальные `/' из имен файлов"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "следовать по символьным ссылкам и сохранять файлы, на которые они указывают"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "следовать по жёстким ссылкам и сохранять файлы, на которые они указывают"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "ИМЯ-ЧЛЕНА"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "начинать с члена ИМЯ-ЧЛЕНА в архиве"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "сохранять только те файлы, которые новее ДАТЫ-ИЛИ-ФАЙЛА"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "ДАТА"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "сравнивать дату и время, только если изменены данные"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "УПРАВЛЕНИЕ"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "делать копию перед удалением, УПРАВЛЕНИЕ выбора версий"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "СТРОКА"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1982,102 +1989,101 @@ msgstr ""
 "делать копию перед удалением, переопределяет обычный суффикс ('~', если "
 "только он не переопределён переменной окружения SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Преобразование имён файлов:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 "удалять указанное ЧИСЛО начальных компонентов из имён файлов перед "
 "извлечением"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "РАСШИРЕНИЕ"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "использовать замену РАСШИРЕНИЯ sed'ом для преобразования имён файлов"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Опции шаблонов подстановки для имён файлов (влияют на шаблоны включения и "
 "исключения):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "игнорировать регистр"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "шаблоны начала имени файла"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "шаблоны после любого '/' (по умолчанию для исключаемых)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "с учётом регистра (по умолчанию)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "использовать маски (по умолчанию для исключаемых)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "точное соответствие строке"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "маски не соответствуют '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "маски соответствуют '/' (по умолчанию для исключаемых)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Вывод информации:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "подробный листинг обрабатываемых файлов"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
-msgstr ""
+msgstr "КЛЮЧЕВОЕ СЛОВО"
 
-#: src/tar.c:740
-#, fuzzy
+#: src/tar.c:741
 msgid "warning control"
-msgstr "Управление перезаписью:"
+msgstr "управление предупреждением"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "вывод сообщений о ходе выполнения через каждые ЧИСЛО записей (по умолчанию "
 "10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ДЕЙСТВИЕ"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "выполнять ДЕЙСТВИЕ на каждой контрольной точке"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "вывод сообщений, если сохранены не все ссылки"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "СИГНАЛ"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2089,27 +2095,32 @@ msgstr ""
 "SIGQUIT, SIGINT, SIGUSR1 и SIGUSR2. Также разрешается использовать имена без "
 "префикса SIG"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "вывод даты изменения файла в формате UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "отправить подробный вывод данных в FILE"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "выводить номера блоков архива в каждом сообщении"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "запрашивать подтверждение для каждого действия"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "показать значения tar по умолчанию"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2117,31 +2128,31 @@ msgstr ""
 "при выводе листинга или извлечении показывать все каталоги, не "
 "соответствующем условию поиска"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "показывать имена файлов или архивов после преобразования"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "СТИЛЬ"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "установить стиль цитирования имён. Значения для СТИЛЯ см. ниже"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "дополнительно цитировать символы из СТРОКИ"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "отключить цитирование символов из СТРОКИ"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Опции совместимости:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2149,64 +2160,62 @@ msgstr ""
 "при создании, эквивалент --old-archive; при извлечении, эквивалент --no-same-"
 "owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Другие опции:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "отключить использование некоторых потенциально опасных опций"
 
-#: src/tar.c:927
-#, fuzzy
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
-msgstr "Указать можно не более одной опции `-Acdtrux'"
+msgstr "Указать можно только один из параметров «-Acdtrux» или «--test-label»"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Конфликт опций сжатия"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Неизвестное название сигнала: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Файл с образцом даты не найден"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "%s заменяется на неизвестный формат даты %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Опция `%s': дата '%s' рассматривается как %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: список файлов уже прочитан"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: в прочитанном имени файла присутствует пустой символ"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
-#, fuzzy, c-format
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
+#, c-format
 msgid "filter the archive through %s"
-msgstr "пропустить архив через xz"
+msgstr "пропустить архив через %s"
 
-#: src/tar.c:1290
-#, fuzzy
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
-msgstr "Ð\94опÑ\83Ñ\81Ñ\82имÑ\8bе Ð°Ñ\80гÑ\83менÑ\82Ñ\8b Ð´Ð»Ñ\8f Ð¾Ð¿Ñ\86ий --quoting-style:"
+msgstr "Ð\94опÑ\83Ñ\81Ñ\82имÑ\8bе Ð°Ñ\80гÑ\83менÑ\82Ñ\8b Ð´Ð»Ñ\8f Ð¿Ð°Ñ\80амеÑ\82Ñ\80а --quoting-style:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2214,53 +2223,51 @@ msgstr ""
 "\n"
 "Значения по умолчанию *этого* tar:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Неверный размер ёмкости блока"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Неверная длина ленты"
 
-#: src/tar.c:1511
-#, fuzzy
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
-msgstr "Ð\9dевеÑ\80нÑ\8bй Ñ\84оÑ\80маÑ\82 Ð¸Ð½ÐºÑ\80еменÑ\82ного Ñ\84айла"
+msgstr "Ð\9dедопÑ\83Ñ\81Ñ\82имое Ð·Ð½Ð°Ñ\87ение Ð´Ð¾Ð±Ð°Ð²Ð¾Ñ\87ного Ñ\83Ñ\80овнÑ\8f"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Больше одной пороговой даты"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Неверное значение версии разрежения"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' не поддерживается на этой платформе"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "значение --checkpoint не является целым числом"
 
-#: src/tar.c:1830
-#, fuzzy
+#: src/tar.c:1848
 msgid "Invalid group"
-msgstr "%s: Неверная группа"
+msgstr "Недопустимая группа"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "В опции указан неверный режим доступа"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Неверное число"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Неверный владелец"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2268,69 +2275,68 @@ msgstr ""
 "Опция --preserve устарела, используйте --preserve-permissions --preserve-"
 "order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Неверный размер записи"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Размер записи должен быть кратен %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Неверное число элементов"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Разрешается использовать только одну опцию --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Неверно сформирован аргумент плотности: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Неизвестная плотность: '%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Опции `-[0-7][lmh]' не поддерживаются *этим* tar'ом"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[ФАЙЛ]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Для старой опции `%c' нужно указать аргумент."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence бесполезна без списка файлов"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence не может быть использована запрошенном режиме работы"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Для нескольких файлов архивов требуется опция `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Нельзя комбинировать --listed-incremental с --newer"
 
-#: src/tar.c:2387
-#, fuzzy
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "--preserve-order несовместим с --listed-incremental"
+msgstr "параметр --level не имеет смыла без --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2338,48 +2344,47 @@ msgstr[0] "%s: Метка тома слишком длинная (максиму
 msgstr[1] "%s: Метка тома слишком длинная (максимум %lu байта)"
 msgstr[2] "%s: Метка тома слишком длинная (максимум %lu байт)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Невозможно проверить многотомные архивы"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Невозможно проверить сжатые архивы"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Невозможно использовать многотомные сжатые архивы"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Невозможно объединить сжатые архивы"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option может быть использована только с архивами POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Размер тома не может быть меньше размера записи"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order несовместим с --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Робкий отказ от создания пустого архива"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
-msgstr "Ð\9eпÑ\86ии `-Aru' Ð½Ðµ Ñ\81овмеÑ\81Ñ\82имÑ\8b Ñ\81 `-f -'"
+msgstr "Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b Â«-Aru» Ð½Ðµ Ñ\81овмеÑ\81Ñ\82имÑ\8b Ñ\81 Â«-f -»"
 
-#: src/tar.c:2592
-#, fuzzy
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "Ð\92Ñ\8b Ð´Ð¾Ð»Ð¶Ð½Ñ\8b Ñ\83казаÑ\82Ñ\8c Ð¾Ð´Ð½Ñ\83 Ð¸Ð· Ð¾Ð¿Ñ\86ий `-Acdtrux'"
+msgstr "Ð\9dеобÑ\85одимо Ñ\83казаÑ\82Ñ\8c Ð¾Ð´Ð¸Ð½ Ð¸Ð· Ð¿Ð°Ñ\80амеÑ\82Ñ\80ов -Acdtrux Ð¸Ð»Ð¸ --test-label"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Завершение работы с состоянием неисправности с из-за возникших ошибок"
@@ -2392,59 +2397,58 @@ msgstr[0] "%s: Файл урезан на %s байт"
 msgstr[1] "%s: Файл урезан на %s байта"
 msgstr[2] "%s: Файл урезан на %s байт"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Неизвестное или ещё не реализованное ключевое слово %s"
 
-#: src/xheader.c:173
-#, fuzzy
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
-msgstr "ЧиÑ\81ло Ð·Ð° Ð¿Ñ\80еделами Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имого Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°: %s"
+msgstr "Ð\9cеÑ\82ка Ð²Ñ\80емени Ð·Ð° Ð¿Ñ\80еделами Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имого Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Шаблон %s не может быть использован"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Ключевое слово %s не может быть перекрыто"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Неверно сформирован расширенный заголовок: отсутствует длина"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Длина расширенного заголовка за пределами допустимого диапазона"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Длина расширенного заголовка %*s за пределами допустимого диапазона"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 "Неверно сформирован расширенный заголовок: после длины отсутствует пробел"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Неверно сформирован расширенный заголовок: отсутствует знак равенства "
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 "Неверно сформирован расширенный заголовок: отсутствует знак новой строки"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Игнорируется неизвестное ключевое слово расширенного заголовка `%s'"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
@@ -2453,29 +2457,29 @@ msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Расширенный заголовок %s=%s за пределами диапазона %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Неверно сформирован расширенный заголовок: неверный %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Неверно сформирован расширенный заголовок: превышен %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Неверно сформирован расширенный заголовок: неверный %s: непредвиденный "
 "разделитель %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2518,7 +2522,7 @@ msgstr "Контрольная точка записи %u"
 msgid "Read checkpoint %u"
 msgstr "Контрольная точка чтения %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2527,94 +2531,92 @@ msgstr ""
 "от GNU.\n"
 "ОПЦИИ:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Опции создания файла:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "РАЗМЕР"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Создание файла указанного РАЗМЕРА"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Запись в файл с ИМЕНЕМ, а не на стандартный вывод"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Чтение имён файла из ФАЙЛА"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T читает строки, оканчивающиеся нулём"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "Заполнение файла заданным ШАБЛОНОМ. ШАБЛОН - это 'default' или 'zeros'"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Размер блока для разрежённого файла"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Создание разрежённого файла. Остальная часть команды определяет карту файла."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "СМЕЩЕНИЕ"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Искать до указанного смещения перед записью данных"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
-msgstr "Ð\9eпÑ\86ии статистики по файлам:"
+msgstr "Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b статистики по файлам:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Вывод содержимого структуры stat для всех указанных файлов. ФОРМАТ по "
 "умолчанию:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
-msgstr "Ð\9eпÑ\86ии синхронного выполнения:"
+msgstr "Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b синхронного выполнения:"
 
-#: tests/genfile.c:164
-#, fuzzy
+#: tests/genfile.c:163
 msgid "OPTION"
-msgstr " [ОПЦИЯ...]"
+msgstr "ПАРАМЕТР"
 
-#: tests/genfile.c:165
-#, fuzzy
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
-"Выполнение указанной КОМАНДЫ. Полезно вместе с опцией --checkpoint и одной "
-"из --cut, --append, --touch"
+"Выполнение АРГУМЕНТОВ. Полезно с параметром --checkpoint и одним из --cut, --"
+"append или --touch"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Выполнение указанного действия (см. ниже) до достижения контрольной точки с "
 "заданным НОМЕРОМ"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
-msgstr "Указание Ð´Ð°Ñ\82Ñ\8b Ð´Ð»Ñ\8f Ñ\81ледÑ\83Ñ\8eÑ\89ей Ð¾Ð¿Ñ\86ии --touch"
+msgstr "Указание Ð´Ð°Ñ\82Ñ\8b Ð´Ð»Ñ\8f Ñ\81ледÑ\83Ñ\8eÑ\89его Ð¿Ð°Ñ\80амеÑ\82Ñ\80а --touch"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Показать выполненные контрольные точки и статус выхода КОМАНДЫ"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2622,7 +2624,7 @@ msgstr ""
 "Синхронное выполнение действий. Они выполняются при достижении контрольной "
 "точки с номером, определённым опцией --checkpoint."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2630,144 +2632,147 @@ msgstr ""
 "Усечь ФАЙЛ до размера, определённого предыдущей опцией --length (или 0, если "
 "не указан)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Добавить РАЗМЕР байт к ФАЙЛУ. РАЗМЕР определяется предыдущей опцией --length."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Обновить время последнего доступа и изменения ФАЙЛА."
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Выполнить КОМАНДУ"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
-msgstr ""
+msgstr "Разорвать связь с ФАЙЛОМ"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Недопустимый размер: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Число за пределами допустимого диапазона: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Отрицательный размер: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "Сбой stat(%s)"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "запрошенная длина файла %lu, реальная %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "созданный файл не является разреженным"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Ошибка разбора числа возле `%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Неизвестный формат даты"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[АРГУМЕНТЫ...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "невозможно открыть `%s'"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "невозможно найти"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "в имени файла присутствует пустой символ"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "невозможно вывести разрежённые файлы на стандартный вывод; используйте опцию "
 "--file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "неверная маска (возле `%s')"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Неизвестное поле `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "невозможно установить время в `%s'"
 
-#: tests/genfile.c:700
-#, fuzzy, c-format
+#: tests/genfile.c:699
+#, c-format
 msgid "cannot unlink `%s'"
-msgstr "невозможно открыть `%s'"
+msgstr "не удаётся разорвать связь с «%s»"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Команда успешно выполнена\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Сбой команды; состояние: %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Команда завершена по сигналу %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Команда остановлена по сигналу %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Команда сбросила дамп памяти\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Команда завершена\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "для опции --stat нужны имена файлов"
 
+#~ msgid "Cannot save working directory"
+#~ msgstr "Невозможно сохранить рабочий каталог"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: недопустимая опция -- %c\n"
 
index be06d16b0ab8b0c8bb98f03972a7d85a2ec89b7f..0d7cabb3490a7c7ac21054c006425f7123243dcd 100644 (file)
Binary files a/po/sk.gmo and b/po/sk.gmo differ
index 5fa77b1ceff89cbaf16f00a4d6cd42187ea9b5d0..b5e7b8414dab9769ae3bbb0f1901ec836ad243d7 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -2,14 +2,16 @@
 # Copyright (C) 1997 Free Software Foundation, Inc.
 # Martin Lacko <lacko@host.sk>, 2001.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar- \n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2002-02-10 12:00CEST\n"
 "Last-Translator: Martin Lacko <lacko@host.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"Language: sk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -90,7 +92,7 @@ msgstr ""
 "pripomienky k pkekladu zasielajte na adresu <sk-i18n@lists.linux.sk> "
 "(slovensky).\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Neznáma systémová chyba"
 
@@ -102,8 +104,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -141,56 +143,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: prepínaè %s nie je jednoznaèný\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: prepínaè `--%s' musí by» zadaný bez argumentov\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: prepínaè `%c%s' musí by» zadaný bez argumentu\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: prepínaè `%s' vy¾aduje argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: neznámy prepínaè `--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: neznámy prepínaè `%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: neznámy prepínaè -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: prepínaè vy¾aduje argument -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: prepínaè `-W %s' nie je jednoznaèný\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: prepínaè `-W %s' musí by» zadaný bez argumentu\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: prepínaè `%s' vy¾aduje argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "Pamä» vyèerpaná"
@@ -521,189 +528,189 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Vzdialený shell nie je mo¾né spusti»"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Smer posunu v súbore je mimo rozsah"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Zadáné chybné práva"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Neplatný èas súboru"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Veµkos» pozície v súbore je mimo rozsah"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Neplatná då¾ka pásky"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Veµkos» pozície v súbore je mimo rozsah"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Predèasný koniec súboru\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "%s: neznámy prepínaè -- %c\n"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Neoèekávaný koniec archívu"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "%s: Nedá sa zmeni» pozícia v súbore na %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Neznámy príkaz"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Toto pravdepodobne nie je tar archiv"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 #, fuzzy
 msgid "Total bytes written"
 msgstr "Celkom zapísané bajtov: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, fuzzy, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Celkom zapísané bajtov: %s (%sB, %sB/s)\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(rúra)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Chybná hodnota pre veµkos» záznamu"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Meno archívu nebolo zadané"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Stdin/Stdout archív nie je mo¾né otvori»"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Komprimovaný archív nie je mo¾né aktualizova»"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Páska na zaèiatku, konèím"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Príli¹ mnoho chýb, konèím"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, fuzzy, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Veµkos» záznamu = %lu blokov"
 msgstr[1] "Veµkos» záznamu = %lu blokov"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, fuzzy, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Nezarovnaný blok (%lu bajtov) v archíve"
 msgstr[1] "Nezarovnaný blok (%lu bajtov) v archíve"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "V archíve sa nie je mo¾né vráti», bez -i mô¾e by» neèitateµný"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: vracia chybné èíslo zväzku"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Èíslo zväzku preteèené"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Pripravte zväzok #%d pre archív %s a stlaète return:"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Namiesto u¾ívateµskej odpovede bol zadaný koniec súboru"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "VAROVANIE: Archiv je nekompletný"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, fuzzy, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -715,71 +722,71 @@ msgstr ""
 " !          Vytvorenie podshellu\n"
 " ?          Vypísanie tejto nápovedy\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Nie je nový zväzok; konèím.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, fuzzy, c-format
 msgid "%s command failed"
 msgstr "'%s' príkaz zlyhal"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, fuzzy, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s nepokraèuje na tomto zväzku"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s nepokraèuje na tomto zväzku"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s je chybnej då¾ky (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Tento zväzok nie je následníkem predchádzajúceho"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Pre vyhodnotenie vzorky `%s' musí by» archív pomenovaný"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Zväzok %s nezodpovedá vzorke %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -790,20 +797,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Dá sa èíta» iba %lu z %lu bajtov"
 msgstr[1] "Dá sa èíta» iba %lu z %lu bajtov"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Obsah sa lí¹i"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Neoèekávaný koniec archívu"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Typ súboru sa lí¹i"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Práva sa lí¹ia"
 
@@ -819,143 +826,143 @@ msgstr "Gid sa l
 msgid "Mod time differs"
 msgstr "Èas poslednej úpravy sa lí¹i"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Veµkos» sa lí¹i"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Nie je odkazom na %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symbolický odkaz sa lí¹i"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Èíslo zariadenia sa lí¹i"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Overujem "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Neznámy typ súboru '%c', porovnávaný ako normálny súbor"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, fuzzy, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "CHYBNÉ OVERENIE: nájdených chybných hlavièiek: %d"
 msgstr[1] "CHYBNÉ OVERENIE: nájdených chybných hlavièiek: %d"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "hodnota %s typu %s je mimo rozsah %s..%s; nahradzujem za %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "hodnota %s typu %s je mimo rozsah %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Generujem záporné osmièkové hlavièky"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, fuzzy, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: súbor nie je zmenený; neaktualizovaný"
 
-#: src/create.c:634
+#: src/create.c:621
 #, fuzzy, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: súbor nie je zmenený; neaktualizovaný"
 
-#: src/create.c:661
+#: src/create.c:648
 #, fuzzy, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: súbor nie je zmenený; neaktualizovaný"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, fuzzy, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Súbor je krat¹í o : %s bajtov; Doplòujem nulami."
 msgstr[1] "%s: Súbor je krat¹í o : %s bajtov; Doplòujem nulami."
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: súbor je na inom súborovom systéme; nearchivovaný"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Neznámy typ súboru; súbor ignorovaný"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr " odkaz na %s\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: súbor nie je zmenený; neaktualizovaný"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: súbor je archiv; nearchivovaný"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: súbor bol poèas èítania zmenený"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: soket ignorovaný"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: dvere ignorované"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Preskakujem na ïal¹iu hlavièku"
 
@@ -963,76 +970,76 @@ msgstr "Preskakujem na 
 msgid "Deleting non-header from archive"
 msgstr "Z archívu je mazané to, èo nie je hlavièka"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, fuzzy, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: èasová nálepka %s je %lu z dátumu budúcnosti"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Neoèakávaná nekonzistencia, pri vytvárení adresára"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 "%s: Prieèinok bol premenovaný predtým, ako mohol by» extrahovaný jeho stav"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Súvisle ulo¾ené súbory rozbaµujem ako obyèajné súbory"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Skú¹am rozbali» symbolické odkazy ako pevné odkazy"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Nedá sa rozbali» -- súbor je pokraèovaním iného zväzku"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 #, fuzzy
 msgid "Unexpected long name header"
 msgstr "Neoèakávaný koniec v rozsekanom mene"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, fuzzy, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Neznámy typ súboru `%c', rozbalený ako normálny súbor"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Tento súbor nebolo mo¾né zálohova»"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, fuzzy, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s: nie je mo¾né premenova» na %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, fuzzy, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Adresár bol premenovaný"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Adresár bol premenovaný"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Adresár je nový"
@@ -1144,35 +1151,35 @@ msgstr "%s: Ma
 msgid "%s: Cannot remove"
 msgstr "%s: Nedá sa zmaza»"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Vynechávam"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok NUL **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Konec súboru **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Medzery v hlavièke na mieste, kde je oèakávaná èíselná hodnota typu %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1180,138 +1187,140 @@ msgstr ""
 "complement"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Osmièková hodnota %.*s typu %s je mimo rozsah"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Archív obsahuje zastaralé base-64 hlavièky"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Hodnota base-64 typu %s je mimo %s rozsah"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Hodnota base-256 typu %s je mimo rozsah"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Archív obsahuje %.*s tam, kde je oèakaváná èísalná hodnota typu %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Hodnota %s typu %s je mimo rozsah %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " odkaz na %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " neznámy typ súboru %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Hlavièka zväzku--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Pokraèované od %s bajtu--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Vytváram adresár:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Pracovný adresár nie je mo¾né zmeni»"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Premenovávam %s na %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: nie je mo¾né premenova» na %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Premenovávám %s spä» na %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Pracovný adresár nie je mo¾né uchova»"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Pracovný adresár nie je mo¾né zmeni»"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Súbor zmazaný skôr ako mohl by» èítaný"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Súbor zmazaný skôr ako mohl by» èítaný"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "potomok"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "meziprocesový kanál"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: V archíve nenájdený"
 
-#: src/names.c:622
+#: src/names.c:615
 #, fuzzy, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: V archíve nenájdený"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Pre vyhodnotenie vzorky `%s' musí by» archív pomenovaný"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1335,7 +1344,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 #, fuzzy
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
@@ -1354,7 +1363,7 @@ msgstr ""
 "  %s -tvf archív.tar         # Podrobne vypí¹e v¹etky súbory v archív.tar.\n"
 "  %s -xf archív.tar          # Rozbalí v¹etky súbory z archív.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 #, fuzzy
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
@@ -1380,80 +1389,80 @@ msgstr ""
 "                  existujú, inak tvorí jednoduché\n"
 "  never, simple   tvorí v¾dy jednoduché zálo¾né kópie súborov\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 #, fuzzy
 msgid "create a new archive"
 msgstr "Neoèekávaný koniec archívu"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1461,565 +1470,565 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr ""
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 #, fuzzy
 msgid "extract files to standard output"
 msgstr "Chyba pri zápise na ¹tandardný výstup"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 #, fuzzy
 msgid "create/list/extract multi-volume archive"
 msgstr "Víczväzkový archív nie je mo¾né otvori»"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 #, fuzzy
 msgid "Archive format selection:"
 msgstr "Odporujúce si archívne formáty"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Odporujúce si kompresné prepínaèe"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 #, fuzzy
 msgid "change to directory DIR"
 msgstr "Pracovný adresár nie je mo¾né zmeni»"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 #, fuzzy
 msgid "don't strip leading `/'s from file names"
 msgstr "Odstraòujem úvodné `%.*s' z názvov súborov"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 #, fuzzy
 msgid "wildcards do not match `/'"
 msgstr "Zväzok %s nezodpovedá vzorke %s"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2027,290 +2036,295 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
+msgstr "Zadáné chybné práva"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr ""
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Viac ako jeden prepínaè `-Acdtrux' nemô¾e by» zadaných"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Odporujúce si kompresné prepínaèe"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr " neznámy typ súboru %s\n"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 #, fuzzy
 msgid "Date sample file not found"
 msgstr "Dátumový súbor nebol nájdený"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Zamieòam %s za neznámy dátumový formát %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, fuzzy, c-format
 msgid "%s: file list already read"
 msgstr "%s: súbor je archiv; nearchivovaný"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "%s: súbor je archiv; nearchivovaný"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Neplatný poèet bajtov na záznam"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Neplatná då¾ka pásky"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Viac ako jeden poèiatoèný dátum"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Chybná skupina"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Zadáné chybné práva"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 #, fuzzy
 msgid "Invalid number"
 msgstr "Neplatné èíslo i-uzlu"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Neplatný vlastník"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Chybná veµkos» záznamu"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Veµkos» záznamu musí by» násobok %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 #, fuzzy
 msgid "Invalid number of elements"
 msgstr "Neplatná då¾ka pásky"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr ""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Prepínaè `-[0-7][lmh]' nie je podporovaný týmto tarom"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Prepínaè `%c' vy¾aduje argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 #, fuzzy
 msgid "Multiple archive files require `-M' option"
 msgstr "Viac archivaèných súborov vy¾aduje prepínaè `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental a --newer nie je mo¾né kombinova»"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, fuzzy, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Meno zväzku je príli¹ dlhé (limit je %lu bajtov)"
 msgstr[1] "%s: Meno zväzku je príli¹ dlhé (limit je %lu bajtov)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Víczväzkový archív nie je mo¾né otvori»"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Komprimovaný archív nie je mo¾né otvori»"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Viaczväzkový komprimovaný archív nie je mo¾né vytvori»"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 #, fuzzy
 msgid "Cannot concatenate compressed archives"
 msgstr "Komprimovaný archív nie je mo¾né aktualizova»"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Vytvorenie prázdneho archívu odmietnuté."
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Prepínaèe `-Aru' a `--delete' sú nezlúèiteµné s prepínaèom `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Musíte zada» jeden z prepínaèov `-Acdtrux'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2322,84 +2336,84 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Súbor skrátený o bajtov: %s"
 msgstr[1] "%s: Súbor skrátený o bajtov: %s"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Èas súboru mimo rozsah"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Hodnota base-64 typu %s je mimo %s rozsah"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Hodnota %s typu %s je mimo rozsah %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2440,247 +2454,258 @@ msgstr "Zapisujem testovac
 msgid "Read checkpoint %u"
 msgstr "Èítanie testovacieho bodu %d"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Generujem datové súbory pre testovanie GNU taru.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Odporujúce si kompresné prepínaèe"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "Chyba pri zápise na ¹tandardný výstup"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr ""
 "\n"
 "Pou¾itie: %s [PREPÍNAÈ]...\n"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Neplatný èas súboru"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Èíslo i-uzlu mimo rozsah"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Neznáma systémová chyba"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Nedá sa zatvori»"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " neznámy typ súboru %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "%s: Nedá sa zmeni» pozícia v súbore na %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "%s: Nedá sa zmeni» pozícia v súbore na %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "Potomok bol ukonèený signálom %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Rozdelené meno súboru--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Pracovný adresár nie je mo¾né uchova»"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s: nie je mo¾né premenova» na %s"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: neznámy prepínaè -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Èítanie z %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "\n"
@@ -2691,12 +2716,6 @@ msgstr "--Rozdelen
 #~ "pripomienky k pkekladu zasielajte na adresu <sk-i18n@lists.linux.sk> "
 #~ "(slovensky).\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Èítanie z %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Z chyby sa nie je mo¾né zotavi»: ukonèuje sa"
-
 #, fuzzy
 #~ msgid "filter the archive through compress"
 #~ msgstr "%s: súbor je archiv; nearchivovaný"
@@ -2739,6 +2758,9 @@ msgstr "--Rozdelen
 #~ msgid "Premature end of file"
 #~ msgstr "Predèasný koniec súboru"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Z chyby sa nie je mo¾né zotavi»: ukonèuje sa"
+
 #~ msgid "block size"
 #~ msgstr "veµkos» bloku"
 
@@ -3164,8 +3186,8 @@ msgstr "--Rozdelen
 #~ "príli¹\n"
 #~ "nepoèítajte.\n"
 #~ "  ARCHÍV mô¾e by» SÚBOR, HOSTITEL:SÚBOR alebo U®IVATEL@HOSTITEL:SÚBOR,\n"
-#~ "SÚBOR mô¾e by» súbor alebo zariadenie. Implicitné prepínaèe sú `-f %s -b %"
-#~ "d'.\n"
+#~ "SÚBOR mô¾e by» súbor alebo zariadenie. Implicitné prepínaèe sú `-f %s -b "
+#~ "%d'.\n"
 
 #~ msgid "Obsolete option, now implied by --blocking-factor"
 #~ msgstr "Zastaralý prepínaè, je teraz zahrnutý v prepínaèi --blocking-factor"
index ca7f52f88cdb10593104c805e2041a96410c9031..60f3555a10bf3d6af1f8e496708f388cfcd88ef4 100644 (file)
Binary files a/po/sl.gmo and b/po/sl.gmo differ
index d6f5a479bcd2c9f719c18a31d7128953afa1fe45..e2aff0ae4d355b763bfdf50611a06e2b1adf09cf 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -4,14 +4,16 @@
 # Primož Peterlin <primozz.peterlin@gmail.com>, 1996, 1999, 2000, 2001, 2005, 2006, 2007, 2009.
 #
 # $Id: tar-1.22.sl.po 1.2 2009/05/09 09:09:31 Primoz Exp $
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.22\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2009-05-09 11:09+0200\n"
 "Last-Translator: Primož Peterlin <primozz.peterlin@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
+"Language: sl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -88,7 +90,7 @@ msgstr "Poskusite »%s --help« ali »%s --usage« za izčrpnejša navodila.\n"
 msgid "Report bugs to %s.\n"
 msgstr "Poročila o napakah javite na %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Neznana sistemska napaka"
 
@@ -100,8 +102,8 @@ msgstr "poda ta seznam pomoči"
 msgid "give a short usage message"
 msgstr "poda kratka navodila za uporabo"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "IME"
 
@@ -139,56 +141,61 @@ msgstr "(PROGRAMSKA NAPAKA) Izbira bi morala biti prepoznana?!"
 msgid "write error"
 msgstr "napaka pri pisanju"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: izbira »%s« ni enoznačna\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: izbira »--%s« ne dovoljuje argumenta\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: izbira »%c%s« ne dovoljuje argumenta\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: izbira »%s« zahteva argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: neprepoznana izbira »--%s«\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: neprepoznana izbira »%c%s«\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: neveljavna izbira -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: izbira zahteva argument -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: izbira »-W %s« je dvoumna\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: izbira »-W %s« ne dovoljuje argumenta\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: izbira »%s« zahteva argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "zmanjkalo pomnilnika"
@@ -544,144 +551,144 @@ msgstr "Pozicija %s v datoteki %s ni dostopna"
 msgid "Cannot execute remote shell"
 msgstr "Ni mogoče pognati nelokalne ukazne lupine"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Smer pri seek izven obsega"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Podana zaščita ni veljavna"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Neveljavna oznaka časa"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Odmik pri seek izven obsega"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Neveljavna dolžina traku"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Odmik pri seek izven obsega"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Predčasen znak za konec datoteke\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Glavni načini delovanja:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Nepričakovan znak za konec datoteke med predelanimi imeni"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "N"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "DATOTEKA"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "Ni mogoče odpreti %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Neveljaven ukaz"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "To ne deluje kot arhiv ,tar'"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Skupno zapisanih bajtov"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Skupno prebranih bajtov"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Skupno izbrisanih bajtov: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(cev)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Neveljavna vrednost za dolžino zapisa (record_size)"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Ime arhiva ni podano"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Arhivov na stdin/stdout ni mogoče preveriti"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Arhiv je stisnjen. Uporabite izbiro %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Stisnjenega arhiva ni mogoče ažurirati"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Na začetku traku, končujem"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Preveč napak, končujem"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
@@ -690,7 +697,7 @@ msgstr[1] "Dolžina zapisa = %lu blok"
 msgstr[2] "Dolžina zapisa = %lu bloka"
 msgstr[3] "Dolžina zapisa = %lu bloki"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
@@ -699,37 +706,37 @@ msgstr[1] "Neporavnan blok (%lu bajt) v arhivu"
 msgstr[2] "Neporavnan blok (%lu bajta) v arhivu"
 msgstr[3] "Neporavnan blok (%lu bajti) v arhivu"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Nazaj po arhivu ne gre, morda ni berljiv brez izbire -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek se ni ustavil na meji zapisa"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: vsebuje neveljavno številko dela"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Prekoračitev številke dela"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Pripravite del #%d za %s in pritisnite Return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Znak EOF na mestu, kjer se pričakuje odgovor uporabnika"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "POZOR: Arhiv nepopoln"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -740,65 +747,65 @@ msgstr ""
 " q             Končamo tar\n"
 " y, newline    Nadaljujemo z delovanjem\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Poženemo ukazno podlupino\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             Ta seznam uzazov\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Novega dela ni, konec.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Ime datoteke ni določeno. Poskusite znova.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Neveljaven vnos. Vtipkajte ? za pomoč.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "ukaz %s neuspešen"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s se morda nadaljuje v tem delu: zaglavje vsebuje porezano ime"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s se ne nadaljuje v tem delu"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s je napačne velikosti (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Ta del ne sodi v zaporedje (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arhiv ni označen skladno z %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Del %s ne ustreza %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -806,7 +813,7 @@ msgstr ""
 "%s: ime datoteke je predolgo za zapis v zaglavje GNU večdelnega arhiva; "
 "porezano"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "pisanje se ni končalo s koncem bloka"
 
@@ -819,20 +826,20 @@ msgstr[1] "Prebrati je bilo moč samo %lu od %lu bajta"
 msgstr[2] "Prebrati je bilo moč samo %lu od %lu bajtov"
 msgstr[3] "Prebrati je bilo moč samo %lu od %lu bajtov"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Vsebina se razlikuje"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Nepričakovan znak za konec datoteke v arhivu"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Zvrst datoteke se razlikuje"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Način se razlikuje"
 
@@ -848,42 +855,42 @@ msgstr "Številka skupine (GID) se razlikuje"
 msgid "Mod time differs"
 msgstr "Čas zadnje spremembe se razlikuje"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Velikost se razlikuje"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Ni povezana z %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Simbolna povezava se razlikuje"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Številka enote se razlikuje"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Preverjanje "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Neznana vrsta datoteke »%c«, diff kot na navadni datoteki"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Arhiv vsebuje imena datotek z odstranjenimi vodilnimi predponami."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Verifikacija morda ne bo uspela locirati izvornih datotek."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
@@ -892,46 +899,46 @@ msgstr[1] "NAPAKA PRI PREVERJANJU: najdena %d neveljavna glava"
 msgstr[2] "NAPAKA PRI PREVERJANJU: najdeni %d neveljavni glavi"
 msgstr[3] "NAPAKA PRI PREVERJANJU: najdene %d neveljavne glave"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Osamljeni ničelni blok pri %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: vsebuje značko medpomnilniškega imenika %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "vrednost %s od %s obseg %s..%s; zamenjano %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "vrednost %s od %s obseg %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Ustvarjanje negativnih osmiških glav"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: ime datoteke je predolgo (največ %d); brez iznosa"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: ime datoteke je predolgo (ni mogoče deliti); brez iznosa"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: ime povezave je predolgo; brez iznosa"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -940,56 +947,56 @@ msgstr[1] "%s: Datoteka skrčena za %s bajt; dopolnjeno z ničlami"
 msgstr[2] "%s: Datoteka skrčena za %s bajta; dopolnjeno z ničlami"
 msgstr[3] "%s: Datoteka skrčena za %s bajte; dopolnjeno z ničlami"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: datoteka je na drugem datotečnem sistemu; brez iznosa"
 
 # POZOR Imamo za to kak izraz?
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "vsebina ni iznešena"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Neznan tip datoteke; datoteka ignorirana"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "Manjkajo povezave na %s.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: datoteka je nespremenjena; brez iznosa"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: datoteka je arhiv; brez iznosa"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "imenik ni iznašen"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: Datoteka je bila spremenjena med branjem"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: vtičnica ignorirana"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: vrata ignorirana"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Preskok na naslednjo glavo"
 
@@ -997,77 +1004,77 @@ msgstr "Preskok na naslednjo glavo"
 msgid "Deleting non-header from archive"
 msgstr "Brisanje ne-glave iz arhiva"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: neverjetno stara časovna oznaka %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: oznaka časa %s je %s s v prihodnosti"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Nepričakovana neskladnost pri ustvarjanju imenika"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Imenik preimenovan, preden je bilo moč izvleči njegov status"
 
 # POZOR! "contiguous files" so datoteke, ki so zapisane na disku
 # na zaporednih sektorjih (na tistih OS, ki jih podpirajo).
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Neprekinjene datoteke izvlečemo kot navadne"
 
 # POZOR! Grdo!
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Simbolne povezave poskusimo dearhivirati kot trde"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Dearhivacija ni mogoča - datoteka se nadaljuje iz prejšnjega dela"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Nepričakovano zaglavje z dolgim imenom"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Neznana vrsta datoteke »%c«, dearhiviramo kot navadno datoteko"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Obstoječa »%s« je novejša ali enako stara"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Varnostne kopije te datoteke ni moč napraviti"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Preimenovanje %s v %s ni mogoče"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Imenik je bil preimenovan z %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Imenik je bil preimenovan"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Imenik je nov"
@@ -1179,175 +1186,177 @@ msgstr "%s: Brišemo %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Odstranitev ni mogoča"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Izpuščeno"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** Blok znakov NUL **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Konec datoteke **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Na mestu v glavi, kjer pričakujemo številčno vrednost %s, so presledki"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 "Osmiška vrednost arhiva %.*s izven obsega %s; privzemamo dvojiški komplement"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Osmiška vrednost arhiva %.*s izven obsega %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arhiv vsebuje zastarele glave oblike base-64"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Podpis %s oblike base-64 v arhivu je izven obsega %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Vrednost base-256 v arhivu izven obsega %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arhiv vsebuje %.*s na mestu, kjer pričakujemo številčno vrednost %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Vrednost arhiva %s je izven obsega %s: %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " povezava na %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " neznan tip datoteke %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Dolga povezava--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Dolgo ime--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Glava dela--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Nadaljevanje pri bajtu %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Ustvarjamo imenik:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Delovnega imenika ni mogoče spremeniti"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Preimenujemo %s v %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Preimenovanje v %s ni mogoče"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Preimenujemo %s nazaj v %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Delovnega imenika ni mogoče shraniti"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Delovnega imenika ni mogoče spremeniti"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Datoteka je bila odstranjena, preden smo jo prebrali"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Datoteka je bila odstranjena, preden smo jo prebrali"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "proces naslednik"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "medprocesni kanal"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "vzorci se ujemajo z začetkom imena datoteke"
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Ni najdeno v arhivu"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Zahtevane pojavitve ni moč najti v arhivu"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arhiv ni označen skladno z %s"
+
+#: src/names.c:953
 #, fuzzy
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr "Izbiri --preserve-order in --listed-incremential sta nezdružljivi"
 
-#: src/names.c:900
+#: src/names.c:959
 #, fuzzy
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Izbiri --preserve-order in --listed-incremential sta nezdružljivi"
@@ -1373,7 +1382,7 @@ msgid ""
 msgstr ""
 "Neznan slog narekovajev »%s«. Poskusite »%s --quoting-style=help« za seznam."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1383,8 +1392,8 @@ msgid ""
 "  tar -tvf archive.tar         # List all files in archive.tar verbosely.\n"
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
-"GNU »tar« shranjuje več datotek skupaj na trak ali v arhiv na disku ter lahko "
-"povrne posamezne datoteke iz arhiva.\n"
+"GNU »tar« shranjuje več datotek skupaj na trak ali v arhiv na disku ter "
+"lahko povrne posamezne datoteke iz arhiva.\n"
 "\n"
 "Zgledi:\n"
 "  tar -cf arhiv.tar prva druga  # Ustvarimo arhiv.tar z datotekama prva in "
@@ -1394,7 +1403,7 @@ msgstr ""
 "  tar -xf arhiv.tar             # Izvlečemo vse datoteke iz arhiva arhiv."
 "tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1417,79 +1426,79 @@ msgstr ""
 "                  sicer enostavne\n"
 "  never, simple   vedno enostavne varnostne kopije\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Glavni načini delovanja:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "izpis vsebine arhiva"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "izvlečenje datoteke iz arhiva"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "ustvarjanje novega arhiva"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "iskanje razlik med arhivom in datotečnim sistemom"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "dodajanje datotek na konec arhiva"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "dodajanje novih datotek, če so novejše od že arhiviranih"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "zlivanje arhivov"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "brisanje datotek iz arhiva (ne deluje na traku!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Določila delovanja:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "ekonomično ravnanje z razpršenimi datotekami"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "stari zapis GNU za inkrementalne arhive"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "novi zapis GNU za inkrementalne arhive"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "nadaljuj z branjem, tudi če datoteke ni moč prebrati"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1501,123 +1510,123 @@ msgstr ""
 "list, pri čemer je seznam datotek podan bodisi v ukazni vrstici, bodisi z "
 "izbiro -T. Privzeta vrednost N je 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "po arhivu je mogoče iskati"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "po arhivu je mogoče iskati"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "pri izdelavi inkrementalnega arhiva ne preverjaj številke naprav"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "pri izdelavi inkrementalnega arhiva preverjaj številke naprav (privzeto)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Nadzor nad pisanjem prek:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "s poskusom preverjanja zapisanega arhiva"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "pobriši datoteke, potem ko so arhivirane"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "pri izvlačenju ne piši prek obstoječih datotek"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "ne piši prek obstoječih datotek, novejših od arhiviranih"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "pri izvlačenju piši prek obstoječih datotek"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 "s poprejšnjim brisanjem obstoječih datotek pri izvlačenju istoimenskih novih"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "izprazni hierarhije pred izvlačenjem imenikov"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "ohrani metainformacije o obstoječih imenikih"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "pri izvlačenju piši prek metapodatkov obstoječih imenikov (privzeto)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Izbira izhodnega toka:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "datoteke izvleci na standardni izhod"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "UKAZ"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "datoteke napelji na vhod drugega programa"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "prezri izhodne kode hčerinskih procesov"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "obravnavaj neničelne izhodne kode hčerinskih procesov kot napako"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Ravnanje z atributi datotek:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "pri dodajanju datotek spremenimo lastnika v IME"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "pri dodajanju datotek spremenimo skupino v IME"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATUM-ČAS"
 
-#: src/tar.c:493
+#: src/tar.c:494
 #, fuzzy
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "shrani le datoteke, novejše od DATUM-ČAS"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "SPREMEMBE"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "zahtevaj (simbolne) SPREMEMBE zaščite za dodane datoteke"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METODA"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1627,33 +1636,33 @@ msgstr ""
 "branju (METODA=replace, privzeto) ali tako, da se časa sploh ne nastavi "
 "(METODA=system)"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "brez izvlačenja časa spremembe"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "z ohranitvijo lastništva, če je mogoče"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "pri izvlačenju prepišemo lastništvo nase"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "s številčnimi vrednostmi UID/GID namesto imen"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "izvleci podatke o dovoljenjih za dostop do datotek (privzeto za "
 "administratorja)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1661,15 +1670,15 @@ msgstr ""
 "uporabi uporabnikovo masko umask pri izvlačenju dovoljenj za dostop do "
 "datotek (privzeto za uporabnike)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "imena razvrstimo tako, da se ujemajo z arhivom"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "isto kot -p in -s skupaj"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1677,140 +1686,140 @@ msgstr ""
 "počakaj do končanega izvlačenja, preden nastavimo čase sprememb in "
 "dovoljenja za dostop za izvlečene imenike"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "prekliči učinek izbire --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Izbira enote in preklapljanje:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARHIV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "uporabi datoteko ali enoto ARHIV"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "arhiv je lokalen kljub dvopičju v imenu datoteke"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "uporabi navedeni UKAZ rmt namesto rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "uporabi nelokalen UKAZ namesto rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "določi enoto in gostoto zapisa"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "ustvari/pregledaj/izvleci arhiva v več delih"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "menjava traku po ŠT x 1024 zapisanih bajtih"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "poženi SKRIPT po koncu traku (privzema -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "uporabimo/ažuriramo število dela v DATOTEKI"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Bločna razdelitev enote:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOKI"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "dolžina zapisa BLOKI × 512 bajtov"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "ŠTEVILO bajtov v zapisu (večkratnik 512)"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "ne meni se za bloke ničel (EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "razdeli na bloke ob branju (cevovodi 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Izbira oblike arhiva:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "OBLIKA"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "ustvari arhiv v navedeni obliki"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "OBLIKA je nekaj od naštetega:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "oblika starega V7 tar"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "stara oblika GNU tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "oblika GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "oblika POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "oblika POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "isto kot pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "isto kot --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "isto kot --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 #, fuzzy
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "ključna-beseda[[:]=vrednost][,ključna-beseda[[:]=vrednost],...]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "krmilne ključne besede pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "VZOREC"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1818,171 +1827,172 @@ msgstr ""
 "ustvari arhiv z imenom dela IME; pri izpisu seznama/izvlečku je lahko IME "
 "regularni izraz za ime dela"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Nasprotujoče si izbire glede stiskanja arhiva"
 
-#: src/tar.c:615
+#: src/tar.c:616
 #, fuzzy
 msgid "use archive suffix to determine the compression program"
 msgstr "Pisanje na vhod programa za stiskanje ne gre"
 
-#: src/tar.c:617
+#: src/tar.c:618
 #, fuzzy
 msgid "do not use archive suffix to determine the compression program"
 msgstr "Pisanje na vhod programa za stiskanje ne gre"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROGRAM"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "filtriraj skozi PROGRAM (sprejemati mora izbiro -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Izbira lokalne datoteke:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
-msgstr "dodaj navedeno DATOTEKO v arhiv (za imena datotek, ki se začnejo z »-«)"
+msgstr ""
+"dodaj navedeno DATOTEKO v arhiv (za imena datotek, ki se začnejo z »-«)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "IMENIK"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "pomik v navedeni IMENIK"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "preberi seznam datotek z navedene DATOTEKE"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T prebere z \\000 terminirana imena; onemogoči -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "prekliči učinek prejšnje izbire --null"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "odstrani narekovaje iz imen datotek, prebranih s -T (privzeto)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "ne odstrani narekovajev iz imen datotek, prebranih s -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "VZOREC"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "brez datotek, ki jih opisuje VZOREC"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "brez datotek, ustrezajočim vzorcem, prebranih z DATOTEKE"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 "brez vsebine imenikov, ki vsebujejo značko CACHEDIR.TAG, razen značke same"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 "brez imenikov, ki vsebujejo značko CACHEDIR.TAG, in vseh njihovih podimenikov"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "brez imenikov, ki vsebujejo značko CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "brez vsebine imenikov, ki vsebujejo DATOTEKO, razen DATOTEKE same"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "brez imenikov, ki vsebujejo DATOTEKO, in vseh njihovih podimenikov"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "brez imenikov, ki vsebujejo DATOTEKO"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "brez imenikov sistema za nadzor različic"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "podimenikov ne vključujemo avtomatično"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "pri arhiviranju izpusti datoteke na nelokalnih datotečnih sistemih"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "rekurzivno vključi vse podimenike"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "ne odstrani vodilnih »/« iz imen datotek"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "sledi simbolnim povezavam; arhiviraj/iznesi ciljne datoteke"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "sledi trdim povezavam; arhiviraj/iznesi ciljne datoteke"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "IME"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "začenši z navedenim IMENOM v arhivu"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "shrani le datoteke, novejše od DATUM-ČAS"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATUM"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "primerjaj datum in uro le, kadar se podatki spremenijo"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "TIP"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 "varnostna kopija pred brisanjem, z možnostjo izbire TIPA varnostne kopije"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "NIZ"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1990,98 +2000,98 @@ msgstr ""
 "varnostna kopija pred brisanjem; prekličemo običajno PRIPONO (»~«, razen če "
 "lupinska spremenljivka SIMPLE_BACKUP_SUFFIX določa drugače)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Pretvorbe imen datotek:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 #, fuzzy
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "izpusti ŠTEVILO vodilnih komponent iz imen datotek"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "IZRAZ"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "brez razlike med malimi in velikimi črkami"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "vzorci se ujemajo z začetkom imena datoteke"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 "vzorci se ujemajo od kateregakoli znaka »/« dalje (privzeto pri izključitvi)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "pri ujemanje se razlikuje med malimi in velikimi črkami (privzeto)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "uporabi nadomestne znake (privzeto za izključitvi)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "dobesedno ujemanje nizov"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "nadomestni znaki se ne ujemajo z »/«"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "nadomestni znaki se ujemajo z »/« (privzeto pri izključitvi)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informativni izpisi:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "z izčrpnim izpisom obdelanih datotek"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "Nadzor nad pisanjem prek:"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "izpiši poročilo o napredku pri vsakem N-tem zapisu (privzeto 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "DEJANJE"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "na vsaki kontrolni točki izvedi DEJANJE"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "izpiši sporočilo, če niso zapisane vse povezave"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2089,27 +2099,32 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "z izpisom časov sprememb datotek v UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "zapiši izčrpno poročilo v DATOTEKO"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "z izpisom zaporednega bloka v arhivu ob vsakem sporočilu"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "vprašaj za potrditev pri vsakem koraku"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "prikaži privzete nastavitve"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2117,31 +2132,31 @@ msgstr ""
 "pri izpisu seznama ali izvlačenju izpiši vsak imenik, ki ne ustreza iskalnim "
 "pogojem"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "prikaži imena datotek ali arhivov po pretvorbi"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "SLOG"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "nastavi slog navajanja imen; glej spodaj za veljavne SLOGE"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Združljivostne izbire:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2149,64 +2164,64 @@ msgstr ""
 "ob ustvarjanju arhiva isto kot --old-archive; ob izvlačenju isto kot --no-"
 "same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Druge izbire:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "onemogoči rabo nekaterih potencialno škodljivih izbir"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Naenkrat je dovoljena največ ena od izbir »-Acdtrux«"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Nasprotujoče si izbire glede stiskanja arhiva"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, fuzzy, c-format
 msgid "Unknown signal name: %s"
 msgstr "Neznano ime signala: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Datoteke z vzorcem datuma ni najti"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Nadomeščamo %s za neznan format datuma %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: seznam datotek je že prebran"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: prebrano ime datoteke vsebuje znak \\0"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "filtriraj arhiv skozi gzip"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Veljavni argumenti pri izbirah --quoting-style so:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2214,121 +2229,121 @@ msgstr ""
 "\n"
 "Privzete vrednosti *tega* programa tar:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Neveljaven faktor blokiranja"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Neveljavna dolžina traku"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "Okvarjen inkrementalni zapis datoteke"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Več kot en pražni podatek"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: Neveljavna skupina"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Podana zaščita ni veljavna"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Neveljavno število"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Neveljaven lastnik"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Neveljavna dolžina zapisa"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Dolžina zapisa mora biti večkratnik %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Neveljavno število elementov"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Dovoljena je le ena izbira --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Okvarjen argument gostote: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Neznana gostota: »%c«"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "*Ta* izvedba tar ne podpira izbir »-[0-7][lmh]«"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[DATOTEKA]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Stara izbira »%c« zahteva argument."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence nima pomena brez seznama datotek"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence ni mogoče uporabiti v zahtevanem načinu delovanja"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Več arhivskih datotek zahteva izbiro »-M«"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Izbire --listed-incremental ni mogoče kombinirati z --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "Izbiri --preserve-order in --listed-incremential sta nezdružljivi"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2337,48 +2352,48 @@ msgstr[1] "%s: Oznaka dela je predolga (omejitev je %lu bajt)"
 msgstr[2] "%s: Oznaka dela je predolga (omejitev je %lu bajta)"
 msgstr[3] "%s: Oznaka dela je predolga (omejitev je %lu bajti)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Arhivov v več delih ni mogoče preveriti"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Stisnjenega arhiva ni mogoče preveriti"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Stisnjeni arhivi v več delih niso mogoči"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Stisnjenega arhiva ni mogoče združevati"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "izbira --pax-option je mogoča le na arhivih POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Dolžina dela ne more biti manjša od velikosti zapisa"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "Izbiri --preserve-order in --listed-incremential sta nezdružljivi"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Zahteva po odprtju praznega arhiva bojazljivo zavrnjena"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Izbire »-Aru« so nezdružljive z »-f -«"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Ena od izbir »-Acdtrux« je obvezna"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2392,88 +2407,88 @@ msgstr[1] "%s: Datoteka skrčena za %s bajt"
 msgstr[2] "%s: Datoteka skrčena za %s bajta"
 msgstr[3] "%s: Datoteka skrčena za %s bajte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, fuzzy, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Ključna beseda %s je bodisi neznana, bodisi še ni izvedena"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Oznaka časa izven obsega"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Vzorca %s ni mogoče uporabiti"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Ključne besede %s ni mogoče preklicati"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 #, fuzzy
 msgid "Malformed extended header: missing length"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 #, fuzzy
 msgid "Extended header length is out of allowed range"
 msgstr "Podpis %s oblike base-64 v arhivu je izven obsega %s"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, fuzzy, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Podpis %s oblike base-64 v arhivu je izven obsega %s"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 #, fuzzy
 msgid "Malformed extended header: missing blank after length"
 msgstr "Poškodovana razširjena glava: za dolžino manjka presledek"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 #, fuzzy
 msgid "Malformed extended header: missing newline"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, fuzzy, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Vrednost arhiva %s je izven obsega %s: %s.%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, fuzzy, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, fuzzy, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Poškodovana razširjena glava: manjka enačaj"
@@ -2516,252 +2531,263 @@ msgstr "Oznaka pisanja %u"
 msgid "Read checkpoint %u"
 msgstr "Oznaka branja %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 #, fuzzy
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr "Ustvarimo podatkovne datoteke za testno zbirko GNU tar.\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 #, fuzzy
 msgid "File creation options:"
 msgstr "Druge izbire:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 #, fuzzy
 msgid "Create file of the given SIZE"
 msgstr "ustvari arhiv v navedeni obliki."
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 #, fuzzy
 msgid "Write to file NAME, instead of standard output"
 msgstr "datoteke izvleci na standardni izhod"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 #, fuzzy
 msgid "Read file names from FILE"
 msgstr "Prebranih %s bajtov iz %s"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 #, fuzzy
 msgid "-T reads null-terminated names"
 msgstr "-T prebere z \\000 terminirana imena; onemogoči -C"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 #, fuzzy
 msgid "Seek to the given offset before writing data"
 msgstr "s poskusom preverjanja zapisanega arhiva"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [IZBIRA...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 #, fuzzy
 msgid "Update the access and modification times of FILE"
 msgstr "%s: Časa zadnje spremembe in dostopa ni možno spremeniti"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 #, fuzzy
 msgid "Execute COMMAND"
 msgstr "UKAZ"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, fuzzy, c-format
 msgid "Invalid size: %s"
 msgstr "Neveljavna oznaka časa"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, fuzzy, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Številka inoda izven obsega"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, fuzzy, c-format
 msgid "Negative size: %s"
 msgstr "Neveljavna oznaka časa"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, fuzzy, c-format
 msgid "Unknown date format"
 msgstr "Neznana sistemska napaka"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, fuzzy, c-format
 msgid "cannot open `%s'"
 msgstr "Ni mogoče odpreti %s"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 #, fuzzy
 msgid "cannot seek"
 msgstr "Ni mogoče zapreti"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, fuzzy, c-format
 msgid "Unknown field `%s'"
 msgstr " neznan tip datoteke %s\n"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, fuzzy, c-format
 msgid "cannot set time on `%s'"
 msgstr "Ni mogoče do statistike za datoteko %s"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "Ni mogoče odpreti %s"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, fuzzy, c-format
 msgid "Command failed with status %d\n"
 msgstr "Naslednik umrl s signalom %d"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
 #  POZOR  Je to res to?
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, fuzzy, c-format
 msgid "--stat requires file names"
 msgstr "--Predelana imena datotek--\n"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Delovnega imenika ni mogoče shraniti"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "Preimenovanje %s v %s ni mogoče"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: nedovoljena izbira -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "Branje %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2771,12 +2797,6 @@ msgstr "--Predelana imena datotek--\n"
 #~ "Napake v prevodu sporočite na <translation-team-sl@lists.sourceforge."
 #~ "net>\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "Branje %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Napake ni moč popraviti: zapuščamo"
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "filtriraj arhiv skozi bzip2"
 
@@ -2828,6 +2848,9 @@ msgstr "--Predelana imena datotek--\n"
 #~ msgid "Premature end of file"
 #~ msgstr "Predčasen znak za konec datoteke"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Napake ni moč popraviti: zapuščamo"
+
 #~ msgid "[.]NUMBER"
 #~ msgstr "[.]N"
 
index 4da97eac4530ba6faeb714606f0caf7c3dc50e10..a4dec4ad58d244947c27d5c0d8aece4821b75c83 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index d41e5863600f3adc151696a695040ac0209530ad..b9f5df62aa47d3e7b1e570530f999ec19b3e8d77 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,17 +1,19 @@
 # Swedish messages for tar
-# Copyright © 1996, 2001, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Copyright © 1996, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the tar package.
 # Jan Djärv <jan.h.d@swipnet.se>, 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010
-# Revision: 1.98
+# Revision: 1.102
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-18 12:48+0100\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-15 17:04+0200\n"
 "Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -90,7 +92,7 @@ msgstr ""
 "Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv."
 "se>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Okänt systemfel"
 
@@ -102,8 +104,8 @@ msgstr "visa denna hjälptext"
 msgid "give a short usage message"
 msgstr "ge ett kort hjälpmeddelande"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "NAMN"
 
@@ -141,56 +143,61 @@ msgstr "(PROGRAMFEL) Flagga borde ha känts igen!?"
 msgid "write error"
 msgstr "skrivfel"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: flaggan \"%s\" är tvetydig\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: flaggan \"--%s\" tar inget argument\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: flaggan \"%s\" kräver ett argument\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: flaggan \"--%s\" kräver ett argument\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: okänd flagga \"--%s\"\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: okänd flagga \"%c%s\"\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: ogiltig flagga -- \"%c\"\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: flaggan kräver ett argument -- \"%c\"\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: flaggan \"-W %s\" kräver ett argument\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "minnet slut"
@@ -456,7 +463,7 @@ msgstr "%s: Kan inte ändra rättigheter till %s"
 #: lib/paxerror.c:101
 #, c-format
 msgid "%s: Cannot change ownership to uid %lu, gid %lu"
-msgstr "%s: Kan inte byta ägare (chown) till uid %lu, gid %lu"
+msgstr "%s: Kan inte byta ägare till uid %lu, gid %lu"
 
 #: lib/paxerror.c:127
 #, c-format
@@ -468,14 +475,14 @@ msgstr "%s: Kan inte skapa hård länk till %s"
 msgid "%s: Read error at byte %s, while reading %lu byte"
 msgid_plural "%s: Read error at byte %s, while reading %lu bytes"
 msgstr[0] "%s: Läsfel vid byte %s, när %lu byte lästes"
-msgstr[1] "%s: Läsfel vid byte %s, när %lu bytes lästes"
+msgstr[1] "%s: Läsfel vid byte %s, när %lu byte lästes"
 
 #: lib/paxerror.c:192
 #, c-format
 msgid "%s: Warning: Read error at byte %s, while reading %lu byte"
 msgid_plural "%s: Warning: Read error at byte %s, while reading %lu bytes"
 msgstr[0] "%s: Varning: Läsfel vid byte %s, när %lu byte lästes"
-msgstr[1] "%s: Varning: Läsfel vid byte %s, när %lu bytes lästes"
+msgstr[1] "%s: Varning: Läsfel vid byte %s, när %lu byte lästes"
 
 #: lib/paxerror.c:259
 #, c-format
@@ -535,188 +542,188 @@ msgstr "standard ut"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Kan inte ansluta till %s: namnuppslagning misslyckades"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Kan inte exekvera fjärrskal"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Positioneringsriktning har ogiltigt värde"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Ogiltig sökriktning"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Ogiltigt positioneringsvärde"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Positioneringsvärde är utanför giltigt intervall"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Ogiltigt byte-antal"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "Byte-antal är utanför giltigt intervall"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "För tidigt filslut"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Felaktig operationskod"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "Operationsläge stöds inte"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Oväntade argument"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
-msgstr "Styr en bandstation, acceptera kommandon från en fjärrptocess"
+msgstr "Styr en bandstation, acceptera kommandon från en fjärrprocess"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NUMMER"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "sätt felsökningsnivå"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FIL"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "sätt felsökningsfilnamn"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "kan inte öppna \"%s\""
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "för många argument"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Okänt kommando"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Det här ser inte ut som ett tar-arkiv"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Summa skrivna byte"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Summa lästa byte"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Summa borttagna byte: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(rör)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Ogiltigt värde på record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Arkivnamn saknas"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Kan inte verifiera standard in/ut-arkiv"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Arkivet är komprimerat. Använd flaggan %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Komprimerade arkiv kan inte uppdateras"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Vid bandets början, avslutar nu"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "För många fel, avslutar"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Poststorlek = %lu block"
 msgstr[1] "Poststorlek = %lu block"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Block ej vid blockgräns (%lu byte) i arkivet"
 msgstr[1] "Block ej vid blockgräns (%lu byte) i arkivet"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Kunde inte söka bakåt i arkivfilen, den kan vara oläsbar utan -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek stannade inte på en postgräns"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: innehåller ogiltigt volymnummer"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Volymnummer flödade över"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Gör iordning volym nummer %d för %s och tryck vagnretur:"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Filslut vid förväntat användarsvar"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "VARNING: Arkivet är ofullständigt"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -727,66 +734,66 @@ msgstr ""
 " q              Avsluta programmet\n"
 " y eller nyrad  Fortsätt\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !              Starta ett underskal\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?              Skriv denna lista\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Ingen ny volym; avslutar.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Filnamn inte angivet, försök igen.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Ogiltig indata. Skriv ? för hjälp.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "kommandot \"%s\" misslyckades"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s fortsätter möjligen i denna volym: huvudet innehåller ett trunkerat namn"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s fortsätter inte i denna volym"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s har fel storlek (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Denna volym kommer inte i rätt ordning (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arkivet är inte märkt för att stämma med %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Volym %s överensstämmer inte med %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -794,7 +801,7 @@ msgstr ""
 "%s: filnamnet är för långt för att lagras i huvudet för ett GNU "
 "multivolymsarkiv, trunkerat"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "skrivning stannade inte på en blockgräns"
 
@@ -805,20 +812,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Kunde bara läsa %lu av %lu byte"
 msgstr[1] "Kunde bara läsa %lu av %lu byte"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Innehållet är olika"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Oväntat filslut i arkivet"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Filtyper är olika"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Rättigheterna är olika"
 
@@ -834,143 +841,143 @@ msgstr "Gid är olika"
 msgid "Mod time differs"
 msgstr "Modifieringstiderna är olika"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Storlekarna är olika"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Inte länkad till %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Symboliska länkar är olika"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Enhetsnummer är olika"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Verifierar "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Okänd filtyp \"%c\" jämförd som en normal fil"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Arkivet innehåller filnamn med inledande prefix borttaget."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Verifiering kan misslyckas med att hitta originalfiler."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "VERIFIKATIONSFEL: %d felaktigt arkivhuvud upptäckt"
 msgstr[1] "VERIFIKATIONSFEL: %d felaktiga arkivhuvuden upptäckta"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Ett ensamt nollblock vid %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: innehåller en cachekatalog-tagg %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "%s är utanför intervallet för %s: %s..%s, byter till %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "%s är utanför intervallet för %s: %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Genererar negativa oktala värden i arkivhuvudet"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: filnamnet är för långt (max %d); inte arkiverad"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: filnamnet är för långt (kan ej delas); inte arkiverad"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: länknamn är för långt; inte arkiverad"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Fil krympte med %s byte, fyller ut med nolltecken"
 msgstr[1] "%s: Fil krympte med %s byte, fyller ut med nolltecken"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: filen finns på ett annat filsystem; inte arkiverad"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "innehållet inte arkiverat"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Okänd filtyp; filen ignorerad"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
-msgstr "Det fattas länkar till \"%s\"."
+msgstr "Det fattas länkar till %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: filen är oförändrad; inte arkiverad"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: filen är själva arkivet; inte arkiverad"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "katalog inte arkiverad"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
-msgstr "%s: Fil ändrades under tiden vi läste den"
+msgstr "%s: fil ändrades under tiden vi läste den"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socketfil ignorerad"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: door-fil ignorerad"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Hoppar till nästa filhuvud"
 
@@ -978,74 +985,74 @@ msgstr "Hoppar till nästa filhuvud"
 msgid "Deleting non-header from archive"
 msgstr "Tar bort icke-huvuddata från arkivet"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: orimligt gammal tidsstämpel %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: tidsvärde %s är %s sekunder i framtiden"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Oväntad inkonsistens när katalog skapades"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Katalog bytte namn innan dess status kunde extraheras"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Extraherar sammanhängande filer som vanliga filer"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Försöker extrahera symboliska länkar som hårda länkar"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Kan inte extrahera -- filen fortsätter från en annan volym"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Oväntat huvud för långt filnamn"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Okänd filtyp \"%c\", extraherad som en normal fil"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Nuvarade \"%s\" är nyare eller lika gammal"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
-msgstr "%s kunde inte säkerhetskopieras"
+msgstr "%s: Kunde inte säkerhetskopiera denna fil"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Kan inte byta namn på %s till %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Katalogen har bytt namn från %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Katalogen har bytt namn"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Katalogen är ny"
@@ -1156,35 +1163,35 @@ msgstr "%s: Tar bort %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Kan inte ta bort"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Utelämnad"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "block %s: ** Block av nolltecken **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "block %s: ** Filslut **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "block %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Blanka i huvud där numeriskt värde av typ %s förväntades"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1192,141 +1199,142 @@ msgstr ""
 "komplement"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Arkivets oktala värde %.*s är utanför intervallet för %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arkivet innehåller föråldrade \"base-64\"-huvuden"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Arkivets \"base-64\"-sträng \"%s\" är utanför intervallet för %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Arkivets \"base-256\"-värde är utanför intervallet för %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arkivet innehåller %.*s där ett numeriskt värde av typ %s förväntades"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Arkivets värde %s är utanför intervallet för %s: %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " länk till %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " okänd filtyp \"%s\"\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Lång länk--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Långt namn--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Volymhuvud--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Fortsätter vid byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Skapar katalog:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Kan inte byta arbetskatalog"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Byter namn på %s till %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Kan inte byta namn till %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Byter namn på %s tillbaka till %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Kan inte spara arbetskatalog"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Kan inte byta arbetskatalog"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Fil borttagen innan vi läste den"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Katalog borttagen innan vi läste den"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "barnprocess"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "interprocesskanal"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Mönstermatchningstecken används i filnamn."
+msgstr "Mönstermatchningstecken används i filnamn"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
-"Använd --wildcards för att slå på mönstermatchning, eller --no-wildcards för"
+"Använd --wildcards för att slå på mönstermatchning, eller --no-wildcards för "
+"att undertrycka denna varning"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Fanns inte i arkivet"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Nödvändig förekomst hittades inte i arkivet"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Arkivmärkning stämmer inte överrens"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr "Att används -C i en fillista är inte tillåtet med --listed-incremental"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Bara en -C-flagga är tillåtet med --listed-incremental"
 
@@ -1352,7 +1360,7 @@ msgstr ""
 "Okänd citeringsstil \"%s\". Gör \"%s --quoting-style=help för att få en "
 "lista."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1370,7 +1378,7 @@ msgstr ""
 "  tar -tvf arkiv.tar         # Visa filer i arkiv.tar, all information.\n"
 "  tar -xf arkiv.tar          # Extrahera alla filer i arkiv.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1392,80 +1400,80 @@ msgstr ""
 "annars\n"
 "  never, simple   gör alltid enkla säkerhetskopior\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Operationsläge:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "visa innehållet i arkivet"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "extrahera filer från arkivet"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "skapa ett nytt arkiv"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "visa skillnader mellan filsystemet och arkivet"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "lägg till filer på slutet av arkivet"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "lägg till filer som är nyare än de i arkivet"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "lägg till innehållet i en arkivfil till arkivet"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "ta bort från arkivet (inte för arkiv på magnetband!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "verifiera arkivets volymnamn och avsluta."
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Modifiera operationslägen:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "hantera filer med hål mer effektivt"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "ÖVRE[.UNDRE]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 "ange vilken formatversion som ska hantera filer med hål (implicerar --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "hantera gamla GNU-formatet för inkrementell säkerhetskopiering"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "hantera nya GNU-formatet för inkrementell säkerhetskopiering"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "dumpa nivå för \"listed-incremental\" arkiv"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "avsluta inte med felslutstatus p.g.a. oläsbara filer"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1477,121 +1485,121 @@ msgstr ""
 "list och när en lista av filer anges antingen på kommandoraden eller med "
 "flaggan -T. Standardvärde för NUMMER är 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "arkivet är sökbart"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "arkivet är inte sökbart"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "kontrollera inte enhetsnummer när inkrementella arkiv skapas"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "kontrollera enhetsnummer när inkrementella arkiv skapas (standardvärde)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Kontrollera överskrivning:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "försök verifiera arkivet efter det skapats"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "ta bort filer efter de sparats i arkivet"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "ersätt inte befintliga filer vid extrahering"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "ersätt inte befintliga filer som är nyare än de som finns i arkivet"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "skriv över befintliga filer vid extrahering"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "ta bort befintliga filer innan de nya extraheras"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "töm kataloghierarkier före extrahering av katalog"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "bevara befintliga katalogers metadata"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "skriv över metadata för befintliga kataloger vid extrahering (standardvärde)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Välj utdataström:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "extrahera filer till standard ut"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "KOMMANDO"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "extrahera filer till standard in för ett annat program"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "ignorera barnprocessers slutstatus"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "behandla slutstats från barnprocesser skiljt ifrån noll som fel"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Hantering av filattribut:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "sätt NAMN som ägare för adderade filer"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "sätt NAMN som grupp för adderade filer"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATUM-ELLER-FIL"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "sätt modifieringstid på adderade filer från DATUM-ELLER-FIL"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "RÄTTIGHET"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "sätt (symbolisk) RÄTTIGHET för adderade filer"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METOD"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1601,11 +1609,11 @@ msgstr ""
 "tiderna efter läsning (METOD=\"replace\", standardvärde) eller genom att "
 "inte sätta tiderna alls (METOD=\"system\")"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "extrahera inte filers modifieringstid"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1613,21 +1621,21 @@ msgstr ""
 "försök extrahera filer med samma ägare som i arkivet (standardvärde för "
 "superanvändaren)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 "extrahera filer med dig själv som ägare (standardvärde för vanliga användare)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "använd alltid tal för användar- och gruppnamn"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "extrahera information om filrättigheter (standardvärde för superanvändare)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1635,15 +1643,15 @@ msgstr ""
 "applicera användarens umask när rättigheter extraheras från arkivet "
 "(standardvärde för vanliga användare)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "sortera namn som ska extraheras så de passar ihop med arkivet"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "samma som både -p och -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1651,139 +1659,139 @@ msgstr ""
 "fördröj sättandet av modifikationstider och rättigheter på extraherade "
 "kataloger till slutet på arkivextraheringen."
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "ta bort effekten av flaggan --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Enhetsval och enhetsbyte:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARKIV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "använd arkivfil eller enhet ARKIV"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "arkivfilen är lokal även om namnet har kolon"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "använd KOMMANDO istället för rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "använd KOMMANDO istället för rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "ange enhet och densitet"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "skapa/visa/extrahera ett flervolymsarkiv"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "byt band efter det att NUMMER x 1024 byte skrivits"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "kör kommandofil vid slutet av varje band (flaggan -M sätts också)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "använd/uppdatera volymnummer i FIL"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Blockhantering:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOCK"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "BLOCK x 512 byte per post"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "NUMMER byte per post, multipel av 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "ignorera block med enbart nolltecken (betyder filslut)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "omblocka vid läsning (för 4.2BSD-rör)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Val av arkivformat:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "skapa ett arkiv med givet format"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT är ett av följande:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "gammalt V7 format"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU-format enligt tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
-msgstr "GNU-format från tar 1.13.x"
+msgstr "Format från GNU tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) format"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) format"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "samma som pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "samma som --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "samma som --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "nyckelord[[:]=värde][,nyckelord[[:]=värde], ...]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "ange nyckelord för pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "NAMN"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1791,76 +1799,76 @@ msgstr ""
 "skapa ett arkiv med volymnamnet NAMN. Vid visning/extrahering är NAMN ett "
 "skalmönster (\"globbing\")"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Komprimeringsflaggor:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "använd arkivsuffix för att bestämma komprimeringsprogram"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "använd inte arkivsuffix för att bestämma komprimeringsprogram"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "filtrera genom PROG (måste förstå -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Filval:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "lägg till angiven FIL till arkivet (användbart om FIL börjar med \"-\")"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "KATALOG"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "byt katalog till KATALOG"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
-msgstr "hämta namn att extrahera från FIL"
+msgstr "hämta namn att extrahera eller skapa från FIL"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T läser namn åtskilda med nolltecken, -C obrukbar"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "ta bort effekten av föregående --null-flagga"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "avcitera filnamn som lästs med -T (standardvärde)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "avcitera inte filnamn som lästs med -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MÖNSTER"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "utelämna filer som matchar MÖNSTER"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "utelämna filer som matchar mönster i FIL"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1868,91 +1876,91 @@ msgstr ""
 "utelämna innehållet i kataloger som innehåller CACHEDIR.TAG, förutom "
 "CACHEDIR.TAG själv"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "utelämna allt i kataloger som innehåller CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "utelämna kataloger som innehåller CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "utelämna innehållet i kataloger som innehåller FIL, förutom FIL själv"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "utelämna allting i kataloger som innehåller FIL"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "utelämna kataloger som innehåller FIL"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "uteslut kataloger från versionshanteringssystem"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "exkludera säkerhetskopior och låsfiler"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "gå inte automatiskt ned i kataloger"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "byt inte filsystem när arkivet skapas"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "gå rekursivt ned i kataloger (standardvärde)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "tag inte bort inledande \"/\" från namn"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "följ symboliska länkar, arkivera filerna de pekar på"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "följ hårda länkar, arkivera filerna de pekar på"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "NAMN"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "börja med fil NAMN i arkivet"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "arkivera bara filer nyare än DATUM-ELLER-FIL"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATUM"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "jämför datum och tid endast för dataändringar"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "KONTROLL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "gör säkerhetskopior före borttagning, välj typ av versionshantering"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "STRÄNG"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1961,99 +1969,99 @@ msgstr ""
 "säkerhetskopieändelsen (\"~\" om inte ändrad med miljövariabeln "
 "SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Filnamnstransformationer:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 "ta bort NUMMER stycken inledande komponenter från filnamn före extrahering"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "UTTRYCK"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "använd seds ersättnings-UTTRYCK för att transformera filnamn"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Flaggor för filnamnsmatchning (påverkar både uteslutnings- och "
 "inkluderingsmönster):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "matcha gemener och versaler lika"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "mönster måste matcha i början på filnamn"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "mönster matchas efter \"/\" i filnamn (standardvärde vid uteslutning)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "matcha gemener och versaler olika (standardvärde)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "använd jokertecken (standardvärde för uteslutning)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "ordagrann strängjämförelse"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "jokertecken matchar inte \"/\""
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "jokertecken matchar \"/\" (standardvärde för uteslutning)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Informativ utskrift:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "visa namn på alla filer som behandlas"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "NYCKELORD"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "varningskontroll"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 "visa förloppsmeddelande efter varje grupp om NUMMER poster (standardvärde 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ÅTGÄRD"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "utför ÅTGÄRD vid vare kontrollpunkt"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "visa ett meddelande om inte alla länkar arkiverats"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2064,27 +2072,31 @@ msgstr ""
 "totalt antal byte när SIGNAL levereras. Tillåta signaler är: SIGHUP, "
 "SIGQUIT, SIGINT, SIGUSR1 coh SIGUSR2. Namn utan SIG-prefix accepteras också."
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "visa filers modifieringstid i UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "visa full upplösning på filtider"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "skicka informativa meddelanden till FIL"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "visa blocknummer inom arkivet för varje meddelande"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "fråga efter bekräftelse för varje steg"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "visa standardvärden för \"tar\""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2092,31 +2104,31 @@ msgstr ""
 "vid visning eller extrahering, visa varje katalog som inte matchar "
 "sökkriterium"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "visa fil- eller arkivnamn efter transformering"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STIL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "sätt citatstil för namn. Se nedan för giltiga vären på STIL."
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "citera även tecken i STRÄNG"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "citera inte tecken i STRÄNG"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Kompatibilitetsflaggor:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2124,62 +2136,62 @@ msgstr ""
 "vid skapande, samma som --old-archive.  Vid extrahering, samma som --no-same-"
 "owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Andra flaggor:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "begränsa användningen av eventuellt farliga flaggor"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Du kan endast ange en av flaggorna \"-Acdtrux eller \"--test-label\""
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Motstridiga komprimeringsflaggor"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Okänt signalnamn: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Tidsfil hittades inte"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Använder %s istället för okänt datumformat %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Flagga %s: Tolkar tidsangivelse \"%s\" som %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: fillistan redan läst"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: filnamnet som lästes innehåller nolltecken"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "filtrera arkivet genom %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Giltiga argument till flaggan --quoting-style är:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2187,51 +2199,51 @@ msgstr ""
 "\n"
 "*Denna* tar har standardvärdena:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Ogiltig blockfaktor"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Ogiltig bandlängd"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Felaktigt värde fär inkrementell nivå"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Mer än en datumgräns"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Ogiltig version för filer med hål"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
-msgstr "--atime-preserve='system' stöds inte på denna plattform"
+msgstr "--atime-preserve=\"system\" stöds inte på denna plattform"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint-värdet är inte ett heltal"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Ogiltig grupp"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Ogiltiga rättigheter givna för flagga"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Ogiltigt nummer"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Ogiltig ägare"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2239,115 +2251,115 @@ msgstr ""
 "Flaggan --preserve är föråldrad, använd --preserve-permissions --preserve-"
 "order istället"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Ogiltig poststorlek"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Poststorlek måste vara en multipel av %d"
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Ogiltig antal element"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Endast en --to-command flagga tillåten"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Ogiltig densitetsangivelse: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Okänd densitet: \"%c\""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Flaggorna \"-[0-7][lmh]\" stöds inte av *detta* tar-program"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FIL]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Gammal flagga \"%c\" kräver ett argument"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence är meningslöst utan en fillista"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence kan inte användas i det begärda operationsläget."
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Multipla arkivfiler kräver \"-M\" flaggan"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Kan inte kombinera --listed-incremental med --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
-msgstr "-level är meningslös utan --listed-incremental"
+msgstr "--level är meningslös utan --listed-incremental"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Volymnamn är för långt (maxlängd är %lu byte)"
 msgstr[1] "%s: Volymnamn är för långt (maxlängd är %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Flervolymsarkiv kan inte verifieras"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Komprimerade arkiv kan inte verifieras"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Kan inte använda komprimerade flervolymsarkiv"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Komprimerade arkiv kan inte slås samman"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option kan bara användas på POSIX-arkiv"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Volymlängden kan inte vara mindre än poststorleken"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order är inte kompatibel med --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Vägrar fegt att skapa ett tomt arkiv"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Flaggorna \"-Aru\" är inkompatibla med \"-f -\""
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Du måste ange en av flaggorna \"-Acdtrux\" eller --test-label"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Avslutar med felstatus på grund av tidigare fel"
@@ -2359,83 +2371,83 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Filen krympte med %s byte"
 msgstr[1] "%s: Filen krympte med %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Nyckelordet %s är okänt eller inte ännu implementerat"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Tidsstämpel är utanför giltigt intervall"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Mönster %s kan inte användas"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Nyckelord %s kan inte ersättas"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Felaktigt utökat huvud: längd saknas"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Längd på utökat huvud är utanför giltigt intervall"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Längd %.*s på utökat huvud är utanför giltigt intervall"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Felaktigt utökat huvud: blanktecken efter längdangivelse saknas"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Felaktigt utökat huvud: likamedtecken saknas"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Felaktigt utökat huvud: nyrad saknas"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Ignorerar nykelord \"%s\" i utökat huvud"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Genererat nyckel/värde-par är för långt (nyckel=%s, längd=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Utökat huvud %s=%s är utanför intervallet %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Felaktigt utökat huvud: ogiltig %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Felaktigt utökat huvud: för många %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Felaktigt utökat huvud: ogiltigt %s: oväntad avskiljare %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Felaktigt utökat huvud: ogiltigt %s: udda antal värden"
@@ -2476,7 +2488,7 @@ msgstr "Kontrollpunkt för skrivning %u"
 msgid "Read checkpoint %u"
 msgstr "Kontrollpunkt för läsning %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2484,69 +2496,69 @@ msgstr ""
 "genfile bearbetar datafiler i testsviten för GNU paxutils.\n"
 "FLAGGOR är:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Flaggor för filskapande:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "STORLEK"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Skapa ett arkiv med given STORLEK"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Skriv till NAMN istället för till standard ut"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Läs filnamn från FIL"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T läser namn åtskilda med nolltecken"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "Fyll filen med givet MÖNSTER. MÖNSTER är \"default\" eller \"zeros\""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Storlek för ett block för filer med hål"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Generera fil med hål. Resten av kommandoraden ger filmappningen."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "POSITION"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Flytta till given position innan data skrivs"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Flaggor för filstatistik:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Skriv innehållet i \"struct stat\" för varje given fil. Standardvärde på "
 "FORMAT är:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Flaggor för synkron exekvering:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "FLAGGA"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2554,19 +2566,19 @@ msgstr ""
 "Kör ARGUMENT. Användbart med --checkpoint och en av --cut, --append, --"
 "touch, --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "Utför angiven åtgärd (se nedan) när kontrollpunkt NUMMER nås"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Sätt datum för nästa --touch"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Visa exekverade kontrollpunkter och slutstatus på KOMMANDO"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2574,7 +2586,7 @@ msgstr ""
 "Synkront exekverade åtgärder. Dessa exekveras när kontrollpunktnumret givet "
 "av flaggan --checkpoint nås."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2582,145 +2594,142 @@ msgstr ""
 "Trunkera FIL till storleken given av föregående flaggan --length (eller 0 om "
 "den inte är given)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Lägg till STORLEK byte till FIL.  STORLEK är given av föregående flagga --"
 "length."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Uppdatera access- och modifikationstider för FIL"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Exekvera KOMMANDO"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "Ta bort (unlink) FIL"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Ogiltigt storlek: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Nummer utanför giltigt intervall: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Negativ storlek: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "status (stat) kunde ej tas på %s"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "begärd fillängd %lu, verklig %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "skapad fil har inte hål"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Fel vid parsning av tal nära \"%s\""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Okänt datumformat"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGUMENT...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "kan inte öppna \"%s\""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "kan inte flytta (seek)"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "filnamnet innehåller nolltecken"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr "kan inte skapa filer med hål till standard ut, använd flaggan --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "felaktig mask (nära \"%s\")"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Okänt fält \"%s\""
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "kan inte sätta tid på \"%s\""
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "kan inte ta bort \"%s\""
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Kommandot avslutades utan fel\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Kommandot misslyckades med slutstatus %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Kommandot terminerades av signal %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Kommandot stoppades av signal %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Kommandot dumpade minnet\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Kommandot avslutade\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat kräver filnamn"
 
-#~ msgid "Cannot resolve hostname %s"
-#~ msgstr "Kan inte slå upp värdnamn %s"
-
-#~ msgid "suppress this warning."
-#~ msgstr "att undertrycka denna varning."
+#~ msgid "Cannot save working directory"
+#~ msgstr "Kan inte spara arbetskatalog"
index 64ca8194801b13fc7e7f1c66a53173fc32185ed6..7bc6bc083fc62a009a4f84912d18efec4c2eb96d 100644 (file)
@@ -3,15 +3,17 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
+#: src/create.c:1550
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -85,7 +87,7 @@ msgstr ""
 msgid "Report bugs to %s.\n"
 msgstr ""
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr ""
 
@@ -97,8 +99,8 @@ msgstr ""
 msgid "give a short usage message"
 msgstr ""
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr ""
 
@@ -136,56 +138,61 @@ msgstr ""
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr ""
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr ""
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr ""
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr ""
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr ""
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr ""
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr ""
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr ""
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr ""
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr ""
@@ -507,181 +514,181 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr ""
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr ""
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr ""
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr ""
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr ""
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr ""
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr ""
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr ""
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr ""
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr ""
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr ""
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr ""
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr ""
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr ""
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr ""
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr ""
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr ""
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr ""
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr ""
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr ""
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr ""
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr ""
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr ""
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr ""
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr ""
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr ""
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr ""
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr ""
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr ""
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr ""
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr ""
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr ""
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr ""
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -689,71 +696,71 @@ msgid ""
 " y or newline  Continue operation\n"
 msgstr ""
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr ""
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr ""
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr ""
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr ""
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr ""
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr ""
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr ""
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr ""
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr ""
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr ""
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr ""
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr ""
 
@@ -764,20 +771,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr ""
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr ""
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr ""
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr ""
 
@@ -793,143 +800,143 @@ msgstr ""
 msgid "Mod time differs"
 msgstr ""
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr ""
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr ""
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr ""
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr ""
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr ""
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr ""
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr ""
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr ""
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr ""
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr ""
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr ""
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr ""
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr ""
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr ""
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr ""
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr ""
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr ""
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr ""
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr ""
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr ""
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr ""
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr ""
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr ""
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr ""
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr ""
 
@@ -937,74 +944,74 @@ msgstr ""
 msgid "Deleting non-header from archive"
 msgstr ""
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr ""
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr ""
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr ""
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr ""
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr ""
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr ""
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr ""
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr ""
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr ""
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr ""
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr ""
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr ""
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr ""
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr ""
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr ""
@@ -1114,172 +1121,173 @@ msgstr ""
 msgid "%s: Cannot remove"
 msgstr ""
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr ""
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr ""
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr ""
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr ""
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr ""
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr ""
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr ""
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr ""
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr ""
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr ""
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr ""
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr ""
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr ""
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr ""
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr ""
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr ""
 
-#: src/misc.c:502
+#: src/misc.c:298
+msgid "Cannot get working directory"
+msgstr ""
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr ""
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr ""
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr ""
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr ""
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr ""
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr ""
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr ""
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr ""
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr ""
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr ""
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr ""
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr ""
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr ""
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr ""
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1303,7 +1311,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1314,7 +1322,7 @@ msgid ""
 "  tar -xf archive.tar          # Extract all files from archive.tar.\n"
 msgstr ""
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1326,79 +1334,79 @@ msgid ""
 "  never, simple   always make simple backups\n"
 msgstr ""
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr ""
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr ""
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr ""
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr ""
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr ""
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr ""
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr ""
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr ""
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr ""
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr ""
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr ""
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr ""
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr ""
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr ""
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr ""
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr ""
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1406,558 +1414,558 @@ msgid ""
 "command line or via the -T option; NUMBER defaults to 1"
 msgstr ""
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr ""
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr ""
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr ""
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr ""
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr ""
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr ""
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr ""
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr ""
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr ""
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr ""
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr ""
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr ""
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr ""
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr ""
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr ""
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr ""
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr ""
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr ""
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr ""
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr ""
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr ""
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr ""
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr ""
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
 "place (METHOD='system')"
 msgstr ""
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr ""
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr ""
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr ""
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr ""
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr ""
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr ""
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr ""
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr ""
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr ""
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr ""
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr ""
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr ""
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr ""
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr ""
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr ""
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr ""
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr ""
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr ""
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr ""
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr ""
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr ""
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr ""
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr ""
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr ""
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr ""
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr ""
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr ""
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr ""
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr ""
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr ""
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr ""
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr ""
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr ""
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr ""
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr ""
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr ""
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr ""
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr ""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr ""
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr ""
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr ""
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr ""
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr ""
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr ""
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr ""
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr ""
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr ""
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr ""
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr ""
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr ""
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr ""
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr ""
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr ""
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr ""
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr ""
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr ""
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr ""
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr ""
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr ""
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr ""
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr ""
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr ""
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr ""
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr ""
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr ""
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr ""
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr ""
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr ""
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr ""
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr ""
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr ""
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr ""
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr ""
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr ""
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr ""
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr ""
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr ""
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr ""
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr ""
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr ""
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr ""
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr ""
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr ""
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr ""
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr ""
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -1965,282 +1973,286 @@ msgid ""
 "accepted"
 msgstr ""
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr ""
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr ""
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr ""
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr ""
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr ""
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr ""
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr ""
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr ""
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr ""
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr ""
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr ""
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr ""
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr ""
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr ""
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr ""
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr ""
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr ""
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr ""
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr ""
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr ""
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr ""
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr ""
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
 msgstr ""
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr ""
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr ""
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr ""
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr ""
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr ""
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr ""
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr ""
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr ""
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr ""
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr ""
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr ""
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr ""
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr ""
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr ""
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr ""
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr ""
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr ""
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr ""
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr ""
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr ""
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr ""
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr ""
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr ""
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr ""
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr ""
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr ""
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr ""
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr ""
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr ""
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr ""
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr ""
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2252,83 +2264,83 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr ""
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr ""
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr ""
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr ""
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr ""
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr ""
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr ""
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr ""
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr ""
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr ""
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr ""
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr ""
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr ""
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr ""
@@ -2369,233 +2381,233 @@ msgstr ""
 msgid "Read checkpoint %u"
 msgstr ""
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
 msgstr ""
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr ""
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr ""
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr ""
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr ""
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr ""
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr ""
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr ""
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr ""
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr ""
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr ""
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr ""
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr ""
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr ""
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
 msgstr ""
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr ""
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr ""
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr ""
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr ""
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr ""
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr ""
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr ""
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr ""
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr ""
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr ""
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr ""
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr ""
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr ""
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr ""
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr ""
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr ""
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr ""
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr ""
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr ""
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr ""
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr ""
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr ""
index 278eeef00f2f5898420aff881793403449b02a08..7a93054441a6f82fb0603d7dabacc3beea1b050b 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index d9af5cd7b1d16a0f329b63a06963d0d9d4066cd1..53d1d78714e8f63fd3c8412027bad6071e6f87fb 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -2,14 +2,16 @@
 # Copyright (C) 2007 Free Software Foundation, Inc.
 #
 # Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2001,..., 2007.
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.18\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2007-07-09 11:30+0300\n"
 "Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -88,7 +90,7 @@ msgstr ""
 "Yazılım hatalarını <%s> adresine,\n"
 "çeviri hatalarını <gnu-tr@belgeler.org> adresine bildiriniz.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Bilinmeyen sistem hatası"
 
@@ -100,8 +102,8 @@ msgstr "bu yardım iletisi gösterilir"
 msgid "give a short usage message"
 msgstr "kısa bir kullanım iletisi gösterilir"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "İSİM"
 
@@ -139,56 +141,61 @@ msgstr "(YAZILIM HATASI) Seçenek tanınmak zorunda!?"
 msgid "write error"
 msgstr ""
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: `%s' seçeneği belirsiz\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: `--%s' seçeneği argümansız kullanılır\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: `--%s' seçeneği bilinmiyor\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: geçersiz seçenek -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' seçeneği belirsiz\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "bellek tükendi"
@@ -517,188 +524,188 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "Uzak kabuk çalıştırılamıyor"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Arama yönü kapsamdışı"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "Seçenekte verilen kip geçersiz"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "Geçersiz boyut: %s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Arama başlangıcı kapsamdışı"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "Kayıt ortamının uzunluğu geçersiz"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "Arama başlangıcı kapsamdışı"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd: Dosya sonu belirsiz\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "Ana işlem kipi:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "Arşivde beklenmeyen dosya sonu"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "SAYI"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "DOSYA"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "`%s' açılamıyor"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "argüman sayısı çok fazla"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Bozuk komut"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Bu bir tar arşivi gibi görünmüyor"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Yazılan toplam bayt"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Okunan toplam bayt"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Silinen toplam bayt: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(boru)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "record_size için geçersiz değer"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Arşiv ismi verilmemiş"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "stdG/stdÇ arşivi doğrulanamaz"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Aeşiv sıkıştırılmış. %s seçeneğini kullanın"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Sıkıştırılmış arşivler güncellenemez"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Bandın başlangıcında, şimdilik çıkıyor"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Çok hata var, çıkıyor"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Kayıt uzunluğu = %lu blok"
 msgstr[1] "Kayıt uzunluğu = %lu blok"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Arşivde hizalanmamış blok (%lu bayt)"
 msgstr[1] "Arşivde hizalanmamış blok (%lu bayt)"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "Arşiv dosyası geri alınamaz; -i olmaksızın okunamayabilir"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek bir kaydın sınırında durmadı"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: geçersiz bölüm numarası içeriyor"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Bölüm numarası kapsamdışı"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "#%d. bölümü %s için hazırlamak istiyorsanız return tuşuna basınız: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Kullanıcı cevabı beklenirken dosya sonuna gelindi"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "UYARI: Arşiv eksik"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -709,72 +716,72 @@ msgstr ""
 " q                   Uygulama sonlandırılır\n"
 " y veya <enter>      İşlem sürdürülür\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !                   bir alt kabuk açılır\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?                    Bu listeyi basar\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Yeni bölüm yok; çıkıyor.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Dosya ismi belirtilmemiş. Tekrar deneyin.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Girdi geçersiz, Yardım için ? yazın.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s komutu başarısız"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s belki de bu bölümde devam ediyor: başlıktaki isim kırpılmış"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s bu bölümde devam etmiyor"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s yanlış uzunluk (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, fuzzy, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Bu bölüm sıralama dışı"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Arşiv etiketi %s ile eşleşmiyor"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "%s bölümü %s ile eşleşmiyor"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr ""
 "%s: dosya ismi GNU çoklu bölüm başlığında saklanamayacak kadar uzun, kırpıldı"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 #, fuzzy
 msgid "write did not end on a block boundary"
 msgstr "rmtlseek bir kaydın sınırında durmadı"
@@ -786,20 +793,20 @@ msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Sadece %2$lu baytın %1$lu baytı okunabildi"
 msgstr[1] "Sadece %2$lu baytın %1$lu baytı okunabildi"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "İçerikler farklı"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Arşivde beklenmeyen dosya sonu"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Dosya türleri farklı"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Kipleri farklı"
 
@@ -815,144 +822,144 @@ msgstr "Grup-kimlikler farklı"
 msgid "Mod time differs"
 msgstr "Değişiklik zamanları farklı"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Uzunlukları farklı"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "%s'e bağlı değil"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Sembolik bağlar farklı"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Aygıt numaraları farklı"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Doğrulama "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: '%c' dosya türü bilinmiyor, normal dosya olarak karşılaştırıldı"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Arşivdeki dosya isimleri dosya yolu içermiyor."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Doğrulama, özgün dosyaların konumlanmasında başarısız olabilir."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "DOĞRULAMA BAŞARISIZ: %d geçersiz başlık saptandı"
 msgstr[1] "DOĞRULAMA BAŞARISIZ: %d geçersiz başlık saptandı"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "%s de tek başına sıfır bloğu"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: %s arabellekleme dizini yaftasını içeriyor; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr ""
 "%1$s değeri, %3$s..%4$s aralığının %2$s dışında; yerine %5$s kullanılıyor"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "%1$s değeri, %3$s..%4$s aralığının %2$s dışında"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Negatif sekizlik başlık üretiliyor"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: dosya ismi çok uzun (en çok %d olabilir); dökümlenmedi"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: dosya ismi çok uzun (parçalanamıyor); dökümlenmedi"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: bağ ismi çok uzun; dökümlenmedi"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Dosya %s baytta kaldı; sıfırlarla dolduruluyor"
 msgstr[1] "%s: Dosya %s baytta kaldı; sıfırlarla dolduruluyor"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: dosya farklı bir dosya sisteminde; dökümlenmedi"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "içerik dökümlenmedi"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Bilinmeyen dosya türü; dosya yoksayıldı"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "%s için bağlar kayıp.\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: dosya değişmedi; dökümlenmedi"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: dosya arşivdir; dökümlenmedi"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "dizin dökümlenmedi"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: dosya okundu olarak imlendi"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: soket yoksayıldı"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: kapı yoksayıldı"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Sonraki başlığa atlanıyor"
 
@@ -960,74 +967,74 @@ msgstr "Sonraki başlığa atlanıyor"
 msgid "Deleting non-header from archive"
 msgstr "Arşivden başlık-olmayan siliniyor"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: makul olmayan eski tarih damgası %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: zaman damgası %s %s s gelecekte"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Dizin oluşturulurken anlaşılamayan uyumsuzluk"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: durumu çıkarılamadan dizin ismi değiştirildi"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Bitişik dosyaları normal dosyalar olarak çıkarıyor"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Sembolik bağlar, sabit bağlar olarak çıkarılmaya çalışılıyor"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Dosya çıkarılamaz -- dosyanın başı diğer bölümde"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Umulmadık uzun isim başlığı"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Bilinmeyen dosya türü '%c', normal dosya olarak çıkartılıyor"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Mevcut %s daha yeni ya da yaşıt"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Bu dosyayı yedeklemek mümkün olmadı"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "%s ismi %s olarak değiştirilemez"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Dizinin eski adı %s idi"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Dizin adı değiştirilmişti"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Dizin yeni"
@@ -1137,35 +1144,35 @@ msgstr "%s: %s siliniyor\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Kaldırılamaz"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Geçiliyor"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "blok %s: ** NUL bloku **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "blok %s: ** Dosya Sonu **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "blok %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Sayısal %s değeri beklenirken başlıkta boşluklar bulundu"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1173,140 +1180,142 @@ msgstr ""
 "ediliyor"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Arşiv sekizlik değeri %.*s aralığın %s dışında"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Arşiv atıl base-64 başlıklar içeriyor"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Arşiv imzalı base-64 dizge %s, %s aralığının dışında"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Arşiv base-256 değeri %s aralığının dışında"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Arşiv %.*s içeriyor, halbuki orada sayısal %s değeri bekleniyor"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Arşiv değeri %s %s türünün %s..%s aralığının dışında"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " bağı -> %s \n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " bilinmeyen dosya türü %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Uzun  Bağ--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Uzun İsim--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Bölüm Başlığı--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Devamı bayt %s de--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Oluşturulan dizin:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Çalışma dizini değiştirilemez"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "%s %s olarak değiştiriliyor\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: İsmi %s olarak değiştirilemez"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Gerisin geriye %s %s olarak değiştiriliyor\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Çalışılan dizin kaydedilemez"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Çalışma dizini değiştirilemez"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Dosya okunamadan kaldırıldı"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Dosya okunamadan kaldırıldı"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "alt süreç"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "süreçlerarası kanal"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "Kalıp eşleme karakterleri dosya isimlerinde kullanılmış. Lütfen,"
 
-#: src/names.c:603
+#: src/names.c:596
 #, fuzzy
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr "ya kalıp eşlemeyi etkin kılmak için --wildcards  kullanın,"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Arşivde yok"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Arşivde bulunması gerekirken yok"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "Arşiv etiketi %s ile eşleşmiyor"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr ""
 
@@ -1332,7 +1341,7 @@ msgstr ""
 "Sarmalama şekli `%s' bilinmiyor. Listeyi almak için `%s --quoting-"
 "style=help' yazın."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1351,7 +1360,7 @@ msgstr ""
 "  tar -tvf arşiv.tar         # arşiv.tar içindeki dosyalar listelenir\n"
 "  tar -xf arşiv.tar          # arşiv.tar'dan tüm dosyalar çıkarılır\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1372,79 +1381,79 @@ msgstr ""
 "  nil, existing   numaralıysa numaralı, değilse basit yedekleme yapılır\n"
 "  never, simple   daima basit yedekleme yapılır\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Ana işlem kipi:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "bir arşiv içeriğini listeler"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "bir arşivdeki dosyaları çıkarır"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "yeni bir arşiv oluşturur"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "arşiv ile dosya sistemi arasındaki farklar bulunur"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "dosyaları arşivin sonuna ekler"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "sadece arşivdeki kopyasından daha yeni dosyalar eklenir"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "bir arşive tar dosyaları ekler"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "arşivden siler (teyplerde değil!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "arşiv bölüm etiketini sınar ve çıkar"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "İşlem değiştiriciler:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "seyrek dosyalar verimli şekilde elde edilir"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "ANA[.ALT]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "kullanılacak seyrek biçim sürümü ayarlanır (--sparse uygular)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "GNU eski tarz arttırımlı yedekleme tanınır"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "GNU yeni tarz arttırımlı yedekleme tanınır"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "dosyalar okunamadığında sıfırdan farklı bir değerle çıkılmaz"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1456,121 +1465,121 @@ msgstr ""
 "ve dosyaların listelenmesi sırasında ya komut satırından ya da -T seçeneği "
 "üzerinden belirtilir. SAYI öntanımlı olaral 1'dir."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "arşiv arama yapılabilen türde"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "arşiv arama yapılabilen türde"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr ""
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Üsteyazma denetimi:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "yazdıktan sonra arşivi doğrulamaya çalışır"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "arşive eklendikten sonra dosyalar silinir"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "çıkarılırken mevcut dosyalar değiştirilmez"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "arşivdeki kopyalaraından daha yeni dosyalar değiştirilmez"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "çıkarılırken mevcut dosyaların üzerine yazılır"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "çıkarılmadan önce mevcut dosya silinir"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "dizin çıkarılmadan önce alt dizinleri silinir"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "mevcut dizinlerin öznitelikleri korunur"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "çıkarılırken mevcut dizinlerin metaverisinin üzerine yazılır (öntanımlı)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Çıktı akımını seçiniz:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "dosyalar standart çıktıya çıkarılır"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "KOMUT"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "çıkarılan dosyaları başka bir uygulamaya borular"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "altsüreçlerin çıkış kodları yoksayılır"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "altsüreçlerin çıkış kodları sıfırdan farklıysa hata olarak ele alınır"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Dosya özniteliklerinin elde edilmesi:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "İSİM eklenen dosyaların sahibi yapılır"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "İSİM eklenen dosyaların grubu yapılır"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DOSYA-TARİHİ"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "DOSYA-TARİHİnde eklenen dosyalar için mtime ayarlanır"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "KİP"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "KİP eklenen dosyaların (sembolik) kipi yapılır"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "YÖNTEM"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1580,32 +1589,32 @@ msgstr ""
 "değerine getirerek (YÖNTEM='replace' öntanımlıdır) ya da ilk yerindeki "
 "zamanı değiştirmeyerek (YÖNTEM='system')."
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "dosya değişiklik zamanı çıkarılmaz"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "sahibi aynı olan dosyalar çıkarılmaya çalışılır"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "dosyalar sizin sahipliğinizde çıkarılır"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "kullanıcı/grup isimleri yerine daima numaraları kullanılır"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "dosya izinleri ile ilgili bilgileri çıkarır (root kullanıcısı için öntanımlı)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1613,15 +1622,15 @@ msgstr ""
 "arşivden çıkarılırken izinlere kullanıcıların umask'ı uygulanır (sıradan "
 "kullanıcılar için öntanımlı)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "isimler arşivdeki sırasına göre çıkarılır"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "-p ve -s birlikte verilmiş gibi olur"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1629,139 +1638,139 @@ msgstr ""
 "herşey çıkarılana kadar çıkarılan dizinlerin izinleri ve değişiklik "
 "zamanlarının değiştirilmesi geciktirilir"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "--delay-directory-restore seçeneğinin etkisi iptal edilir."
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Aygıt seçimi ve aygıt değiştirme:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARŞİV"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "arşiv dosyası ya da ARŞİV aygıtı kullanılır"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "bir iki nokta üstüste içerse bile arşiv dosyası yereldir"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "rmt yerine rmt KOMUT kullanılır"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "rsh yerine uzak uçta KOMUT kullanılır"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "sürücü ve yoğunluk belirtilir"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "çok bölümlü arşivi oluşturur/listeler/çıkarır"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "SAYI x 1024 bayt yazıldıktan sonra band değiştirilir"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "her bandın sonunda betiği çalıştırır (-M uygular)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "DOSYAda bölüm numarası kullanılır/güncellenir"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Aygıtın blok düzeni:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOK"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "kayıt başına BLOK x 512 bayt"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "512'nin katları olarak kayıt başına BOYUT bayt"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "arşivdeki sıfırlı bloklar yoksayılır (dosyasonu anlamında)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "okunmuş olarak yeniden bloklanır (4.2 BSD boruları için)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Arşiv biçimi seçimi:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "BİÇİM"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "belirtilen biçimin arşivi oluşturulur."
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "BİÇİM şunlardan biri olabilir:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "eski V7 tar biçimi"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "tar <= 1.12 için GNU biçimi"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x biçimi"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) biçimi"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) biçimi"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "pax ile aynı"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr " --format=v7 ile aynı"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "--format=posix ile aynı"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "isim[[:]=değer][,isim[[:]=değer]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "pax anahtar sözcüklerini denetler"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "METİN"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1769,171 +1778,171 @@ msgstr ""
 "arşivi METİN bölüm ismiyle oluşturur; listeleme/çıkarma sırasında METİN, "
 "bölüm ismini genelleme kalıbı olarak kullanılır"
 
-#: src/tar.c:613
+#: src/tar.c:614
 #, fuzzy
 msgid "Compression options:"
 msgstr "Sıkıştırma seçenekleri çelişiyor"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr ""
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "UYG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "arşivi UYG üzerinden geçirir (UYG -d kabul etmeli)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Yerel dosya seçimi:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "belirtilen DOSYA arşive eklenir (isim bir tire ile başlıyorsa kullanışlıdır)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DİZİN"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "DİZİN dizinine geçilir"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "çıkarılacak ya da oluşturulacak isimler DOSYAdan alınır"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T boş karakter sonlandırmalı isimleri okur, -C iptal edilir"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr ""
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "-T ile okunan dosyaisimlerine tırnak ayıklama uygulanır"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "-T ile okunan dosyaisimlerine tırnak ayıklama uygulanmaz"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "ŞABLON"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "belirtilen ŞABLONa uyan dosyalar hariç tutulur"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "DOSYAdaki şablonlara uyan isimler hariç tutulur"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "yafta dosyası hariç, CACHEDIR.TAG içeren dizinler dışlanır"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "CACHEDIR.TAG içeren dizinlerin altındaki herşey hariç tutulur"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "CACHEDIR.TAG içeren dizinler hariç tutulur"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "DOSYA'nın kendisi hariç, DOSYA içeren dizinlerin içerikleri hariç tutulur"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "DOSYA içeren dizinlerin altındaki herşey hariç tutulur"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "DOSYA içeren dizinler hariç tutulur"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr ""
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "dizinlerde özdevinimli olarak azalan sıralamadan kaçınılır"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "arşiv oluşturulurken yerel dosya sisteminde kalınır"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "dizinlerin alt dizinlerine inilir (öntanımlı)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "dosya isimlerinin başındaki `/'lar ayrılmaz"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr ""
 "sembolik bağlar izlenir; hedeflerindeki dosyalar arşivlenir ve dökümlenir"
 
-#: src/tar.c:686
+#: src/tar.c:687
 #, fuzzy
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr ""
 "sembolik bağlar izlenir; hedeflerindeki dosyalar arşivlenir ve dökümlenir"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "ÜYE-İSMİ"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "arşivin ÜYE-İSMİ üyesinden başlanır"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "sadece DOSYA-TARİHİnden daha yeni dosyalar saklanır"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "TARİH"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "sadece veri değişecekse tarih ve saat karşılaştırılır"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "DENETİM"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "kaldırılmadan önce DENETİM sürümü seçilerek yedeklenir"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "DİZGE"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1941,98 +1950,98 @@ msgstr ""
 "kaldırmadan önce uygun sonekle yedekleme yapılır (SIMPLE_BACKUP_SUFFIX ortam "
 "değişkeni ile belirlenmemişse sonek olarak '~' kullanılır"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Dosya ismi dönüşümleri:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "çıkarılırken dosya isimlerinden baştaki SAYI bileşen ayrılır"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "İFADE"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "dosya isimleri dönüştürülürken sed değiştirme İFADEsi kullanılır"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Dosya ismi eşleştirme seçenekleri\n"
 "(içerme ve dışlama kalıplarının her ikisi de etkili):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "harf büyüklükleri önemsenmez"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "dosya isminin başlangıcına uyan kalıplar"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "bir /'dan sonra şablonla eşleşen kalıplar (dışlama için öntanımlı)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "harf büyüklüklerine duyarlı eşleşme (öntanımlı)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "genelleme kalıpları kullanılır (dışlama için öntanımlı)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "birebir dizge eşleme"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "'/' ile eşleşmeyen genelleme kalıpları"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "'/' ile eşleşen genelleme kalıpları (dışlama için öntanımlı)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Bilgilendirme çıktısı:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "işlenen dosyalar ayrıntılı listelenir"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "Üsteyazma denetimi:"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "her SAYIncı kayıtta gelişim iletisi gösterilir (öntanımlı: 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr ""
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr ""
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "tüm bağlar dökümlenmezse bir ileti basılır"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SiNYAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2043,121 +2052,126 @@ msgstr ""
 "alındığında bayt toplamını basar; İzin verilen sinyaller: SIGHUP, SIGQUIT, "
 "SIGINT, SIGUSR1 ve SIGUSR2; SIG ile başlamayanları da kabul edilir"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "dosya değişiklik zamanları UTC'ye göre basılır"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "ayrıntılı çıktı DOSYAya gönderilir"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "her iletide arşiv içindeki blok sayısı gösterilir"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "her eylemden önce doğrulama istenir"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "tar öntanımlıları gösterilir"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr ""
 "listeleme ya da çıkarma sırasında arama koşuluna uymayan dizinler listelenir"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "dönüşümden sonra dosya ve arşiv isimlerini gösterir"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "ŞEKİL"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "sarmalama şeklinin ismi; geçerli ŞEKİL değerleri için aşağıya bakınız"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "DİZGEdeki sarmalama karakterlerine ek olarak"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "DİZGEdeki karakterler için sarmalamayı iptal eder"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Uyumluluk seçenekleri:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "oluştururken --old-archive ile, çıkarırken --no-same-owner ile aynı"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Diğer seçenekler:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "bozuculuk olasılığı olan bazı seçeneklerin kullanımı iptal edilir"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "`-Acdtrux' seçenekleri birden fazla belirtilemez"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Sıkıştırma seçenekleri çelişiyor"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Bilinmeyen  sinyal ismi: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Tarih örnekleri dosyası bulunamadı"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Bilinmeyen tarih biçemi %2$s yerine %1$s kullanılıyor"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Seçenek %s: `%s' tarihi %s olarak ele alınıyor"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: dosya listesi zaten okundu"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: okunan dosya ismi boş karakter içeriyor"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "arşivi gzip üzerinden geçirir"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "--quoting-style seçeneği için geçerli değerler:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2165,169 +2179,169 @@ msgstr ""
 "\n"
 "*Bu* tar için öntanımlılar:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Bloklama çarpanı geçersiz"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Kayıt ortamının uzunluğu geçersiz"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "Arttırımlı dosya biçimi hatalı"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Birden fazla eşik tarihi"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Seyrek sürüm değeri geçersiz"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' seçeneği bu platformda desteklenmiyor"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint değeri bir tamsayı değil"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s: geçersiz grup"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Seçenekte verilen kip geçersiz"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Sayı geçersiz"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Sahip geçersiz"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
 msgstr ""
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Kayıt uzunluğu geçersiz"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Kayıt uzunluğu %d nin katları olmalı"
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Elemen sayısı geçersiz"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Sadece tek bir --to-command seçeneği kullanılabilir"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Hatalı yoğunluk argümanı: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Bilinmeyen yoğunluk: '%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "`-[0-7][lmh]' seçeneği *bu* tar ile desteklenmiyor"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[DOSYA]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Eski seçenek `%c' bir argümanla kullanılır."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence bir dosya listesi olmaksızın anlamlı değil"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence istenen işlem kipinde kullanılamaz"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Çok sayıda arşiv dosyası `-M' seçeneği gerektirir"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "--listed-incremental ile --newer birlikte kullanılamaz"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--occurrence bir dosya listesi olmaksızın anlamlı değil"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Bölüm etiketi çok uzun (sınır: %lu bayt)"
 msgstr[1] "%s: Bölüm etiketi çok uzun (sınır: %lu bayt)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Çok sayıda bölüm içeren arşivler doğrulanamaz"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Sıkıştırılmış arşivler doğrulanamaz"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Çok sayıda bölüm içeren sıkıştırılmış arşivler kullanılamıyor"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Sıkıştırılmış arşivler birleştirilemez"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option sadece POSIX arşivlerinde kullanılabilir"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr ""
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Bir boş arşivin oluşturulması ister istemez reddediliyor"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "`-Aru' seçenekleri `-f -' ile uyumsuz"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "`-Acdtrux' seçeneklerinden biri belirtilmeli"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr ""
@@ -2339,84 +2353,84 @@ msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Dosya %s baytta kırpılmış"
 msgstr[1] "%s: Dosya %s baytta kırpılmış"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "%s anahtar sözcüğü ya bilinmiyor ya da henüz gerçeklenmemiş"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "Numara izin verilen aralığın dışında: %s"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "%s şablonu kullanılamıyor"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "%s anahtar sözcüğü çakıştırılamaz"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Ek başlık bozuk: uzunluk eksik"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Ek başlık uzunluğu izin verilen aralığın dışında"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Ek başlık uzunluğu %*s aralık dışında"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Ek başlık bozuk: uzunluktan sonra boşluk yok"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Ek başlık bozuk: eşit işareti eksik"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Ek başlık bozuk: satırsonu eksik"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Bilinmeyen ek başlık anahtar sözcüğü `%s' yoksayılıyor"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Üretilen isim/değer çifti çok uzun (isim=%s, uzunluk=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Ek başlık %s=%s, %s..%s aralığının dışında"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Ek başlık bozuk: %s=%s geçersiz"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Ek başlık bozuk: %s=%s aşırıya kaçmış"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "Ek başlık bozuk: %s geçersiz: umulmadık %c ayracı"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Ek başlık bozuk: %s geçersiz: değerler tek sayıda"
@@ -2457,7 +2471,7 @@ msgstr "Yazma sınama yeri %u"
 msgid "Read checkpoint %u"
 msgstr "Okuma sınaması yeri %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2465,71 +2479,71 @@ msgstr ""
 "genfile, GNU paxutils deneme araçları için veri dosyalarını işleme sokar.\n"
 "SEÇENEKLER:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Dosya oluşturma seçenekleri:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "BOYUT"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Dosya belirtilen BOYUTta oluşturulur"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Dosyalar standart çıktı yerine İSİM dosyasına yazılır"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Dosya isimleri DOSYAdan okunur"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T boş karakter sonlandırmalı isimleri okur"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Dosyayı belirtilen ŞABLON ile doldurur. ŞABLON 'default' veya 'zeros' "
 "olabilir"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Seyrek dosyalar için blok boyu"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Seyrek dosya üretilir. Komut satırının kalanı dosya eşlemini verir."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "KONUM"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Veriyi yazmadan önce belirtilen konuma gider"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Dosya istatistikleri seçenekleri:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr ""
 "Belirtilen her dosya için stat yapısının içeriğini basar. Öntanımlı BİÇİM: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "İcra eşzamanlama seçenekleri:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [SEÇENEK...]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 #, fuzzy
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
@@ -2538,19 +2552,19 @@ msgstr ""
 "Belirtilen KOMUT çalıştırılır. --checkpoint ile ve --cut, --append, --touch "
 "seçeneklerinden biri ile birlikte kullanışlıdır"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "Sınama SAYIsı aşıldığında belirtilen eylem uygulanır (aşağıya bakınız)"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Sonraki --touch seçeneği için tarih ayarlanır"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "İcra edilen sınamalar ve KOMUTun çıkış durumu gösterilir"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2558,153 +2572,167 @@ msgstr ""
 "Çalıştırma eylemlerini eşzamanlar. Bunlar --checkpoint seçeneği ile "
 "belirtilen sayı aşıldığında çalıştırılırlar."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr ""
 "DOSYA --length seçeneği ile belirtilen boyutta kırpılır (belirtilmemişse 0)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "DOSYAya BOYUT bayt eklenir. BOYUT evvelce --length seçeneği ile belirtilir."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "DOSYAnın değişiklik ve erişim zamanları güncellenir"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "KOMUT çalıştırılır"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Geçersiz boyut: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Numara izin verilen aralığın dışında: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Negatif boyut: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) başarısız"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr ""
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr ""
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Sayı çözümlenirken `%s' civarında hata"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Bilinmeyen tarih biçimi"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGÜMANLAR...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "`%s' açılamıyor"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "konumlanamıyor"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "dosya ismi boş karakter içeriyor"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "seyrek dosyalar standart çıktıda üretilemez, --file seçeneğini kullanın"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "kalıp yanlış (`%s' yakınında)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Bilinmeyen alan `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "zaman `%s' olarak ayarlanamaz"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "`%s' açılamıyor"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Komut başarıyla sonlandı\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Komut %d çıkış durumu ile başarısız oldu\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Komut %d sinyali ile sonlandırıldı\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Komut %d sinyali ile durduruldu\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Komut bellek dökümü verdi\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Komut sonlandı\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat seçeneği dosya isimleri gerektirir"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "Çalışılan dizin kaydedilemez"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "%s ismi %s olarak değiştirilemez"
+
+#~ msgid "suppress this warning."
+#~ msgstr "ya da bu uyarıyı engellemek için --no-wildcards kullanın."
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: kuraldışı seçenek -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "%s okunuyor\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2713,15 +2741,6 @@ msgstr "--stat seçeneği dosya isimleri gerektirir"
 #~ "Yazılım hatalarını <%s> adresine,\n"
 #~ "çeviri hatalarını <gnu-tr@belgeler.org> adresine bildiriniz.\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "%s okunuyor\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "Hata kurtarılabilir değil: şimdilik çıkılıyor"
-
-#~ msgid "suppress this warning."
-#~ msgstr "ya da bu uyarıyı engellemek için --no-wildcards kullanın."
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "arşivi bzip2 üzerinden geçirir"
 
@@ -2773,6 +2792,9 @@ msgstr "--stat seçeneği dosya isimleri gerektirir"
 #~ msgid "Premature end of file"
 #~ msgstr "Dosya sonu belirsiz"
 
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "Hata kurtarılabilir değil: şimdilik çıkılıyor"
+
 #~ msgid "block size"
 #~ msgstr "blok uzunluğu"
 
index 788ae4d4bc8311d14025a6eead1d24a4de194d4a..f400a51406beda4a2cdd59c627496057570e5a01 100644 (file)
Binary files a/po/uk.gmo and b/po/uk.gmo differ
index 0576a5c2d07404e592dbd51eb78bfd5bf5c8a518..53d9c9e835ae0ca9f1003953a51631f8748df1b2 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -3,19 +3,21 @@
 # Copyright (C) 2010 Free Software Foundation, Inc.
 # Sergey Poznyakoff <gray@gnu.org>, 2005, 2006, 2007, 2008, 2009, 2010.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.23\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-03-10 13:30+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-13 12:20+0300\n"
 "Last-Translator: Sergey Poznyakoff <gray@gnu.org>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #: gnu/argmatch.c:135
 #, c-format
@@ -87,7 +89,7 @@ msgstr ""
 msgid "Report bugs to %s.\n"
 msgstr "Про помилки звітуйте на <%s>.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Невідома системна помилка"
 
@@ -99,8 +101,8 @@ msgstr "вивести цю довідку"
 msgid "give a short usage message"
 msgstr "вивести коротке повідомлення про використання"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "НАЗВА"
 
@@ -138,56 +140,61 @@ msgstr "(ПОМИЛКА ПРОГРАМУВАННЯ) Опція мала бути
 msgid "write error"
 msgstr "помилка запису"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: опція '%s' неоднозначна\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: опція '--%s' не може мати аргументу\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: опція '%c%s' не може мати аргументу\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: опція '%s' вимагає аргументу\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: опція '--%s' вимагає аргументу\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: невідома опція '--%s'\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: невідома опція '%c%s'\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: недійсна опція -- '%c'\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: опція вимагає аргументу -- '%c'\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: опція '-W %s' неоднозначна\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: опція '-W %s' не може мати аргументу\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: опція '-W %s' вимагає аргументу\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "пам'ять вичерпана"
@@ -540,137 +547,137 @@ msgstr "Не вдалося під'єднатись до %s: неможливо
 msgid "Cannot execute remote shell"
 msgstr "Не вдалося запустити віддалену оболонку"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Напрямок зміщення за межами діапазону"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Помилковий напрям пошуку"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Помилковий зсув у файлі"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Зміщення за межами діапазону"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Помилкова кількість байтів"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "Кількість байтів за межами діапазону"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "Передчасне закінчення файла"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Недійсний код операції"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "Операція не підтримується"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Неочікувані аргументи"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr "Керує стрічковим пристроєм, отримуючи команди від віддаленого процесу"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "ЧИСЛО"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "встановити рівень налагоджування"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "встановити назву файлу для виходу налагоджування"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "не вдається відкрити %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "забагато аргументів"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Хибна команда"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Це не схоже на архів tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Записано загалом"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Прочитано байтів загалом"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Видалено загалом: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(канал)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Недійсне значення record_size"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Не вказано назви архіву"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Неможливо перевіряти архів, записаний до stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Архів стиснений. Використовуйте опцію %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Не можна оновлювати стиснені архіви"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "На початку стрічки, закінчуємо"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Надто багато помилок, виконання перервано"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
@@ -678,7 +685,7 @@ msgstr[0] "Розмір запису = %lu блок"
 msgstr[1] "Розмір запису = %lu блоки"
 msgstr[2] "Розмір запису = %lu блоків"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
@@ -686,39 +693,39 @@ msgstr[0] "Невірне вирівнювання блоку (%lu байт) в
 msgstr[1] "Невірне вирівнювання блоку (%lu байти) в архіві"
 msgstr[2] "Невірне вирівнювання блоку (%lu байтів) в архіві"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Не вдалося переміститись назад у архіві; можливо архів не можна прочитати "
 "без опції -i"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek не зупинився на межі запису"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: містить невірний номер тому"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Переповнення номера тому"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Підготуйте том #%d архіву %s ї натиснить return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Кінець файлу, замість очікуваної відповіді"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "ПОПЕРЕДЖЕННЯ: Незавершений архів"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -729,66 +736,66 @@ msgstr ""
 " q          Перервати роботу\n"
 " у або новий рядок  Продовжувати\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !          Викликати оболонку\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?          Вивести цю довідку\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Новий том відсутній. Завершення.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Не вказано назви файлу. Спробуйте ще раз.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Недійсні вхідні дані. Наберіть ? щоб отримати підказку.\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "збій виконання `%s'"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr ""
 "%s можливо продовжується у цьому томі: заголовок містить обрізану назву"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s не продовжується у цьому томі"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s є неправильним розміром (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Цей том є за межами послідовності (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Назви тому відсутня в архіві. Не можна порівняти з %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Етикетка тому %s не співпадає з %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -796,7 +803,7 @@ msgstr ""
 "%s: назва файлу надто довга щоб зберегти її у заголовку тому GNU; назву "
 "обрізано"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "запис не закінчився на межі блоку"
 
@@ -808,20 +815,20 @@ msgstr[0] "Вдалося прочитати тільки %lu з %lu байта"
 msgstr[1] "Вдалося прочитати тільки %lu з %lu байтів"
 msgstr[2] "Вдалося прочитати тільки %lu з %lu байтів"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Різниця у змісті"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Неочікуваний кінець файла в архіві"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Різниця у типі файлу"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Різниця у правах доступу"
 
@@ -837,42 +844,42 @@ msgstr "Різниця у значенні GID"
 msgid "Mod time differs"
 msgstr "Різниця у часі модифікації"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Різниця у розмірі"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Не є посиланням до %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Різниця у символічному посиланні"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Різниця у номері пристрою"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Перевірка "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s: Невідомий тип файлу `%c', перевірюється як звичайний файл"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Архів містить назви файлів без попереджуючих префіксів."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Перевірка може не знайти первинних файлів."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
@@ -880,47 +887,47 @@ msgstr[0] "ПОМИЛКА ПЕРЕВІРКИ: знайдено %d невірни
 msgstr[1] "ПОМИЛКА ПЕРЕВІРКИ: знайдено %d невірних заголовки"
 msgstr[2] "ПОМИЛКА ПЕРЕВІРКИ: знайдено %d невірних заголовків"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Самотній блок нулів, зсув %s"
 
 # Не подобається мені це "кешування"...
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: містить мітку каталогу кешування `%s'; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "Значення %s поза межами діапазону типа %s %s..%s; заміна на %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "значення %s за межами діапазону типа %s %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Створення від'ємних вісімкових заголовків"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: назва файлу занадто довга (макс. %d); не архівується"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: назва файлу занадто довга (не вдається розділити); не архівується"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: назва посилання занадто довга; не архівується"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
@@ -928,56 +935,56 @@ msgstr[0] "%s: Файл скоротився на %s байт; заповнен
 msgstr[1] "%s: Файл скоротився на %s байти; заповнення нулями"
 msgstr[2] "%s: Файл скоротився на %s байтів; заповнення нулями"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: файл знаходиться в іншої файлової системі; не архівується"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "вміст не архівується"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Невідомий тип файла; Файл проігноровано"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "Відсутні деякі посилання до %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: файл не змінено; не архівується"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: файл є архівом; не архівується"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "каталог не архівується"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: файл змінився під час читання"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: гніздо ігнорується"
 
 # FIXME: door?
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: двері ігноруються"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Перехід до наступного заголовка"
 
@@ -985,75 +992,75 @@ msgstr "Перехід до наступного заголовка"
 msgid "Deleting non-header from archive"
 msgstr "Видалення не-заголовка з архіву"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: неймовірно стара дата %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: мітка часу %s зсунута на %s сек. до майбутнього"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Неочікувана суперечність під час створення каталогу"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Каталог перейменовано перед тим, як tar встиг витягнути його стан"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Витягування безперервних файлів у звичайні"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Спроба перетворити символічні посилання на жорсткі"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Не вдається витягнути -- файл починається в іншому томі"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Неочікуваний кінець файла у заголовку довгої назви"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Невідомий тип файлу `%c', спроба витягнути його як звичайний файл"
 
 # FIXME: або сучасний?
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "Існуючий файл `%s' є новіший"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Не вдалося створити резервну копію цього файла"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Не вдається перейменувати %s на %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Каталог перейменовано з %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Каталог перейменовано"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Новий каталог"
@@ -1165,35 +1172,35 @@ msgstr "%s: Стирання %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Не вдається видалити"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Пропускається"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "блок %s: ** Містить нулі **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "блок %s: ** Кінець файлу **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "блок %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Пробіли у заголовку замість очікуваного числового значення типу %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
@@ -1201,17 +1208,17 @@ msgstr ""
 "вважається, що це є двійкове доповнення"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Вісімкове значення %.*s знаходиться поза межами діапазону типу %s"
 
 # FIXME: base=64?
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Архів містить застарілі заголовки з основою 64"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr ""
@@ -1219,103 +1226,100 @@ msgstr ""
 "типу %s"
 
 # FIXME: base-256
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Значення з основою 256 поза допустимими межами типу %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Знайдено %.*s замість числового значення типу %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Значення %s поза допустимими межами типу %s %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr "посилання до %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr "невідомий тип файла %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Довге посилання--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Довга назва--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Заголовок тому--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Продовжується з байту %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Створення каталогу:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Не вдається змінити поточний каталог"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Перейменовано %s у %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Не вдається перейменувати на %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Перейменовано %s назад у %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Не вдається зберегти поточний каталог"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Не вдається змінити поточний каталог"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Файл було видалено перед тим як tar встиг його прочитати"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Каталог було видалено перед тим як tar встиг його прочитати"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "процес-нащадок"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "канал між процесами"
 
-#: src/names.c:601
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
 msgstr "Назви файлів містять символи-шаблони"
 
-#: src/names.c:603
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
@@ -1323,24 +1327,29 @@ msgstr ""
 "Користайтеся опцією --wildcards аби увімкнути шаблони, або опцією --no-"
 "wildcards, щоб позбутися цього повідомлення"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Не знайдено в архіві"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Потрібну копію у архіві не знайдено"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Незгідність назви тому"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "Використання опції -C у переліку файлів разом з опцією --listed-incremental "
 "не дозволяється"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Разом з --listed-incremental дозволяється лише одна опція -C"
 
@@ -1366,7 +1375,7 @@ msgstr ""
 "Невідомий стиль цитування `%s'. Наберіть `%s --quoting-style=help' аби "
 "отримати перелік стилів."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1385,7 +1394,7 @@ msgstr ""
 "                               # archive.tar\n"
 "  tar -xf archive.tar          # Витягує усі файли з archive.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1407,81 +1416,81 @@ msgstr ""
 "                  інакше - прості\n"
 "  never, simple   завжди створювати прості резервні копії\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Режими роботи:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "вивести вміст архіву"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "витягнути файли з архіву"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "створити новий архів"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "порівняти файли в архіві з файлами у файлової системі"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "долучити файли до існуючого архіву"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "долучати тільки такі файли, що є новішими за їх копії в архіві"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "долучити архів до архіву"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "видалити файли з архіву (не на стрічці!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "перевірити мітку тому та вийти"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Модифікатори режиму роботи:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "заощаджувати простір під час зберігання розсіяних файлів"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "ГОЛОВНИЙ[.ДРУГОРЯДНИЙ]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "встановлює версію формату розсіяних файлів (вмикає --sparse)"
 
 # FIXME: incremental
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "обробка старого формату інкрементного архіву GNU"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "обробка нового формату інкрементного архіву GNU"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "рівень архівної копії для створення інкрементного архіву"
 
 # FIXME: хммм...
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "ігнорувати помилки читання файлів"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1493,122 +1502,122 @@ msgstr ""
 "з переліком файлів (у командному рядку або за допомогою опції -T). Типове "
 "ЧИСЛО: 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "архів підтримує операцію seek"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "архів не підтримує операцію seek"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "не перевіряти номери пристрою під час створювання інкрементних архівів"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr ""
 "перевіряти номери пристрою під час створювання інкрементних архівів (типово)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Керування перезаписом:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "перевірити архів після запису в нього"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "видаляти файли після додавання до архіву"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "не заміняти існуючи файли під час витягування"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "не заміняти існуючи файли що є новішими за їх копії у архіві"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "перезаписувати існуючі файли під час витягування"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "видаляти кожний файл перед витягуванням його копії"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "спорожняти старий каталог перед витягуванням його копії з архіву"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "зберігати мета-дані існуючих каталогів"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "перезаписувати метадані існуючих каталогів під час витягування (типово)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Вибір вихідного потоку:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "витягувати файли у стандартний вивід"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "КОМАНДА"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "передавати витягнуті файли до стандартного вводу іншої програми"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "ігнорувати коди завершення процесів-нащадків"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "вважати ненульовий код завершення нащадка помилкою"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Обробка атрибутів файлу:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "встановлення вказаного користувача власником доданих файлів"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "встановлення групи з вказаною назвою групою власника доданих файлів"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "ДАТА-АБО-ФАЙЛ"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "встановлення часу останньої зміни доданих файлів"
 
 # Ну, і чому це CHANGES??
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "ПРАВА"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "встановлення вказаних символічно прав доступу для доданих файлів"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "МЕТОД"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1618,11 +1627,11 @@ msgstr ""
 "читання (типово, МЕТОД='replace'), або через запобігання оновленню часу "
 "(МЕТОД='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "не витягувати час модифікації файлів"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1630,21 +1639,21 @@ msgstr ""
 "встановлювати власників файлів за даними з архіву (типово для супер-"
 "користувача)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "стати власником витягнутих файлів (типово для звичайного користувача)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "завжди використовувати числа замість назв власника/групи"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "встановлювати права доступу згідно з даними архіву (типово для супер-"
 "користувача)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1652,15 +1661,15 @@ msgstr ""
 "встановлювати права доступу згідно зі значенням umask (типово для звичайного "
 "користувача)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "витягувати файли у порядку їх з'явлення в архіві"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "те ж, що -p -s разом"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1668,139 +1677,139 @@ msgstr ""
 "затримати встановлення часу модифікації та прав доступу до каталогів до "
 "кінця витягування"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "відмінити дії опції --delay-directory-restore"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Вибір та зміна пристрою:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "АРХІВ"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "використовувати вказаний файл або пристрій"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "файл архіву є локальним, навіть якщо його назва містить двокрапку"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "використовувати вказану команду замість rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "використовувати вказану команду замість rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "визначає пристрой та густину"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "створити, виводити зміст або витягувати файли з багатотомного архіву"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "змінити стрічку після запису ЧИСЛА x 1024 байтів"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "запускати сценарій наприкінці кожної стрічки (вмикає -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "використовувати/обновляти номер тому у ФАЙЛІ"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Блокування пристрою:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "ЧИСЛО-БЛОКІВ"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "розмір запису ЧИСЛО-БЛОКІВ x 512 байтів"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "встановити розмір запису у блоках по 512 байтів"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "ігнорувати нульові блоки в архіві (звичайно вказують кінець файлу)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "розбивати на блоки під час читання (для каналів 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Вибір формату архіву:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "ФОРМАТ"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "створити архів у вказаному форматі"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "ФОРМАТ будь-який з наступних:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "старий формат V7"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "формат GNU, сумісний з версією tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "формат GNU, сумісний з версією tar 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "формат POSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "формат POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "те ж, що і pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "те ж, що і --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "те ж, що і --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "ключове_слово[[:]=значення][,ключове_слово[[:]=значення], ...]\""
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "керування ключовими словами pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "ТЕКСТ"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1808,77 +1817,77 @@ msgstr ""
 "створити архів з назвою тому \"ТЕКСТ\". Під час виводу змісту або "
 "витягування, використовувати ТЕКСТ як шаблон пошуку тому"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Опції стиснення:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "вибирати програму стиснення за суфіксом архіву"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "не використовувати суфікс для вибору програми стиснення"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "ПРОГРАМА"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "використовувати ПРОГРАМУ для стиснення/розтискання архіву"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Вибір файлів:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr "долучити ФАЙЛ до архіву (корисне, якщо його назва починається з -)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "КАТАЛОГ"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "перейти до вказаного каталогу"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "читати назви файлів для додання/витягування з вказаного файла"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr ""
 "файл, вказаний з опцією -T, містить назви, відокремлені нульовими символами. "
 "Ця опція вимикає -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "відмінити дію попередньої опції --null"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "усувати цитування з назв файлів прочитаних за допомогою -T (типово)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "не усувати цитування з назв файлів прочитаних за допомогою -T"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "ШАБЛОН"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "не обробляти файли, назви яких відповідають вказаному шаблону"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "виключити назви що відповідають шаблонам, вказаним у файлі"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1886,92 +1895,92 @@ msgstr ""
 "не архівувати файли в каталогах, що містять CACHEDIR.TAG, з винятком самого "
 "файлу"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "не архівувати жодні файли в каталогах, що містять CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "не архівувати каталоги, що містять CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr ""
 "не архівувати файли в каталогах, що містять ФАЙЛ, з винятком самого файлу"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "не архівувати жодні файли в каталогах, що містять ФАЙЛ"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "не архівувати каталоги, що містять ФАЙЛ"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "не архівувати каталоги систем керування версіями"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "не архівувати резерві файли та файли блокування"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "не заходити автоматично у каталоги"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "залишатися у локальної файлової системі під час створення архіву"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "рекурсивно проходити каталоги (типово)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "не видаляти початкову косу риску `/' з назв файлів"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "Йти за символьними посиланнями: долучати файли, на яки вони вказують"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "Йти за жорсткими посиланнями: долучати файли, на яки вони вказують"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "НАЗВА-ФАЙЛУ"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "починати обслуговування архіву з вказаного файлу"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "долучати тільки такі файли, що є новіші за вказану дату або файл"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "ДАТА"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "порівнювати тільки дату і час зміни даних"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "РЕЖИМ"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "перед видаленням створювати резервні файли у вказаному режимі"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "РЯДОК"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1979,98 +1988,98 @@ msgstr ""
 "перед видаленням створювати резервні файли з указаним суфіксом (типово '~', "
 "якщо не перевизначено змінною середовища SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Перетворювання назв файлів:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "видаляти вказане ЧИСЛО компонентів з початку назв файлів"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "ВИРАЗ"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "перетворювати назви файлів за допомогою вказаного виразу заміни"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Керування порівнюванням назв (впливає на взірці як вилучення, так і "
 "долучення):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "шаблони ігнорують відмінності у регістрі символів"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "порівнювати шаблони з назвами файлів починаючи від початку назви"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr ""
 "порівнювати шаблони з назвами файлів починаючи від будь-якого / (типово)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "шаблони враховують регістр (типово)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "користатися шаблонами (типово для вилучення)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "порівнювати назви буквально"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "шаблони не стосуються до '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "шаблони стосуються до '/' (типово)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Інформативний вивід:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "виводити докладну інформацію про оброблені файли"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "КЛ.-СЛОВО"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "керування попередженнями"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "виводити контрольне повідомлення кожне ЧИСЛО записів (типово 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ДІЯ"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "виконати вказану дію у контрольному пункті"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "виводити повідомлення якщо до архіву було додано не всі посилання"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "СИГНАЛ"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2081,27 +2090,31 @@ msgstr ""
 "- друкувати статистику по отриманню цього сигналу; дозволеними сигналами є "
 "SIGHUP, SIGQUIT, SIGINT, SIGUSR1 і SIGUSR2, а також ці назви без префікса SIG"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
 msgstr "друкувати час модифікації файлів у UTC"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "друкувати час модифікації файлів у повній вирізняльної здатності"
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "виводити детальну інформацію у ФАЙЛ"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "попереджувати кожне повідомлення номером блоку в архіві"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "Запитувати підтвердження кожної дії"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "вивести типові налаштування"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2109,31 +2122,31 @@ msgstr ""
 "під час виведення змісту або витягування файлів друкувати назви каталогів що "
 "не відповідають критеріям пошуку"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "показувати перетворені назви файлів"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "СТИЛЬ"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "встановити стиль цитування; дозволені стилі див. нижче"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "цитувати також вказані символи"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "вимкнути цитування вказаних символів"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Опції сумісності:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2141,63 +2154,63 @@ msgstr ""
 "під час створення архіву, те ж саме, що і --old-archive. Під час "
 "витягування, те ж саме, що --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Інші опції:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "заборонити користування деякими потенційно небезпечними опціями"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr ""
 "Не можна вказувати більш ніж одну з опцій `-Acdtrux' або `--test-label'"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Опції стиснення конфліктують одна з другою"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Невідомий тип файла %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Не знайдено файл-зразок дати"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Використовується %s замість невідомого формату дати %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Опція %s: Дату `%s' сприйнято як %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: перелік файлів уже прочитано"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: прочитана назва файла містить нульовий символ"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "фільтрувати архів через %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Допустимими аргументами опції --quoting-style є:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2205,51 +2218,51 @@ msgstr ""
 "\n"
 "Типові налаштування *цієї* копії програми:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Неправильний фактор блокування"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Неправильна довжина стрічки"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Недійсне значення для рівня архівації"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Більш ніж одна гранична дата"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Недійсна версія формату розсіяних файлів"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "опція --atime-preserve='system' не підтримується на цій платформі"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "аргумент --checkpoint мусить бути цілим числом"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Недійсна група"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Невірний формат прав доступу"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Невірне число"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Невірний власник"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2257,69 +2270,69 @@ msgstr ""
 "Опція --preserve є застарілою, замість неї використовуйте --preserve-"
 "permissions --preserve-order"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Невірний розмір запису"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Розмір запису має ділитися на %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Невірна кількість елементів"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Дозволяється лише одна опція --to-command"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Невірний аргумент вказання густини: `%s'"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Невідома густина: `%c'"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "Опції `-[0-7][lmh]' не підтримуються *цією* версією tar"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[ФАЙЛ]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Стара опція `%c' потребує аргументу"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "вказання --occurrence не має сенсу без вказання переліку файлів"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr ""
 "опцію --occurrence не можна використовувати у зазначеному режимі роботи"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Вказання декількох файлів потребує вказання опції `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Не можна використовувати --listed-incremental разом з --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "Використання --level разом з --listed-incremental не має сенсу"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
@@ -2327,47 +2340,47 @@ msgstr[0] "%s: Мітка тому є надто довга (обмеження
 msgstr[1] "%s: Мітка тому є надто довга (обмеження в %lu байти)"
 msgstr[2] "%s: Мітка тому є надто довга (обмеження в %lu байтів)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Не можна перевіряти багатотомні архіви"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Не можна перевіряти стиснені архіви"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Не можна використовувати стиснення багатотомних архівів"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Не можна з'єднувати стиснені архіви"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "Опція --pax-option використовується тільки з архівами у форматі POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Розмір тому не може бути більшим від розміру запису"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "Опція --preserve-order несумісна з --listed-incremental"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Полохливо відмовляюся створювати пустий архів"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Опції `-Aru' несумісні з `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "Необхідно вказати одну з опцій `-Acdtrux' або `--test-label'"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Невдачне завершення внаслідок попередніх помилок"
@@ -2380,88 +2393,88 @@ msgstr[0] "%s: Файл скоротився на %s байт"
 msgstr[1] "%s: Файл скоротився на %s байти"
 msgstr[2] "%s: Файл скоротився на %s байтів"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Ключове слово %s не є відоме або ще не реалізоване"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Значення позначки часу поза допустимими межами"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Шаблон %s забороняється уживати"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Не можна перевизначити ключове слово %s"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Невірно сформований розширений заголовок: бракує довжини"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Довжина розширеного заголовку є за межами діапазону"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Довжина розширеного заголовку %*s є за межами діапазону"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr ""
 "Невірно сформований розширений заголовок: відсутній пробіл після довжини"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Невірно сформований розширений заголовок: відсутній знак рівняння"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Невірно сформований розширений заголовок: відсутній знак нового рядка"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Невідоме ключове слово `%s' іґнорується"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Створена пара ключове слово/значення є за довга (ключ=%s, довжина=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr ""
 "Значення розширеного заголовку %s=%s лежить поза допустимими межами типу %s.."
 "%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Невірно сформований розширений заголовок: недійсна змінна %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Невірно сформований розширений заголовок: зайвий %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Невірно сформований розширений заголовок: змінна %s: неочікуваний розділювач "
 "%c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Невірно сформований розширений заголовок %s: непарна кількість значень"
@@ -2502,7 +2515,7 @@ msgstr "Контрольна відмітка запису %u"
 msgid "Read checkpoint %u"
 msgstr "Контрольна відмітка читання %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2510,69 +2523,69 @@ msgstr ""
 "genfile - програма обробки файлів з набору перевірок пакету GNU paxutils\n"
 "Перелік опцій:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Опції створювання файлів:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "РОЗМІР"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Створити файл заданого розміру"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Писати у вказаний файл, замість стандартного виводу"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Читати назви файлів з вказаного файлу"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr ""
 "файл, вказаний з опцією -T, містить назви, відокремлені нульовими символами"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Взірець заповнення файла: 'default' (типовий) або 'zeros' (заповнення нулями)"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Розмір блока розсіяного файла"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "Створити розсіяний файл. Решта аргументів дає мапу файла."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "ЗСУВ"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Перед записом даних перейти до вказаного зсуву в файлі"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Статистика файлів:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr "Виводити вміст структури stat для кожного файла. Типовий формат: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Синхронне виконання:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "ОПЦІЯ"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2580,20 +2593,20 @@ msgstr ""
 "Виконати вказану команду. Для використання з опціями --cut, --append, --"
 "touch або --unlink"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr ""
 "Виконати вказану операцію (див. нижче) по досягненню контрольної відмітки"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Встановлює дати для наступної опції --touch"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Друкувати виконані операції і код завершення команди"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2601,7 +2614,7 @@ msgstr ""
 "Операції синхронного виконання. Виконуються по досягненню контрольної "
 "відмітки, вказаної опцією --checkpoint. "
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2609,139 +2622,142 @@ msgstr ""
 "Обрізати файл до розміру, вказаного попередньою опцією --length (до 0, якщо "
 "її не було вказано)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr "Додати до файла кількість байтів, вказану попередньою опцією --length."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Поновити час доступу та модифікації файла"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Виконати КОМАНДУ"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "Видалити файл"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Невірний розмір: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Число поза допустимими межами: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Від'ємний розмір: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "збій виконання stat(%s)"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "замовлений розмір файлу %lu, справжній -- %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "створений файл не є розсіяним"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Помилка розбору числа біля `%s'"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Невідомий формат дати"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[АРГУМЕНТИ...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "не вдається відкрити `%s'"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "не вдається виконати lseek"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "назва файла містить нульовий символ"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "неможливо створювати розсіяні файли на стандартному виводі; користайтеся "
 "опцією --file"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "недійсна маска (біля `%s')"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Невідоме поле `%s'"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "не вдається встановити час файла `%s'"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "не вдається видалити `%s'"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Команда завершилася успішно\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Команда завершилася з кодом %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Команда завершилася по сигналу %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Команда зупинилася по сигналу %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Команда скинула відбиток пам'яті\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Команда завершилася\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "опція --stat вимагає назв файлів"
+
+#~ msgid "Cannot save working directory"
+#~ msgstr "Не вдається зберегти поточний каталог"
index b2c6f5d90fbb06e9ccf86d5ccd75944d3d43cb99..05957d8d7e415f3be66bc2ce0758228187157356 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index 47c0c2e42b37bcc1da7fa4687ba834b13e4f4627..06faefd161ddcb44c7fb731950c9563d318099d0 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -4,14 +4,16 @@
 # Phan Vinh Thinh <teppi82@gmail.com>, 2005.
 # Clytie Siddall <clytie@riverland.net.au>, 2007-2010.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-13 17:50+0930\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-10-03 18:13+1030\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"Language: vi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -88,7 +90,7 @@ msgstr "Hãy thử `%s --help' hoặc `%s --usage' để biết thêm thông tin
 msgid "Report bugs to %s.\n"
 msgstr "Báo cáo lỗi tới %s.\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "Lỗi hệ thống không rõ"
 
@@ -100,8 +102,8 @@ msgstr "hiển thị trợ giúp này"
 msgid "give a short usage message"
 msgstr "hiển thị cách sử dụng ngắn gọn"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "TÊN"
 
@@ -139,56 +141,61 @@ msgstr "(LỖI CHƯƠNG TRÌNH) Tùy chọn nên được nhận ra !?"
 msgid "write error"
 msgstr "lỗi ghi"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: tùy chọn « %s » vẫn mơ hồ\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: tùy chọn « --%s » không cho phép đối số\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: tùy chọn « %c%s » không cho phép đối số\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: tùy chọn « %s » yêu cầu một đối số\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: tùy chọn « --%s » yêu cầu một đối số\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: không nhận ra tuỳ chọn « --%s »\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: không nhận ra tuỳ chọn « %c%s »\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: tùy chọn sai -- « %c »\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: tùy chọn yêu cầu một đối số -- « %c »\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: tùy chọn « -W %s » vẫn mơ hồ\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: tùy chọn « -W %s » không cho phép đối số\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: tùy chọn « -W %s » yêu cầu một đối số\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "cạn bộ nhớ"
@@ -527,188 +534,188 @@ msgstr "đầu ra tiêu chuẩn"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "Không thể kết nối tới %s: lỗi giải quyết"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "Không thể chạy shell ở xa"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "Hướng tìm kiếm vượt quá vùng cho phép"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "Sai đặt hướng tìm nơi"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "Sai đặt khoảng chênh tìm nơi"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "Bộ tìm kiếm vượt quá vùng cho phép"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "Sai đếm byte"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "Số đếm byte ở ngoại phạm vi"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "Gặp kết thúc tập tin sớm"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "Mã thao tác sai"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "Thao tác không được hỗ trợ"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "Gặp đối số bất thường"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr "Thao tác một ổ băng từ, chấp nhận lệnh từ một tiến trình ở xa"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "SỐ"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "đặt cấp gỡ rối"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "TẬP TIN"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "đặt tên tập tin kết xuất gỡ rối"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "không thể mở %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "quá nhiều đối số"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "Câu lệnh rác"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "Đây có vẻ không phải là một kho lưu tar"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "Tổng số byte đã ghi"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "Tổng số byte đã đọc"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "Tổng số byte đã xoá: %s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(đường ống)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "Giá trị cho record_size không đúng"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "Không đưa ra tên kho lưu"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "Không kiểm tra được kho lưu stdin/stdout"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "Kho lưu được nén. Hãy sử dụng tùy chọn %s"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "Không cập nhật được kho lưu đã nén"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "Tại đầu băng ghi âm, thoát ra bây giờ"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "Quá nhiều lỗi, đang thoát"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "Kích cỡ mục ghi = %lu khối"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "Khối chưa sắp hàng (%lu byte) trong kho lưu"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr ""
 "Không thể \"tua\" lại tập tin kho lưu; nó có thể không đọc được khi không có "
 "« -i »"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek không dừng lại tại một ranh giới bản ghi"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s: chứa số thứ tự khối không đúng"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "Số thứ tự khối thừa ra"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "Chuẩn bị khối #%d cho %s và nhấn Enter: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "Kết thúc tập tin (EOF) khi mong đợi trả lời của người dùng"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "CẢNH BÁO: Kho lưu không hoàn thành"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -719,65 +726,65 @@ msgstr ""
 " q          Dừng tar\n"
 " y hay dòng mới\tTiếp tục lại chạy tiến trình\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             Tạo một trình bao con\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             In ra danh sách này\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "Không có khối mới; đang thoát.\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "Chưa ghi rõ tên tập tin: hãy thử lại.\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "Gõ sai. (Gỏ ? để xem trợ giúp.)\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "Câu lệnh %s không thành công"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s có thể tiếp tục trên khối tin này: phần đầu chứa tên bị cắt ngắn"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s không tiếp tục trên khối này"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s là kích thước sai (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "Khối tin này vượt quá dãy cho phép (%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "Kho lưu không có nhãn tương ứng với %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "Khối %s không tương ứng %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
@@ -785,7 +792,7 @@ msgstr ""
 "%s: tên tập tin quá dài để chứa trong một phần đầu đa khối GNU nên bị cắt "
 "ngắn"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "tiến trình ghi (write) không dừng lại tại một ranh giới khối"
 
@@ -795,20 +802,20 @@ msgid "Could only read %lu of %lu byte"
 msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "Chỉ đọc được %lu từ %lu byte"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "Diff nội dung"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "Kết thúc tập tin không mong đợi trong kho lưu"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "Diff dạng tập tin"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "Diff chế độ"
 
@@ -824,142 +831,142 @@ msgstr "Diff Gid"
 msgid "Mod time differs"
 msgstr "Diff thời gian sửa đổi"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "Diff kích thước"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "Không liên kết tới %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "Diff liên kết mềm"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "Diff số thứ tự của thiết bị"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "Kiểm tra "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr ""
 "%s: không rõ dạng tập tin '%c' nên khác biệt (diff) như tập tin thông thường"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "Kho lưu chứa tên tập tin không có tiền tố ở đầu."
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "Sự kiểm tra có thể không định vị được các tập tin gốc."
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "LỖI KIỂM TRA: tìm thấy %d phần đầu không đúng"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "Một khối không đơn lẻ tại %s"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: chứa một thẻ thư mục ghi nhớ tạm %s: %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "giá trị %s vượt quá %s phạm vi %s..%s; đang thay thế %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "giá trị %s vượt quá %s phạm vi %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "Đang tạo phần đầu hệ tám âm"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s: tên tập tin quá dài (max %d); không được dump"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s: tên tập tin quá dài (không chia được); không được dump"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s: tên liên kết quá dài; không được dump"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s: Tập tin được rút ngắn %s byte; độn vào bắng các số không"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s: tập tin trên một hệ thống tập tin khác; không được dump"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "chưa đổ nội dung"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s: Không rõ dạng tập tin; tập tin bị lờ đi"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "Thiếu liên kết tới %s."
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: tập tin chưa thay đổi; không được dump"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: tập tin là kho lưu; không được đổ"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "chưa đổ thư mục"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: tập tin đã thay đổi khi chúng ta đọc nó"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: socket bị lờ đi"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: cửa (door) bị lờ đi"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "Nhảy tới phần đầu tiếp theo"
 
@@ -967,74 +974,74 @@ msgstr "Nhảy tới phần đầu tiếp theo"
 msgid "Deleting non-header from archive"
 msgstr "Xóa không phải phần đầu từ kho lưu"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s: tem thời gian cũ không hợp lý %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s: tem thời gian %s là %s giây trong tương lai"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s: Sự mâu thuẫn không mong đợi khi tạo thư mục"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s: Đổi tên thư mục trước khi có thể giải phóng trạng thái của nó"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "Giải nén các tập tin liền nhau thành những tập tin thông thường"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "Đang thử giải nén liên kết mềm thành liên kết cứng"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s: Không giải nén được -- tập tin tiếp tục từ khối khác"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "Phần đầu tên dài không mong đợi"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s: Dạng tập tin không rõ '%c' nên giải nén như tập tin thông thường"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "%s hiện thời là mới hay hay cùng thời"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s: Không thể sao lưu tập tin này"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "Không thể đổi tên %s thành %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s: Đã đổi tên thư mục từ %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s: Đã đổi tên thư mục"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s: Thư mục là mới"
@@ -1144,177 +1151,179 @@ msgstr "%s: Đang xóa %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s: Không thể xóa bỏ"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s: Đang bỏ đi"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "khối %s: ** Khối của các số không (NUL) **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "khối %s: ** Kết thúc tập tin **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "khối %s: "
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "Khoảng trống trong Phần đầu trong khi mong đợi một giá trị số %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr ""
 "Giá trị hệ tám %.*s của kho lưu vượt ra phạm vi %s; coi như phần bù của hai"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "Giá trị hệ tám %.*s của kho lưu vượt ra phạm vi %s"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "Kho lưu chứa phần đầu base-64 không còn dùng nữa"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "Kho lưu ký chuỗi base-64 %s vượt ra ngoài vùng %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "Giá trị base-256 của kho lưu vượt ra ngoài vùng %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "Kho lưu chứa %.*s ở chỗ mong đợi giá trị số %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "Giá trị kho lưu %s vượt quá phạm vi %s (%s..%s)"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " liên kết tới %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " dạng tập tin không rõ %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--Liên kết Dài--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--Tên Dài--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--Phần đầu Khối--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--Tiếp tục tại byte %s--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "Đang tạo thư mục:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "Không thay đổi được thư mục làm việc"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "Đang đổi tên %s thành %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s: Không thể đổi tên thành %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "Đang đổi tên %s ngược lại thành %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "Không thể ghi nhớ thư mục làm việc"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "Không thay đổi được thư mục làm việc"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s: Tập tin bị xóa trước khi chúng ta đọc nó"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: Thư mục bị xoá trước khi chúng ta đọc nó"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "tiến trình con"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "kênh (channel) giữa các tiến trình"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "Tên tập tin chứa ký tự khớp mẫu."
+msgstr "Tên tập tin chứa ký tự khớp mẫu"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
-msgstr "Hãy dùng « --wildcards » để hiệu lực khớp mẫu,"
+msgstr ""
+"Dùng « --wildcards » (ký tự đặi diện) để hiệu lực chức năng khớp mẫu,\n"
+"hoặc « --no-wildcards » để thu hồi cảnh báo này."
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s: Không tìm thấy trong kho lưu"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s: Không tìm thấy phần tử yêu cầu trong kho lưu"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "Sai khớp nhãn kho lưu"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr ""
 "Sử dụng tuỳ chọn « -C » bên trong danh sách tập tin không được phép với « --"
 "listed-incremental »"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "Chỉ cho phép một tuỳ chọn « -C » với « --listed-incremental »"
 
@@ -1337,10 +1346,10 @@ msgstr "Muốn tính năng GNU trên định dạng kho lưu không tương thí
 msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr ""
-"Không rõ kiểu dáng trích dẫn « %s ». Hãy thử lệnh « %s --quoting-style=help » "
-"để xem danh sách."
+"Không rõ kiểu dáng trích dẫn « %s ». Hãy thử lệnh « %s --quoting-style=help "
+"» để xem danh sách."
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1359,7 +1368,7 @@ msgstr ""
 "kho.tar.\n"
 "  tar -xf kho.tar          # Giải phóng tất cả các tập tin ra từ kho.tar.\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1380,79 +1389,79 @@ msgstr ""
 "  nil, existing   đánh số nếu kho lưu tồn tại, nếu không thì đơn giản\n"
 "  never, simple   luôn luôn tạo kho lưu đơn giản\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "Chế độ thao tác chính:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "liệt kê nội dung của một kho lưu"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "giải phóng các tập tin từ một kho lưu"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "tạo một kho lưu mới"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "tìm sự khác nhau giữa kho lưu và hệ thống tập tin"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "thêm các tập tin vào cuối một kho lưu"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "chỉ thêm những tập tin mới hơn bản sao trong kho lưu"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "thêm các tập tin tar vào một kho lưu"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "xóa từ kho lưu (không dùng trên các băng ghi âm mag!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "thử nhãn khối tin kho lưu rồi thoát"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "Từ khóa bổ nghĩa thao tác:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "điều khiển các tập tin thưa thớt một cách có hiệu quả"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "CHÍNH[.PHỤ]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "đặt phiên bản của định dạng sparse cần dùng (ngụ ý « --sparse »)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "điều khiển sao lưu incremental có định dạng GNU cũ"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "điều khiển sao lưu incremental có định dạng GNU mới"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "cấp đổ cho kho lưu liệt kê tăng dần được tạo"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "đừng thoát với giá trị khác không trên tập tin không thể đọc"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1469,120 +1478,120 @@ msgstr ""
 "T ».\n"
 "Mặc định SỐ có giá trị bằng 1."
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "có thể tìm nơi trong kho lưu"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "không thể tìm nơi trong kho lưu"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "đừng kiểm tra số thứ tự thiết bị khi tạo kho nén dần"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr "kiểm tra số thứ tự thiết bị khi tạo kho nén dần"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "Điều khiển ghi đè:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "thử kiểm tra kho lưu sau khi ghi nó"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "xóa bỏ các tập tin sau khi thêm chúng vào kho lưu"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "không thay thế những tập tin đã có khi giải phóng"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "không thay thế những tập tin đã có mà mới hơn bản sao trong kho lưu"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "ghi đè lên những tập tin đã có khi giải phóng"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "xóa bỏ quyền ưu tiên của mỗi tập tin để giải phóng và ghi đè lên nó"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "xóa sạch quyền ưu tiên trong cây thư mục để giải phóng thư mục"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "bảo quản dữ liệu mêta của các thư mục đã có"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr ""
 "ghi đè lên siêu dữ liệu của những thư mục đã có khi giải phóng (mặc định)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "Chọn luồng xuất:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "giải phóng tập tin ra đầu ra tiêu chuẩn"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "CÂU LỆNH"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "gửi các tập tin đã giải nén qua ống dẫn cho chương trình khác"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "bỏ qua mã thoát của tiến trình con"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "xử lý mã thoát khác số không của tiến trình con như lỗi"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "Điều khiển thuộc tính tập tin:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "bắt buộc dùng TÊN làm người sở hữu cho những tập tin thêm vào"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "bắt buộc dùng TÊN làm nhóm sở hữu cho những tập tin thêm vào"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "NGÀY-CỦA-TẬP-TIN"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "đặt từ DATE-OR-FILE thời gian mtime cho các tập tin đã thêm"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "THAY ĐỔI"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "bắt buộc THAY ĐỔI chế độ (tượng trưng) cho những tập tin thêm vào"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "PHƯƠNG PHÁP"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1592,11 +1601,11 @@ msgstr ""
 "thời gian sau khi đọc (PHƯƠNG PHÁP='replace'; mặc định), hoặc bằng cách "
 "không đặt thời gian như vậy (PHƯƠNG PHÁP='system')"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "không giải phóng thời gian sửa đổi của tập tin"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
@@ -1604,23 +1613,23 @@ msgstr ""
 "thử giải phóng tập tin cùng quyền sở hữu với tập tin trong kho lưu (mặc định "
 "cho siêu người dùng)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr ""
 "giải phóng tập tin dưới tên người dùng riêng (mặc định cho người dùng bình "
 "thường)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "luôn luôn sử dụng số cho tên người dùng/nhóm"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr ""
 "cũng giải nén thông tin về quyền truy cập tập tin (mặc định cho siêu người "
 "dùng)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
@@ -1628,15 +1637,15 @@ msgstr ""
 "áp dụng umask của người dùng khi giải nén quyền truy cập ra từ kho lưu (mặc "
 "định cho người dùng bình thường)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "sắp xếp tên để giải phóng tới kho lưu tương ứng"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "giống như khi có hai tùy chọn -p và -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
@@ -1644,139 +1653,139 @@ msgstr ""
 "hoãn đến kết thúc tiến trình giải nén việc đặt thời gian sửa đổi và quyền "
 "truy cập các thư mục đã giải nén"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "hủy hiệu ứng của tùy chọn « --delay-directory-restore »"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "Lựa chọn và chuyển đổi thiết bị:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "LƯU TRỮ"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "sử dụng tập tin kho lưu hoặc thiết bị LƯU TRỮ"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "tập tin kho lưu là cục bộ thậm chí nếu có một dấu hai chấm"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "sử dụng CÂU LỆNH rmt đưa ra thay cho rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "sử dụng CÂU LỆNH từ xa thay cho rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "chỉ ra ổ và mật độ ghi dữ liệu"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "tạo/liệt kê/giải phóng kho lưu nhiều khối"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "thay băng ghi âm (tape) sau khi ghi nhớ SỐ X 1024 byte"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "chạy script tại cuối mỗi băng ghi âm (có nghĩa -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "sử dụng/cập nhật số thứ tự khối trong TẬP TIN"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "Khối của thiết bị:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "KHỐI"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "KHỐI X 512 byte cho mỗi bản ghi"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "SỐ byte cho mỗi mục ghi, bội số cho 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "lờ đi những khối không (zero) trong kho lưu (có nghĩa EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "đặt khối lại khi chúng ta đọc (cho đường ống 4.2BSD)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "Lựa chọn định dạng kho lưu:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "ĐỊNH DẠNG"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "tạo lưư trữ với định dạng đưa ra"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "ĐỊNH DẠNG là một trong số sau:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "định dạng tar V7 cũ"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "định dạng GNU theo như tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "định dạng tar GNU 1.13.x"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "định dạng PoSIX 1003.1-1988 (ustar)"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "định dạng POSIX 1003.1-2001 (pax)"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "bằng pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "giống như --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "giống như --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "từ_khoá[[:]=giá_trị][,từ_khoá[[:]=giá_trị]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "từ khóa điều khiển pax"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "VĂN BẢN"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1784,76 +1793,76 @@ msgstr ""
 "tạo kho lưu với tên khối tin VĂN BẢN. Tại thời điểm liệt kê/giải phóng, sử "
 "dụng VĂN BẢN làm mẫu glob cho tên khối tin"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "Tùy chọn nén:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "dùng hậu tố kho lưu để xác định chương trình nén"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "không nên dùng hậu tố kho lưu để xác định chương trình nén"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "TRÌNH"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "lọc qua chương TRÌNH (phải chấp nhận -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "Lựa chọn tập tin nội bộ:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr ""
 "thêm vào kho lưu TẬP TIN đã cho (có ích nếu tên nó bắt đầu với dấu gạch)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "THƯ MỤC"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "thay đổi tới thư mục THƯ MỤC"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "lấy các tên tập tin cần giải phóng hay tạo từ TẬP TIN"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T đọc tên kết thúc vô hiệu lực, tắt -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "tắt hiệu ứng của tùy chọn « --null » đi trước"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "hủy trích dẫn các tên tập tin được đọc bằng « -T » (mặc định)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "đừng hủy trích dẫn các tên tập tin được đọc bằng « -T »"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "MẪU"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "loại trừ những tập tin tương ứng với MẪU"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "loại trừ những mẫu liệt kê trong TẬP TIN"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
@@ -1861,92 +1870,92 @@ msgstr ""
 "loại trữ nội dung của thư mục chứa thẻ ghi nhớ tạm CACHEDIR.TAG, trừ tập tin "
 "thẻ chính nó"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr ""
 "loại trữ mọi thứ đều nằm dưới thư mục chứa thẻ ghi nhớ tạm CACHEDIR.TAG"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "loại trữ thư mục chứa thẻ ghi nhớ tạm CACHEDIR.TAG"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "loại trữ nội dung của thư mục chứa TẬP TIN, trừ TẬP TIN chính nó"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "loại trữ mọi thứ đều nằm dưới thư mục chứa TẬP TIN"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "loại trữ thư mục chứa TẬP TIN"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "trừ thư mục của hệ thống điều khiển phiên bản (v.d. « .svn »)"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "loại trừ tập tin kiểu sao lưu và khoá"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "tránh sự giảm dần một cách tự động trong các thư mục"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "nằm trong hệ thống tập tin nội bộ khi tạo kho lưu"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "đệ quy vào các thư mục (mặc định)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "đừng bỏ `/' ở đầu tên tập tin"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "theo liên kết tượng trưng; kho lưu và đổ tập tin tới đó nó chỉ"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "theo liên kết cứng; kho lưu và đổ tập tin tới đó nó chỉ"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "TÊN-THÀNH-VIÊN"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "bắt đầu tại thành viên TÊN-THÀNH-VIÊN trong kho lưu"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "chỉ chứa những tập tin mới hơn NGÀY-CỦA-TẬP-TIN"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "NGÀY"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "so sánh ngày và thời gian chỉ khi dữ liệu thay đổi"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "ĐIỀU KHIỂN"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "sao lưu trước khi xóa, chọn phiên bản ĐIỀU KHIỂN"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "CHUỖI"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1954,96 +1963,96 @@ msgstr ""
 "sao lưu trước khi xóa, ghi đè hậu tố thông thường ('~' trừ khi ghi đè bằng "
 "biến môi trường SIMPLE_BACKUP_SUFFIX)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "Chuyển dạng tên tập tin:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "bỏ đi SỐ thành phần đứng đầu ra tên tập tin khi giải nén"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "BIỂU THỨC"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "dùng « sed replace BIỂU THỨC » để chuyển dạng tên tập tin"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr ""
 "Tùy chọn khớp tên tập tin (có tác động mẫu kiểu cả hai loại trừ và bao gồm):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "không phân biệt chữ hoa/thường"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "mẫu tương ứng với bắt đầu tên tập tin"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "mẫu tương ứng sau bất kỳ / nào (mặc định để loại trừ)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "khớp có phân biệt chữ hoa/ thường (mặc định)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "dùng ký tự đại diện (mặc định để loại trừ)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "khớp chuỗi nghĩa chữ"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "ký tự đại diện không tương ứng '/'"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "ký tự đại diện tương ứng '/' (mặc định để loại trừ)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "Dữ liệu kết quả có tính thông tin:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "liệt kê một cách tỉ mỉ những tập tin được tiến hành"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "TỪ_KHOÁ"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "điều khiển cảnh báo"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "hiển thị thông báo về tiến triển sau mỗi mục ghi thứ SỐ (mặc định 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "HÀNH_ĐỘNG"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "thực hiện HÀNH_ĐỘNG này ở mỗi điểm kiểm"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "in ra một thông báo nếu không phải tất cả các liên kết được dump"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "TÍN HIỆU"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2056,27 +2065,31 @@ msgstr ""
 "SIGHUP, SIGQUIT, SIGINT, SIGUSR1, SIGUSR2;\n"
 "cũng chấp nhận tên không có tiền tố « SIG »."
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
-msgstr "in ra ngày sửa đổi tập tin theo UTC"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "in ra giờ sửa đổi tập tin theo UTC"
+
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr "in ra giờ tập tin đến độ phân giải đầy đủ"
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "gửi kết quả chi tiết tới TẬP TIN"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "hiên thị số thứ tự khối trong kho lưu với mỗi thông báo"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "hỏi xác nhận trước mỗi hành động"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "hiển thị các giá trị mặc định của tar"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
@@ -2084,32 +2097,32 @@ msgstr ""
 "khi liệt kê hay giải phóng, liệt kê mỗi thư mục không tương ứng với tiêu chí "
 "tìm kiếm"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "hiển thị các tên tập tin hay kho lưu sau khi chuyển dạng"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "KIỂU DÁNG"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr ""
 "đặt kiểu dáng trích dẫn tên; xem dưới để tìm các giá trị KIỂU DÁNG hợp lệ"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "cũng trích dẫn các ký tự của CHUỖI"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "tắt trích dẫn các ký tự của CHUỖI"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "Tùy chọn tương thích:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
@@ -2117,62 +2130,62 @@ msgstr ""
 "khi tạo, giống như « --old-archive »\n"
 "khi giải phóng, giống như « --no-same-owner »"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "Những tùy chọn khác:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "tắt sử dụng một số tùy chọn có thể gây tai hại"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "Chỉ cho phép đưa ra một tùy chọn « -Acdtrux » hay « --test-label »"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "Mâu thuẫn giữa các tùy chọn nén"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "Không rõ tên tín hiệu : %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "Không tìm thấy tập tin mẫu ngày tháng"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "Đang thay thế %s cho dạng ngày tháng không rõ %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "Tùy chọn %s: đang xử lý ngày tháng « %s » như %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: danh sách tập tin đã được đọc"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: đọc tên tập tin chứa ký tự vô giá trị"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "lọc kho lưu qua %s"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "Các đối số thích hợp với tùy chọn « --quoting-style »:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2180,51 +2193,51 @@ msgstr ""
 "\n"
 "tar *này* mặc định tới:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "Nhân tố khối không đúng"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "Chiều dài băng ghi âm không đúng"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "Sai đặt giá trị cấp tăng dần"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "Có nhiều ngày bắt đầu"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "Giá trị phiên bản sparse không hợp lệ"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' không được hỗ trợ trên nền tảng này"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "giá trị « --checkpoint » không phải số nguyên"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "Nhóm không đúng"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "Đưa ra chế độ không đúng trên tùy chọn"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "Số không đúng"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "Chủ sở hữu không đúng"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2232,115 +2245,116 @@ msgstr ""
 "Tùy chọn « --preserve » bị phản đối, hãy sử dụng tùy chọn « --preserve-"
 "permissions » « --preserve-order » để thay thế"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "Kích thước bản ghi không đúng"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "Kích thước bản ghi phải là bội số của %d."
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "Số thứ tự của nguyên tố không đúng"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "Cho phép chỉ một tùy chọn « --to-command »"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "Tham số mật độ dạng sai: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "Mật độ không rõ : « %c »"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "tar *này* không hỗ trợ tùy chọn `-[0-7][lmh]'"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[TẬP TIN]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "Tùy chọn cũ `%c' yêu cầu một tham số."
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "--occurrence không có giá trị khi không đưa ra một danh sách tập tin"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence không được sử dụng trong chế độ thao tác đã yêu cầu"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "Tập tin nhiều kho lưu yêu cầu tùy chọn `-M'"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "Không thể kết hợp --listed-incremental với --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "Tùy chọn « --level » vô ích mà không có « --listed-incremental »"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s: Nhãn khối quá dài (giới hạn là %lu byte)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "Không thể kiểm tra kho lưu nhiều khối"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "Không thể kiểm tra kho lưu đã nén"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "Không thể sử dụng kho lưu nhiều khối đã nén"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "Không thể ghép nối các kho nén"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option chỉ dùng được trên kho lưu POSIX"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "Chiều dài khối tin không thể nhỏ hơn kích cỡ mục ghi"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr ""
 "Tùy chọn « --preserve-order » không tương thích với « --listed-incremental »"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "Từ chối tạo một kho lưu trống rỗng"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "Các tùy chọn `-Aru' không tương thích với `-f -'"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
-msgstr "Bạn phải chỉ ra một trong hai tùy chọn « -Acdtrux » và « --test-label »"
+msgstr ""
+"Bạn phải chỉ ra một trong hai tùy chọn « -Acdtrux » và « --test-label »"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "Đang thoát với trạng thái thất bại do lỗi xảy ra trước"
@@ -2351,84 +2365,84 @@ msgid "%s: File shrank by %s byte"
 msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s: Tập tin được rút ngắn %s byte"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "Từ khóa %s không rõ hoặc chưa được thực hiện"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "Nhãn thời gian ở ngoại phạm vi"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "Không thể dùng mẫu (pattern) %s"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "Không thể ghi chèn lên từ khóa %s"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "Phần đầu mở rộng dạng sai: thiếu chiều dài"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "Chiều dài phần đầu mở rộng ở ngoại phạm vi được phép"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "Chiều dài phần đầu mở rộng %*s ở ngoại phạm vi được phép"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "Phần đầu mở rộng dạng sai: thiếu khoảng trắng ở sau chiều dài"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "Phần đầu mở rộng bị lỗi: thiếu dấu bằng"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "Phần đầu mở rộng dạng sai: thiếu dòng mới"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "Bỏ qua từ khoá phần đầu mở rộng không rõ « %s »"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "Cặp từ khoá/giá trị đã tạo ra quá dài (từ khoá=%s, chiều dài=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "Phần đầu mở rộng %s=%s ở ngoại phạm vi (%s..%s)"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "Phần đầu mở rộng dạng sai: %s=%s không hợp lệ"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "Phần đầu mở rộng dạng sai: %s=%s thừa"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr ""
 "Phần đầu mở rộng dạng sai: %s không hợp lệ: dấu giới hạn không mong đợi %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "Phần đầu mở rộng dạng sai: %s không hợp lệ: số giá trị lẻ"
@@ -2469,7 +2483,7 @@ msgstr "Điểm kiểm tra ghi %u"
 msgid "Read checkpoint %u"
 msgstr "Điểm kiểm tra đọc %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2477,71 +2491,71 @@ msgstr ""
 "genfile thao tác các tập tin dữ liệu cho bộ tiện ích thử paxutils của GNU.\n"
 "TÙY CHỌN:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "Tùy chọn tạo tập tin:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "KÍCH CỠ"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "Tạo tập tin có KÍCH CỠ đã cho"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "Ghi vào tập tin TÊN, thay vào thiết bị gõ chuẩn"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "Đọc các tên tập tin từ TẬP TIN"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T đọc tên kết thúc vô hiệu lực"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr ""
 "Điền vào tập tin bằng MẪU đã cho. MẪU là:\n"
 " • default\t\tmặc định\n"
 " • zeros\t\tcác số không"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "Kích cỡ của khối cho tập tin spare"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr ""
 "Tạo ra tập tin sparse. Phần còn lại của dòng lệnh đưa ra sơ đồ tập tin."
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "HIỆU SỐ"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "Tìm nơi theo hiệu số đã cho trước khi ghi dữ liệu"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "Tùy chọn thống kê tập tin:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr "In ra kết xuất struct stat về mỗi tập tin đã cho. ĐỊNH DẠNG mặc định: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "Tùy chọn thực hiện đồng thời:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "TÙY_CHỌN"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
@@ -2553,19 +2567,19 @@ msgstr ""
 " • --touch\tsờ\n"
 " • --unlink\tbỏ liên kết"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "Thực hiện hành động đã cho (xem dưới) khi tới điểm kiểm tra SỐ"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "Đặt ngày tháng cho tùy chọn « -touch » kế tiếp"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "Hiển thị các điểm kiểm tra đã thực hiện và trạng thái thoát của LỆNH"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2573,7 +2587,7 @@ msgstr ""
 "Các hành động thực hiện đồng thời; được thực hiện khi tới điểm kiểm tra có "
 "số được ghi rõ bằng tùy chọn « --checkpoint »."
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
@@ -2581,147 +2595,144 @@ msgstr ""
 "Cắt ngắn TẬP TIN thành kích cỡ được ghi rõ bằng tùy chọn « --length » trước "
 "(không ghi rõ thì 0)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr ""
 "Phụ thêm KÍCH CỠ byte vào TẬP TIN. KÍCH CỠ được ghi rõ bằng tùy chọn « --"
 "length » trước."
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "Cập nhật các thời gian truy cập và sửa đổi của TẬP TIN"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "Thực hiện LỆNH"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "Bỏ liên kết TẬP_TIN"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "Kích cỡ không hợp lệ: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "Số nằm ngoài phạm vi cho phép: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "Kích cỡ âm: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) bị lỗi"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "yêu cầu chiều dài tập tin %lu mà có %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "đã tạo tập tin không phải thưa thớt (sparse)"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "Lỗi phân tích số gần « %s »"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "Không rõ định dạng ngày tháng"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ĐỐI SỐ...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "không thể mở « %s »"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "không thể tìm nơi"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "tên tập tin chứa ký tự vô giá trị"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr ""
 "không thể tạo ra tập tin sparse trên thiết bị gõ chuẩn: dùng tùy chọn « --"
 "file »"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "mặt nạ không đúng (gần « %s »)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "Không rõ trường « %s »"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "không thể đặt thời gian trên « %s »"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "không thể bỏ liên kết « %s »"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "Lệnh đã thoát thành công\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "Lệnh bị lỗi với trạng thái %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "Lệnh đã chấm dứt khi nhận tín hiệu %d\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "Lệnh đã dừng chạy khi nhận tín hiệu %d\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "Lệnh đã đổ lõi\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "Lệnh đã chấm dứt\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat yêu cầu tên tập tin"
 
-#~ msgid "Cannot resolve hostname %s"
-#~ msgstr "Không thể quyết định tên máy %s"
-
-#~ msgid "suppress this warning."
-#~ msgstr "hoặc dùng « --no-wildcards » để thu hồi cảnh báo này."
+#~ msgid "Cannot save working directory"
+#~ msgstr "Không thể ghi nhớ thư mục làm việc"
index 13bbeee20514f9bdb041b62666aa58c91b485bdf..bccbc27b9d1a49c1830ec320d0bb84a38ba37467 100644 (file)
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
index 642de848cb142615c14100ba9aa01e6e6aefc7a2..89e71814138571c9c9cf89bcac9c90bc5f51434a 100644 (file)
@@ -5,14 +5,16 @@
 # Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004.
 # Ji ZhengYu <zhengyuji@gmail.com>, 2008, 2009, 2010.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
-"Project-Id-Version: tar 1.22.91\n"
+"Project-Id-Version: tar 1.23.90\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
-"PO-Revision-Date: 2010-02-16 14:27+0800\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
+"PO-Revision-Date: 2010-07-13 11:49+0800\n"
 "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -86,7 +88,7 @@ msgstr "请用“%s --help”或“%s --usage”获得更多信息。\n"
 msgid "Report bugs to %s.\n"
 msgstr "将错误报告发送到 %s。\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "未知的系统错误"
 
@@ -98,8 +100,8 @@ msgstr "显示此帮助列表"
 msgid "give a short usage message"
 msgstr "显示简短的用法说明"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "名称"
 
@@ -137,56 +139,61 @@ msgstr "(程序错误)选项可否被识别!?"
 msgid "write error"
 msgstr "写错误"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: 选项\"%s\"具有歧义\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: 选项\"--%s\"不需要参数\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: 选项\"%c%s\"不需要参数\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, c-format
-msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: 选项\"%s\"必须要参数\n"
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: 选项\"%s\"需要带参数\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: 无法识别的选项\"--%s\"\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: 无法识别的选项\"%c%s\"\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: 无效选项 -- \"%c\"\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: 选项需要参数 -- \"%c\"\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: 选项\"-W %s\"具有歧义\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: 选项\"-W %s\"不要参数\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: 选项\"%s\"需要带参数\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "内存耗尽"
@@ -523,186 +530,186 @@ msgstr "标准输出"
 #: lib/rtapelib.c:429
 #, c-format
 msgid "Cannot connect to %s: resolve failed"
-msgstr ""
+msgstr "无法连接至 %s: 解析失败"
 
 #: lib/rtapelib.c:515
 #, c-format
 msgid "Cannot execute remote shell"
 msgstr "无法执行远程 shell"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "查寻方向超出范围"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 msgid "Invalid seek direction"
 msgstr "无效的查寻方向"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 msgid "Invalid seek offset"
 msgstr "无效的查寻偏移量"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "查寻操作的偏移量超出范围"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 msgid "Invalid byte count"
 msgstr "无效的字节数"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 msgid "Byte count out of range"
 msgstr "字节数超出范围"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 msgid "Premature eof"
 msgstr "文件结尾出现过早"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 msgid "Invalid operation code"
 msgstr "无效操作模式"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr "不支持的操作"
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 msgid "Unexpected arguments"
 msgstr "参数异常"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr "接受远程程序的命令操作磁带机"
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "NUMBER"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr "设定调试级别"
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "FILE"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr "设定调试输出文件名"
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, c-format
 msgid "cannot open %s"
 msgstr "无法打开 %s"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "参数过多"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "垃圾命令"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "它似乎不像是一个 tar 归档文件"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "总计写入字节数"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "总计读取字节数"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "总计删除字节数:%s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(管道)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "record_size 的无效值"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "未给出归档文件名"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "无法验证标准输入/标准输出归档文件"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "归档被压缩。使用 %s 选项"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "无法更新压缩归档文件"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "处于磁带的起点,现在退出"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "错误过多,退出"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "记录大小 = %lu 块"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "归档中未对齐的块 (%lu 字节)s"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "无法倒回归档文件;如果没有 -i 可能无法读入它"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek 未停在记录边界处"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s:包含无效的卷编号"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "卷编号溢出"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "为 %2$s 准备卷 #%1$d 并按回车:"
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "需得到用户应答时文件结束"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "警告:归档文件不完整"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -713,71 +720,71 @@ msgstr ""
 " q\t\t终止 tar\n"
 " y or newline\t继续操作\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             衍生出一个子 shell\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             打印此列表\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "没有新的卷;退出。\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "未指定文件名。重试。\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "无效输入。输入 ? 显示帮助。\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s 命令失败"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s 在本卷可能连续: 头部包含截短的名字"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s 在本卷中不连续"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s 的大小错误 (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "此卷次序有误(%s - %s != %s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "归档未被标记为匹配 %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "卷标 %s 不匹配 %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr "%s: 文件名太长而无法贮存在 GNU 多卷头,已被截短"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "写操作未在记录边界处终止"
 
@@ -787,20 +794,20 @@ msgid "Could only read %lu of %lu byte"
 msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "仅能读入 %2$lu 中的 %1$lu 个字节"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "内容不同"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "归档文件中异常的 EOF"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "文件类型不同"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "访问模式不同"
 
@@ -816,141 +823,141 @@ msgstr "Gid 不同"
 msgid "Mod time differs"
 msgstr "修改时间不同"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "大小不同"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "没有连接到 %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "符号连接不同"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "设备号不同"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "校验"
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s:未知的文件类型“%c”,与普通文件不同"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "归档包含带有被移除前导字符的文件名。"
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "位于原始文件中的验证可能失败。"
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "校验失败:检测到 %d 个无效的头"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "在 %s 处一个单独的零块"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s: 包含一个缓存目录标识 %s;%s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "值 %s 超出了 %s 的范围 %s..%s;正在替换 %s"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "值 %s 超出了 %s 的范围 %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "正在生成负八进制头"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s:文件名太长(最长 %d);未输出"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s:文件名太长(不能被分割);未输出"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s:连接名太长;未输出"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s:文件缩小 %s 字节;用零填充"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s:文件在不同的文件系统上;未输出"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "未输出内容"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s:未知的文件类型;忽略文件"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, c-format
 msgid "Missing links to %s."
 msgstr "缺少到 %s 的连接。"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s: 文件未改变;未输出"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s: 文件是归档文件;未输出"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "未输出目录"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s: 在我们读入文件时文件发生了变化"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s: 忽略套接字(socket)"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s: 忽略权限"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "跳转到下一个头"
 
@@ -958,74 +965,74 @@ msgstr "跳转到下一个头"
 msgid "Deleting non-header from archive"
 msgstr "从归档文件中删除非头信息"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s:不可信的旧时间戳 %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s:时间戳 %s 是未来的 %s 秒之后"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s:创建目录时出现意外的不一致"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s:目录名在状态信息被获取之前改变了"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "展开紧邻的文件为普通文件"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "正试图将符号连接展开为硬连接"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s:无法展开 -- 文件一直延伸至另一卷中"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "异常的长名字头部"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s:未知的文件类型“%c”,作为普通文件展开"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "当前的“%s”更新或一样新"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s:无法备份该文件"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "无法将 %s 重命名为 %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s:目录已改名,不再是 %s"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s:目录已被改名"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s:目录是新的"
@@ -1135,174 +1142,174 @@ msgstr "%s:正在删除 %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s:无法删除"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s:忽略"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "块 %s:** 空块 **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "块 %s:** 文件结束 **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "块 %s:"
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "头中需要数值 %s 处为空白符"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr "归档的八进制值 %.*s 超出范围 %s;假定为其二进制补码"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "归档八进制值 %.*s 超出 %s 的范围"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "归档包含过时的 base-64 头"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "归档签署的 base-64 字符串 %s 超出范围 %s"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "归档的 base-256 值超出范围 %s"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "归档包含 %.*s 而需要数字值 %s"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "归档值 %s 超出 %s 的范围 %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " 连接到 %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " 未知的文件类型 %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--长连接--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--长名--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--卷头--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--从 %s 字节继续--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "正在创建目录:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "无法改变工作目录"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "将 %s 改名为 %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s:无法重命名为 %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "将 %s 的名字改回 %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "无法保存工作目录"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "无法改变工作目录"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s:文件在我们读入之前被删除了"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s: 文件在读入之前被删除了"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "子进程"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "进程内通道"
 
-#: src/names.c:601
-#, fuzzy
+#: src/names.c:594
 msgid "Pattern matching characters used in file names"
-msgstr "请在文件名中使用匹配字符模式。"
+msgstr "文件名中所使用的字符匹配模式"
 
-#: src/names.c:603
-#, fuzzy
+#: src/names.c:596
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr "使用 --wildcards 打开模式匹配,或是 --no-wildcards 来关闭之"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s:归档中找不到"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s:没有在归档中找到需要的"
 
-#: src/names.c:894
+#: src/names.c:649
+#, c-format
+msgid "Archive label mismatch"
+msgstr "归档卷标不匹配"
+
+#: src/names.c:953
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr "在文件列表中 -C 选项与 --listed-incremental 选项不许合用"
 
-#: src/names.c:900
+#: src/names.c:959
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "仅一个 -C 选项允许与  --listed-incremental 合用"
 
@@ -1326,7 +1333,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr "未知的引用形式‘%s’。尝试用‘%s --quoting-style=help’获取列表。"
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1346,7 +1353,7 @@ msgstr ""
 "件。\n"
 "  tar -xf archive.tar          # 展开归档文件 archive.tar 中的所有文件。\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1365,79 +1372,79 @@ msgstr ""
 "  nil, existing   如果编号备份存在则进行编号备份,否则进行简单备份\n"
 "  never, simple   总是使用简单备份\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "主操作模式:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "列出归档内容"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "从归档中解出文件"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "创建一个新归档"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "找出归档和文件系统的差异"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "追加文件至归档结尾"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "仅追加比归档中副本更新的文件"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "追加 tar 文件至归档"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "从归档(非磁带!)中删除"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "测试归档卷标并退出"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "操作修饰符:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "高效处理离散文件"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "设置所用的离散格式版本(隐含 --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "处理老式的 GNU 格式的增量备份"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "处理新式的 GNU 格式的增量备份"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr "所创建的增量列表归档的输出级别"
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "当遇上不可读文件时不要以非零值退出"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1448,119 +1455,119 @@ msgstr ""
 "extract 或是 --list 中的一个联合使用时,此选项才有效。而且不管文件列表是以命"
 "令行形式给出或是通过 -T 选项指定的;NUMBER 值默认为 1"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "归档可检索"
 
-#: src/tar.c:436
+#: src/tar.c:437
 msgid "archive is not seekable"
 msgstr "归档不可检索"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "当创建增量归档时不要检查设备号"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr "当创建增量归档时检查设备号(默认)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "重写控制:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "在写入以后尝试校验归档"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "在添加文件至归档后删除它们"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "解压时不要替换存在的文件"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "不要替换比归档中副本更新的已存在的文件"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "解压时重写存在的文件"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "在解压要重写的文件之前先删除它们"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "解压目录之前先清除目录层次"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "保留已存在目录的元数据"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "解压时重写已存在目录的元数据(默认)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "选择输出流:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "解压文件至标准输出"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "COMMAND"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "将解压的文件通过管道传送至另一个程序"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "忽略子进程的退出代码"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "将子进程的非零退出代码认为发生错误"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "操作文件属性:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "强制将 NAME 作为所添加的文件的所有者"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "强制将 NAME 作为所添加的文件的组所有者"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "DATE-OR-FILE"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "从 DATE-OR-FILE 中为添加的文件设置 mtime"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "CHANGES"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "强制将所添加的文件(符号)更改为权限 CHANGES"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "METHOD"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1569,440 +1576,440 @@ msgstr ""
 "在输出的文件上保留访问时间,要么通过在读取(默认 METHOD=‘replace’)后还原时间,"
 "要不就不要在第一次(METHOD=‘system’)设置时间"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "不要解压文件的修改时间"
 
-#: src/tar.c:504
+#: src/tar.c:505
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "尝试解压时保持所有者关系一致(超级用户默认此项)"
 
-#: src/tar.c:506
+#: src/tar.c:507
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "将文件解压为您所有(普通用户默认此项)"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "总是以数字代表用户/组的名称"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "解压文件权限信息(默认只为超级用户服务)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr "从归档中解压权限时使用用户的掩码位(默认为普通用户服务)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "为解压至匹配归档排序名称"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "与 -p 和 -s 一样"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr "直到解压结束才设置修改时间和所解目录的权限"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "取消 --delay-directory-restore 选项的效果"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "设备选择和切换:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "ARCHIVE"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "使用归档文件或 ARCHIVE 设备"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "即使归档文件存在副本还是把它认为是本地归档"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "使用指定的 rmt COMMAND 代替 rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "使用远程 COMMAND 代替 rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "指定驱动器和压缩率"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "创建/列出/解压多卷归档文件"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "写入 NUMBER × 1024 字节后更换磁带"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "在每卷磁带最后运行脚本(隐含 -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "使用/更新 FILE 中的卷数"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "设备分块:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "BLOCKS"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "每个记录 BLOCKS x 512 字节"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "每个记录的字节数 NUMBER,乘以 512"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "忽略归档中的零字节块(即文件结尾)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "读取时重新分块(只对 4.2BSD 管道有效)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "选择归档格式:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "创建指定格式的归档"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "FORMAT 是以下格式中的一种:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "old V7 tar 格式"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "GNU 格式 as per tar <= 1.12"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x 格式"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) 格式"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) 格式"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "等同于 pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "等同于 --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "等同于 --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "关键字[[:]=值][,关键字[[:]=值]]..."
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "控制 pax 关键字"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "TEXT"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
 msgstr "创建带有卷名 TEXT 的归档;在列出/解压时,使用 TEXT 作为卷名的模式串"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "压缩选项:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "使用归档后缀名来决定压缩程序"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "不使用归档后缀名来决定压缩程序"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "PROG"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "通过 PROG 过滤(必须是能接受 -d 选项的程序)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "本地文件选择:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr "添加指定的 FILE 至归档(如果名字以 - 开始会很有用的)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "DIR"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "改变至目录 DIR"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "从 FILE 中获取文件名来解压或创建文件"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T 读取以空终止的名字,-C 禁用"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "禁用上一次的效果 --null 选项"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "以 -T 读取的文件名作为引用结束(默认)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "不以 -T 读取的文件名作为引用结束"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "PATTERN"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "排除以 PATTERN 指定的文件"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "排除 FILE 中列出的模式串"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "除标识文件本身外,排除包含 CACHEDIR.TAG 的目录中的内容"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "排除包含 CACHEDIR.TAG 的目录中所有内容"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "排除包含 CACHEDIR.TAG 的目录"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "除 FILE 自身外,排除包含 FILE 的目录中的内容"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "排除包含 FILE 的目录中的所有内容"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "排除包含 FILE 的目录"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "排除版本控制系统目录"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr "排除备份和锁文件"
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "避免目录中的自动降级"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "创建归档时保存在本地文件系统中"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "目录递归(默认)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "不要从文件名中清除引导符‘/’"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "跟踪符号链接;将它们所指向的文件归档并输出"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "跟踪硬链接;将它们所指向的文件归档并输出"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "MEMBER-NAME"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "从归档中的 MEMBER-NAME 成员处开始"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "只保存比 DATE-OR-FILE 更新的文件"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "DATE"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "当只有数据改变时比较数据和时间"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "CONTROL"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "在删除前备份,选择 CONTROL 版本"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "STRING"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
 msgstr ""
 "在删除前备份,除非被环境变量 SIMPLE_BACKUP_SUFFIX 覆盖,否则覆盖常用后缀(‘’)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "文件名变换:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "解压时从文件名中清除 NUMBER 个引导部分"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "EXPRESSION"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "使用 sed 代替 EXPRESSION 来进行文件名变换"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr "文件名匹配选项(同时影响排除和包括模式串):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "忽略大小写"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "模式串匹配文件名头部"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "模式串匹配任意‘/’后字符(默认对 exclusion 有效)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "匹配大小写(默认)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "使用通配符(默认对 exclusion )"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "逐字匹配字符串"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "通配符不匹配‘/’"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "通配符匹配‘/’(默认对排除操作有效)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "提示性输出:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "详细地列出处理的文件"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr "KEYWORD"
 
-#: src/tar.c:740
+#: src/tar.c:741
 msgid "warning control"
 msgstr "警告控制:"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "每隔 NUMBER 个记录显示进度信息(默认为 10 个)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "ACTION"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "在每个检查点上执行 ACTION"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "只要不是所有链接都被输出就打印信息"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "SIGNAL"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2013,118 +2020,123 @@ msgstr ""
 "号为: SIGHUP,SIGQUIT,SIGINT,SIGUSR1 和 SIGUSR2;同时也接受不带 SIG 前缀的"
 "信号名称"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
-msgstr "以 UTC 格式打印文件修改信息"
+#: src/tar.c:756
+msgid "print file modification times in UTC"
+msgstr "以 UTC 格式打印文件修改时间"
+
+#: src/tar.c:758
+#, fuzzy
+msgid "print file time to its full resolution"
+msgstr "将文件时间打印至显示器"
 
-#: src/tar.c:757
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "将详细输出发送至 FILE"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "每个信息都显示归档内的块数"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "每次操作都要求确认"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "显示 tar 默认选项"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr "列表或解压时,列出每个不匹配查找标准的目录"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "显示变换后的文件名或归档名"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "STYLE"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "设置名称引用风格;有效的 STYLE 值请参阅以下说明"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "来自 STRING 的额外的引用字符"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "禁用来自 STRING 的字符引用"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "兼容性选项:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "创建归档时,相当于 --old-archive;展开归档时,相当于 --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "其它选项:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "禁用某些潜在的有危险的选项"
 
-#: src/tar.c:927
+#: src/tar.c:930
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "您不能指定超过一个\"-Acdtrux\"或是\"--test-label\"外的选项"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "压缩选项冲突"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "未知的信号名称: %s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "找不到数据样板文件"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "把未知的时间格式 %2$s 替换为 %1$s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "选项 %s: 将日期 ‘%s’ 当作 %s"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s: 文件列表已经读取"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s: 读取的文件名含有空字符"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, c-format
 msgid "filter the archive through %s"
 msgstr "通过 %s 过滤归档"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "--quoting-style 选项的有效参数为:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2132,53 +2144,53 @@ msgstr ""
 "\n"
 "此 tar 默认为:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 #, fuzzy
 msgid "Invalid blocking factor"
 msgstr "无效的块因子"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "无效的磁带长度"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 msgid "Invalid incremental level value"
 msgstr "无效的增量度"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "多于一个时间阈值"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 #, fuzzy
 msgid "Invalid sparse version value"
-msgstr "æ\97 æ\95\88ç\9a\84离æ\95£版本值"
+msgstr "æ\97 æ\95\88ç\9a\84ç¨\80ç\96\8f版本值"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "此平台不支持 --atime-preserve=‘system’ "
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint 值不是个整数"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 msgid "Invalid group"
 msgstr "无效的组"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "选项中给出无效的访问模式"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "无效的数字"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "无效的所有者"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2186,114 +2198,114 @@ msgstr ""
 "--preserve 选项已经废弃了,请使用 --preserve-permissions --preserve-order 代"
 "替"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "无效的记录大小"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "记录大小必须是 %d 的倍数。"
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "无效的元素数"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "仅允许使用一个 --to-command 选项"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "错误的压缩参数: %s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "未知的压缩参数: ‘%c’"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "本 tar 不支持选项“-[0-7][lmh]”"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FILE]..."
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "旧选项“%c”需要参数。"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "没有一个文件列表时 --occurrence 是没有意义的"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence 不能用于请求的操作模式中"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "多个归档文件需要使用“-M”选项"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "无法在使用 --newer 的时候使用 --listed-incremental"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 msgid "--level is meaningless without --listed-incremental"
 msgstr "没有 --listed-incremental 选项的话 --level 选项是无意义的"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s:卷标过长 (限制为 %lu 字节)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "无法检验多卷归档文件"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "无法检验压缩归档文件"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "无法使用多卷压缩归档文件"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "无法联结压缩归档文件"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option 只能用于 POSIX 归档中"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "卷长度不可小于记录大小"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order 与 --listed-incremental 不匹配"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "谨慎地拒绝创建空归档文件"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "选项“-Aru”与“-f -”不兼容"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "您必须从\"-Acdtrux\"或是\"--test-label\"选项中指定一个"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "由于前次错误,将以上次的错误状态退出"
@@ -2304,83 +2316,83 @@ msgid "%s: File shrank by %s byte"
 msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s:文件缩小 %s 字节"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "关键字 %s 未知或还未实现"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 msgid "Time stamp is out of allowed range"
 msgstr "时间标记超出允许范围"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "不能使用模式 %s"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "不能覆盖关键字 %s"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "错误的扩展头: 缺少 length"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "扩展头长度超出所允许的范围"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "扩展头长度 %*s 超出范围"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "错误的扩展头: length 后缺少空白符"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "错误的扩展头: 缺少等于符号"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "错误的扩展头: 缺少空行"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "忽略未知的扩展头关键字‘%s’"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "生成的关键字/值对太长了(keyword=%s, length=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "扩展头 %s=%s 超出范围 %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "错误的扩展头: %s=%s 无效"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "错误的扩展头: %s=%s 溢出"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "错误的扩展头: %s 无效: 非预期的分隔符 %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "错误的扩展头: %s 无效: 奇怪的数值"
@@ -2421,7 +2433,7 @@ msgstr "写入操作的检查点 %u"
 msgid "Read checkpoint %u"
 msgstr "读取操作的检查点 %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2429,87 +2441,86 @@ msgstr ""
 "genfile 为 GNU paxutils 测试软件操作数据文件。\n"
 "选项为:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "文件创建选项:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "SIZE"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "创建指定 SIZE 的文件"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "写入文件 NAME,而不是标准输出"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "从 FILE 读取文件名"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T 读取以 NULL 终止的名字"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "以指定的 PATTERN 填充文件。PATTERN 可以是‘default’或是‘zeros’"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
-msgstr "离æ\95£文件的块大小"
+msgstr "ç¨\80ç\96\8f文件的块大小"
 
-#: tests/genfile.c:143
-#, fuzzy
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
-msgstr "ç\94\9fæ\88\90离æ\95£文件。命令行其余选项指定 map 文件。"
+msgstr "ç\94\9fæ\88\90ç¨\80ç\96\8f文件。命令行其余选项指定 map 文件。"
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "OFFSET"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "在写入数据前定位至指定的偏移位"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "文件统计选项:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr "打印每个给定文件的 stat 结构定义的内容。默认 FORMAT 是: "
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "同步执行选项:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 msgid "OPTION"
 msgstr "OPTION"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
 "--unlink"
 msgstr ""
 "执行 ARGS。与 --checkpoint 或 --cut,--append,--touch 中的一个一起使用时有用"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "只要达到 checkpoint NUMBER 指定的数值就执行指定的操作(见下)"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "为下一个 --touch 选项设定日期"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "显示执行的 checkpoints 以及 COMMAND 的退出状态"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2517,147 +2528,150 @@ msgstr ""
 "同步执行操作。当达到由 --checkpoint 选项指定的 checkpoint 数值时会执行这些操"
 "作。"
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr "截短 FILE 至由前面 --length 选项指定的大小(如果未指定的话,默认 0)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr "添加 SIZE 字节至 FILE。SIZE 由前面的 --length 选项指定。"
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "更新 FILE 的访问和修改时间"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "执行 COMMAND"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr "删除 FILE"
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "无效的值: %s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "数值超出所允许的范围: %s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "负值: %s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "stat(%s) 错误"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "需要文件长度为 %lu,实际为 %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "所创建的文件非稀疏文件"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "“%s”附近解析数字错误"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "未知的数据格式"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[ARGS...]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "无法打开“%s”"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "无法定位"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "文件名包含空字符"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr "使用 --file 选项无法在标准输出上生成离散文件"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "不正确的掩码(“%s”附近)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "未知的文件掩码位“%s”"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "无法设定“%s”的时间"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, c-format
 msgid "cannot unlink `%s'"
 msgstr "无法删除 \"%s\""
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "命令成功退出\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "命令出错,状态 %d\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "命令由信号 %d 终止了\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "命令由信号 %d 停止了\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "命令输出 core\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "命令终止\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat 选项需要文件名"
 
+#~ msgid "Cannot save working directory"
+#~ msgstr "无法保存工作目录"
+
 #~ msgid "Cannot resolve hostname %s"
 #~ msgstr "无法解析主机 %s"
 
index 61b79cc0ae0b3c6f59be907b47979dbbe9c761cc..e89e8d069b2f512e63f769c1eac45766e49f283c 100644 (file)
Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ
index b4d86982884ba1393891cd4eeed68a8c9c614a25..09d880da7842f7db4fa8634c15da99d767d88c6e 100644 (file)
@@ -3,14 +3,16 @@
 # This file is distributed under the same license as the tar package.
 # Wei-Lun Chao <chaoweilun@gmail.com>, 2009.
 #
+#: src/create.c:1550
 msgid ""
 msgstr ""
 "Project-Id-Version: tar 1.22\n"
 "Report-Msgid-Bugs-To: bug-tar@gnu.org\n"
-"POT-Creation-Date: 2010-03-10 12:53+0200\n"
+"POT-Creation-Date: 2010-10-24 23:08+0300\n"
 "PO-Revision-Date: 2009-08-30 00:17+0800\n"
 "Last-Translator: Wei-Lun Chao <chaoweilun@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -84,7 +86,7 @@ msgstr "試試「%s --help」或「%s --usage」以獲得更多資訊。\n"
 msgid "Report bugs to %s.\n"
 msgstr "請向 %s 回報錯誤。\n"
 
-#: gnu/argp-help.c:1929 gnu/error.c:155
+#: gnu/argp-help.c:1929 gnu/error.c:183
 msgid "Unknown system error"
 msgstr "不明的系統錯誤"
 
@@ -96,8 +98,8 @@ msgstr "給出這個使用方式列表"
 msgid "give a short usage message"
 msgstr "給出簡短的使用訊息"
 
-#: gnu/argp-parse.c:85 src/tar.c:488 src/tar.c:490 src/tar.c:559
-#: tests/genfile.c:131
+#: gnu/argp-parse.c:85 src/tar.c:489 src/tar.c:491 src/tar.c:560
+#: tests/genfile.c:130
 msgid "NAME"
 msgstr "名稱"
 
@@ -135,56 +137,61 @@ msgstr "(程式錯誤) 選項應該已被辨識 !?"
 msgid "write error"
 msgstr "寫入錯誤"
 
-#: gnu/getopt.c:531 gnu/getopt.c:547
+#: gnu/getopt.c:529 gnu/getopt.c:545
 #, fuzzy, c-format
 msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s:選項「%s」是模稜兩可的\n"
 
-#: gnu/getopt.c:580 gnu/getopt.c:584
+#: gnu/getopt.c:578 gnu/getopt.c:582
 #, fuzzy, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s:選項「--%s」不允許引數\n"
 
-#: gnu/getopt.c:593 gnu/getopt.c:598
+#: gnu/getopt.c:591 gnu/getopt.c:596
 #, fuzzy, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s:選項「%c%s」不允許引數\n"
 
-#: gnu/getopt.c:641 gnu/getopt.c:660 gnu/getopt.c:963 gnu/getopt.c:982
+#: gnu/getopt.c:639 gnu/getopt.c:658
 #, fuzzy, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
 msgstr "%s:選項「%s」需要一個引數\n"
 
-#: gnu/getopt.c:698 gnu/getopt.c:701
+#: gnu/getopt.c:696 gnu/getopt.c:699
 #, fuzzy, c-format
 msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s:無法辨識的選項「--%s」\n"
 
-#: gnu/getopt.c:709 gnu/getopt.c:712
+#: gnu/getopt.c:707 gnu/getopt.c:710
 #, fuzzy, c-format
 msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s:無法辨識的選項「%c%s」\n"
 
-#: gnu/getopt.c:761 gnu/getopt.c:764
+#: gnu/getopt.c:759 gnu/getopt.c:762
 #, fuzzy, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s:無效的選項 -- %c\n"
 
-#: gnu/getopt.c:814 gnu/getopt.c:831 gnu/getopt.c:1034 gnu/getopt.c:1052
+#: gnu/getopt.c:812 gnu/getopt.c:829 gnu/getopt.c:1037 gnu/getopt.c:1055
 #, fuzzy, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s:選項需要一個引數 -- %c\n"
 
-#: gnu/getopt.c:884 gnu/getopt.c:900
+#: gnu/getopt.c:885 gnu/getopt.c:901
 #, fuzzy, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s:選項「-W %s」是模稜兩可的\n"
 
-#: gnu/getopt.c:924 gnu/getopt.c:942
+#: gnu/getopt.c:925 gnu/getopt.c:943
 #, fuzzy, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s:選項「-W %s」不允許引數\n"
 
+#: gnu/getopt.c:964 gnu/getopt.c:982
+#, fuzzy, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s:選項「%s」需要一個引數\n"
+
 #: gnu/obstack.c:425 gnu/obstack.c:427 gnu/xalloc-die.c:36
 msgid "memory exhausted"
 msgstr "記憶體已耗盡"
@@ -529,186 +536,186 @@ msgstr ""
 msgid "Cannot execute remote shell"
 msgstr "無法執行遠端命令殼"
 
-#: rmt/rmt.c:413
+#: rmt/rmt.c:432
 msgid "Seek direction out of range"
 msgstr "尋覓方向超出範圍"
 
-#: rmt/rmt.c:419
+#: rmt/rmt.c:438
 #, fuzzy
 msgid "Invalid seek direction"
 msgstr "選項中的模式無效"
 
-#: rmt/rmt.c:427
+#: rmt/rmt.c:446
 #, fuzzy
 msgid "Invalid seek offset"
 msgstr "無效的大小:%s"
 
-#: rmt/rmt.c:433
+#: rmt/rmt.c:452
 msgid "Seek offset out of range"
 msgstr "尋覓偏移值超出範圍"
 
-#: rmt/rmt.c:474 rmt/rmt.c:525 rmt/rmt.c:589
+#: rmt/rmt.c:493 rmt/rmt.c:544 rmt/rmt.c:608
 #, fuzzy
 msgid "Invalid byte count"
 msgstr "無效的磁帶長度"
 
-#: rmt/rmt.c:480 rmt/rmt.c:531 rmt/rmt.c:595 rmt/rmt.c:606
+#: rmt/rmt.c:499 rmt/rmt.c:550 rmt/rmt.c:614 rmt/rmt.c:625
 #, fuzzy
 msgid "Byte count out of range"
 msgstr "尋覓偏移值超出範圍"
 
-#: rmt/rmt.c:539
+#: rmt/rmt.c:558
 #, fuzzy
 msgid "Premature eof"
 msgstr "rmtd:檔案突然結束\n"
 
-#: rmt/rmt.c:582
+#: rmt/rmt.c:601
 #, fuzzy
 msgid "Invalid operation code"
 msgstr "主要操作模式:"
 
-#: rmt/rmt.c:617 rmt/rmt.c:661
+#: rmt/rmt.c:636 rmt/rmt.c:680
 msgid "Operation not supported"
 msgstr ""
 
-#: rmt/rmt.c:645
+#: rmt/rmt.c:664
 #, fuzzy
 msgid "Unexpected arguments"
 msgstr "未預期的保存檔結尾"
 
-#: rmt/rmt.c:670
+#: rmt/rmt.c:689
 msgid "Manipulate a tape drive, accepting commands from a remote process"
 msgstr ""
 
-#: rmt/rmt.c:677 src/tar.c:423 src/tar.c:427 src/tar.c:557 src/tar.c:572
-#: src/tar.c:703 src/tar.c:741 tests/genfile.c:167
+#: rmt/rmt.c:696 src/tar.c:424 src/tar.c:428 src/tar.c:558 src/tar.c:573
+#: src/tar.c:704 src/tar.c:742 tests/genfile.c:166
 msgid "NUMBER"
 msgstr "數目"
 
-#: rmt/rmt.c:678
+#: rmt/rmt.c:697
 msgid "set debug level"
 msgstr ""
 
-#: rmt/rmt.c:679 src/tar.c:421 src/tar.c:562 src/tar.c:638 src/tar.c:642
-#: src/tar.c:654 src/tar.c:664 src/tar.c:667 src/tar.c:669 src/tar.c:756
-#: tests/genfile.c:133 tests/genfile.c:181 tests/genfile.c:185
-#: tests/genfile.c:188 tests/genfile.c:194
+#: rmt/rmt.c:698 src/tar.c:422 src/tar.c:563 src/tar.c:639 src/tar.c:643
+#: src/tar.c:655 src/tar.c:665 src/tar.c:668 src/tar.c:670 src/tar.c:759
+#: tests/genfile.c:132 tests/genfile.c:180 tests/genfile.c:184
+#: tests/genfile.c:187 tests/genfile.c:193
 msgid "FILE"
 msgstr "檔案"
 
-#: rmt/rmt.c:680
+#: rmt/rmt.c:699
 msgid "set debug output file name"
 msgstr ""
 
-#: rmt/rmt.c:696 rmt/rmt.c:764
+#: rmt/rmt.c:715 rmt/rmt.c:783
 #, fuzzy, c-format
 msgid "cannot open %s"
 msgstr "無法開啟「%s」"
 
-#: rmt/rmt.c:761 tests/genfile.c:885 tests/genfile.c:902
+#: rmt/rmt.c:780 tests/genfile.c:884 tests/genfile.c:901
 #, c-format
 msgid "too many arguments"
 msgstr "太多引數"
 
-#: rmt/rmt.c:803
+#: rmt/rmt.c:822
 msgid "Garbage command"
 msgstr "無用的命令"
 
-#: src/buffer.c:321 src/buffer.c:326 src/buffer.c:572 src/buffer.c:1176
-#: src/buffer.c:1222 src/buffer.c:1251 src/delete.c:211 src/list.c:171
-#: src/update.c:189
+#: src/buffer.c:386 src/buffer.c:391 src/buffer.c:635 src/buffer.c:1250
+#: src/buffer.c:1296 src/buffer.c:1325 src/delete.c:211 src/list.c:184
+#: src/update.c:198
 msgid "This does not look like a tar archive"
 msgstr "這個看起來不像 tar 保存檔"
 
-#: src/buffer.c:385 src/buffer.c:394
+#: src/buffer.c:450 src/buffer.c:459
 msgid "Total bytes written"
 msgstr "已寫入位元組總數"
 
-#: src/buffer.c:392 src/buffer.c:406
+#: src/buffer.c:457 src/buffer.c:471
 msgid "Total bytes read"
 msgstr "已讀取位元組總數"
 
-#: src/buffer.c:396
+#: src/buffer.c:461
 #, c-format
 msgid "Total bytes deleted: %s\n"
 msgstr "已刪除位元組總數:%s\n"
 
-#: src/buffer.c:485
+#: src/buffer.c:550
 msgid "(pipe)"
 msgstr "(管線)"
 
-#: src/buffer.c:508
+#: src/buffer.c:573
 msgid "Invalid value for record_size"
 msgstr "無效的記錄大小"
 
-#: src/buffer.c:511
+#: src/buffer.c:576
 msgid "No archive name given"
 msgstr "沒有指定保存檔名稱"
 
-#: src/buffer.c:555
+#: src/buffer.c:618
 msgid "Cannot verify stdin/stdout archive"
 msgstr "無法檢驗標準輸出入保存檔"
 
-#: src/buffer.c:569
+#: src/buffer.c:632
 #, c-format
 msgid "Archive is compressed. Use %s option"
 msgstr "保存檔被壓縮過。使用 %s 選項"
 
-#: src/buffer.c:626 src/tar.c:2429
+#: src/buffer.c:689 src/tar.c:2448
 msgid "Cannot update compressed archives"
 msgstr "無法更新壓縮的保存檔"
 
-#: src/buffer.c:705
+#: src/buffer.c:782
 msgid "At beginning of tape, quitting now"
 msgstr "位於磁帶起始部份,立刻退出"
 
-#: src/buffer.c:711
+#: src/buffer.c:788
 msgid "Too many errors, quitting"
 msgstr "太多錯誤,離開中"
 
-#: src/buffer.c:744
+#: src/buffer.c:821
 #, c-format
 msgid "Record size = %lu block"
 msgid_plural "Record size = %lu blocks"
 msgstr[0] "記錄大小 = %lu 區塊"
 
-#: src/buffer.c:765
+#: src/buffer.c:842
 #, c-format
 msgid "Unaligned block (%lu byte) in archive"
 msgid_plural "Unaligned block (%lu bytes) in archive"
 msgstr[0] "保存檔中未排列的區塊 (%lu 位元組)"
 
-#: src/buffer.c:842
+#: src/buffer.c:919
 msgid "Cannot backspace archive file; it may be unreadable without -i"
 msgstr "無法倒退保存檔檔案;沒有 -i 也許會無法讀取"
 
-#: src/buffer.c:874
+#: src/buffer.c:951
 msgid "rmtlseek not stopped at a record boundary"
 msgstr "rmtlseek 無法在記錄分界處停止"
 
-#: src/buffer.c:928
+#: src/buffer.c:1002
 #, c-format
 msgid "%s: contains invalid volume number"
 msgstr "%s:包含無效的卷冊號碼"
 
-#: src/buffer.c:963
+#: src/buffer.c:1037
 msgid "Volume number overflow"
 msgstr "卷冊號碼已滿"
 
-#: src/buffer.c:978
+#: src/buffer.c:1052
 #, c-format
 msgid "Prepare volume #%d for %s and hit return: "
 msgstr "準備好卷冊 #%d 以完成 %s 並按下 return: "
 
-#: src/buffer.c:984
+#: src/buffer.c:1058
 msgid "EOF where user reply was expected"
 msgstr "到達期待使用者回答的檔案末端"
 
-#: src/buffer.c:989 src/buffer.c:1021
+#: src/buffer.c:1063 src/buffer.c:1095
 msgid "WARNING: Archive is incomplete"
 msgstr "警告:保存檔不完整"
 
-#: src/buffer.c:1003
+#: src/buffer.c:1077
 #, c-format
 msgid ""
 " n name        Give a new file name for the next (and subsequent) volume(s)\n"
@@ -719,71 +726,71 @@ msgstr ""
 " q             放棄打包\n"
 " y 或 newline  繼續作業\n"
 
-#: src/buffer.c:1008
+#: src/buffer.c:1082
 #, c-format
 msgid " !             Spawn a subshell\n"
 msgstr " !             衍生一個子命令殼\n"
 
-#: src/buffer.c:1009
+#: src/buffer.c:1083
 #, c-format
 msgid " ?             Print this list\n"
 msgstr " ?             列印這個清單\n"
 
-#: src/buffer.c:1016
+#: src/buffer.c:1090
 msgid "No new volume; exiting.\n"
 msgstr "沒有新卷冊;離開。\n"
 
-#: src/buffer.c:1049
+#: src/buffer.c:1123
 msgid "File name not specified. Try again.\n"
 msgstr "檔案名稱尚未指定。再次嘗試。\n"
 
-#: src/buffer.c:1062
+#: src/buffer.c:1136
 #, c-format
 msgid "Invalid input. Type ? for help.\n"
 msgstr "無效的輸入。按下 ? 以獲得說明。\n"
 
-#: src/buffer.c:1113
+#: src/buffer.c:1187
 #, c-format
 msgid "%s command failed"
 msgstr "%s 命令失敗"
 
-#: src/buffer.c:1294
+#: src/buffer.c:1368
 #, c-format
 msgid "%s is possibly continued on this volume: header contains truncated name"
 msgstr "%s 在本卷冊中可能連續:標頭含有截斷的名稱"
 
-#: src/buffer.c:1298
+#: src/buffer.c:1372
 #, c-format
 msgid "%s is not continued on this volume"
 msgstr "%s 在本卷冊中並不連續"
 
-#: src/buffer.c:1312
+#: src/buffer.c:1386
 #, c-format
 msgid "%s is the wrong size (%s != %s + %s)"
 msgstr "%s 的大小有錯 (%s != %s + %s)"
 
-#: src/buffer.c:1326
+#: src/buffer.c:1401
 #, c-format
 msgid "This volume is out of sequence (%s - %s != %s)"
 msgstr "本卷冊已超出序列 (%s - %s !=%s)"
 
-#: src/buffer.c:1404 src/buffer.c:1430
+#: src/buffer.c:1479 src/buffer.c:1505
 #, c-format
 msgid "Archive not labeled to match %s"
 msgstr "保存檔未標誌為符合 %s"
 
-#: src/buffer.c:1434
+#: src/buffer.c:1509
 #, c-format
 msgid "Volume %s does not match %s"
 msgstr "卷冊 %s 不符合 %s"
 
-#: src/buffer.c:1530
+#: src/buffer.c:1603
 #, c-format
 msgid ""
 "%s: file name too long to be stored in a GNU multivolume header, truncated"
 msgstr "%s:檔名太長,無法儲存於 GNU 多重卷冊標頭之中,已截斷"
 
-#: src/buffer.c:1749
+#: src/buffer.c:1794
 msgid "write did not end on a block boundary"
 msgstr "並未於區段界限結束寫入"
 
@@ -793,20 +800,20 @@ msgid "Could only read %lu of %lu byte"
 msgid_plural "Could only read %lu of %lu bytes"
 msgstr[0] "只能讀取 %2$lu 位元組中的 %1$lu 個"
 
-#: src/compare.c:105 src/compare.c:388
+#: src/compare.c:105 src/compare.c:382
 msgid "Contents differ"
 msgstr "內容不同"
 
-#: src/compare.c:131 src/extract.c:830 src/incremen.c:1462 src/list.c:386
-#: src/list.c:1376 src/xheader.c:710
+#: src/compare.c:131 src/extract.c:958 src/incremen.c:1462 src/list.c:397
+#: src/list.c:1384 src/xheader.c:711
 msgid "Unexpected EOF in archive"
 msgstr "未預期的保存檔結尾"
 
-#: src/compare.c:179 src/compare.c:195 src/compare.c:313 src/compare.c:412
+#: src/compare.c:179 src/compare.c:195 src/compare.c:308 src/compare.c:406
 msgid "File type differs"
 msgstr "檔案類型不同"
 
-#: src/compare.c:182 src/compare.c:202 src/compare.c:327
+#: src/compare.c:182 src/compare.c:202 src/compare.c:322
 msgid "Mode differs"
 msgstr "模式不同"
 
@@ -822,141 +829,141 @@ msgstr "Gid 號碼不同"
 msgid "Mod time differs"
 msgstr "修改時間不同"
 
-#: src/compare.c:215 src/compare.c:420
+#: src/compare.c:215 src/compare.c:414
 msgid "Size differs"
 msgstr "大小不同"
 
-#: src/compare.c:269
+#: src/compare.c:263
 #, c-format
 msgid "Not linked to %s"
 msgstr "並未鏈結至 %s"
 
-#: src/compare.c:292
+#: src/compare.c:287
 msgid "Symlink differs"
 msgstr "符號連結不同"
 
-#: src/compare.c:321
+#: src/compare.c:316
 msgid "Device number differs"
 msgstr "裝置編號不同"
 
-#: src/compare.c:462
+#: src/compare.c:456
 #, c-format
 msgid "Verify "
 msgstr "驗證 "
 
-#: src/compare.c:469
+#: src/compare.c:463
 #, c-format
 msgid "%s: Unknown file type `%c', diffed as normal file"
 msgstr "%s:不明檔案類型「%c」,會以普通檔案的方式作比較"
 
-#: src/compare.c:524
+#: src/compare.c:518
 msgid "Archive contains file names with leading prefixes removed."
 msgstr "保存檔包含前置文字被移除的檔案名稱。"
 
-#: src/compare.c:526
+#: src/compare.c:520
 msgid "Verification may fail to locate original files."
 msgstr "查核動作可能無法找到原始檔案"
 
-#: src/compare.c:599
+#: src/compare.c:593
 #, c-format
 msgid "VERIFY FAILURE: %d invalid header detected"
 msgid_plural "VERIFY FAILURE: %d invalid headers detected"
 msgstr[0] "驗證失敗:%d 偵測到無效的標頭"
 
-#: src/compare.c:617 src/list.c:148
+#: src/compare.c:611 src/list.c:161
 #, c-format
 msgid "A lone zero block at %s"
 msgstr "位於 %s 的孤立零值區塊"
 
-#: src/create.c:68
+#: src/create.c:72
 #, c-format
 msgid "%s: contains a cache directory tag %s; %s"
 msgstr "%s:包含一個快取目錄標記 %s; %s"
 
-#: src/create.c:273
+#: src/create.c:261
 #, c-format
 msgid "value %s out of %s range %s..%s; substituting %s"
 msgstr "數值 %s 已超出 %s 的範圍 %s..%s;以 %s 替代中"
 
-#: src/create.c:279
+#: src/create.c:267
 #, c-format
 msgid "value %s out of %s range %s..%s"
 msgstr "數值 %s 已超出 %s 的範圍 %s..%s"
 
-#: src/create.c:339
+#: src/create.c:327
 msgid "Generating negative octal headers"
 msgstr "正在產生負數的八進位標頭"
 
-#: src/create.c:624 src/create.c:687
+#: src/create.c:611 src/create.c:674
 #, c-format
 msgid "%s: file name is too long (max %d); not dumped"
 msgstr "%s:檔名太長 (最大 %d);未傾印"
 
-#: src/create.c:634
+#: src/create.c:621
 #, c-format
 msgid "%s: file name is too long (cannot be split); not dumped"
 msgstr "%s:檔名太長 (無法分割);未傾印"
 
-#: src/create.c:661
+#: src/create.c:648
 #, c-format
 msgid "%s: link name is too long; not dumped"
 msgstr "%s:鏈結名稱太長;未傾印"
 
-#: src/create.c:1078
+#: src/create.c:1062
 #, c-format
 msgid "%s: File shrank by %s byte; padding with zeros"
 msgid_plural "%s: File shrank by %s bytes; padding with zeros"
 msgstr[0] "%s:檔案縮小了 %s 位元組;以零值填補"
 
-#: src/create.c:1175
+#: src/create.c:1158
 #, c-format
 msgid "%s: file is on a different filesystem; not dumped"
 msgstr "%s:檔案位於不同的檔案系統;未傾印"
 
-#: src/create.c:1219 src/create.c:1230 src/incremen.c:590 src/incremen.c:596
+#: src/create.c:1201 src/create.c:1212 src/incremen.c:582 src/incremen.c:588
 msgid "contents not dumped"
 msgstr "內容無法傾印"
 
-#: src/create.c:1362
+#: src/create.c:1416
 #, c-format
 msgid "%s: Unknown file type; file ignored"
 msgstr "%s:不明檔案類型;忽略該檔案"
 
-#: src/create.c:1472
+#: src/create.c:1527
 #, fuzzy, c-format
 msgid "Missing links to %s."
 msgstr "失去至 %s 的連結。\n"
 
-#: src/create.c:1543
+#: src/create.c:1688
 #, c-format
 msgid "%s: file is unchanged; not dumped"
 msgstr "%s:檔案沒有變更;未傾印"
 
-#: src/create.c:1552
+#: src/create.c:1697
 #, c-format
 msgid "%s: file is the archive; not dumped"
 msgstr "%s:檔案是保存檔;未傾印"
 
-#: src/create.c:1593 src/incremen.c:583
+#: src/create.c:1721 src/incremen.c:575
 msgid "directory not dumped"
 msgstr "目錄未傾印"
 
-#: src/create.c:1664
+#: src/create.c:1793
 #, c-format
 msgid "%s: file changed as we read it"
 msgstr "%s:檔案在讀取時已變更"
 
-#: src/create.c:1731
+#: src/create.c:1855
 #, c-format
 msgid "%s: socket ignored"
 msgstr "%s:忽略通訊端"
 
-#: src/create.c:1737
+#: src/create.c:1861
 #, c-format
 msgid "%s: door ignored"
 msgstr "%s:忽略匣門"
 
-#: src/delete.c:217 src/list.c:185 src/update.c:194
+#: src/delete.c:217 src/list.c:198 src/update.c:203
 msgid "Skipping to next header"
 msgstr "跳至下一個標頭"
 
@@ -964,74 +971,74 @@ msgstr "跳至下一個標頭"
 msgid "Deleting non-header from archive"
 msgstr "從保存檔中刪除無標頭者"
 
-#: src/extract.c:211
+#: src/extract.c:277
 #, c-format
 msgid "%s: implausibly old time stamp %s"
 msgstr "%s:難以確信的舊時間戳記 %s"
 
-#: src/extract.c:229
+#: src/extract.c:295
 #, c-format
 msgid "%s: time stamp %s is %s s in the future"
 msgstr "%s:時間戳記 %s 代表未來的 %s 秒"
 
-#: src/extract.c:409
+#: src/extract.c:475
 #, c-format
 msgid "%s: Unexpected inconsistency when making directory"
 msgstr "%s:產生目錄時有未預期的不一致"
 
-#: src/extract.c:613
+#: src/extract.c:709
 #, c-format
 msgid "%s: Directory renamed before its status could be extracted"
 msgstr "%s:解開目錄狀態之前已更改了名稱"
 
-#: src/extract.c:759
+#: src/extract.c:863
 msgid "Extracting contiguous files as regular files"
 msgstr "正在解開連續檔案為正常檔案"
 
-#: src/extract.c:1039
+#: src/extract.c:1183
 msgid "Attempting extraction of symbolic links as hard links"
 msgstr "嘗試解開符號連結為硬式連結"
 
-#: src/extract.c:1183
+#: src/extract.c:1339
 #, c-format
 msgid "%s: Cannot extract -- file is continued from another volume"
 msgstr "%s:無法解開 -- 檔案延續自其他卷冊"
 
-#: src/extract.c:1190 src/list.c:1109
+#: src/extract.c:1346 src/list.c:1117
 msgid "Unexpected long name header"
 msgstr "未預期的長名稱標頭"
 
-#: src/extract.c:1197
+#: src/extract.c:1353
 #, c-format
 msgid "%s: Unknown file type `%c', extracted as normal file"
 msgstr "%s:不明檔案類型「%c」,會以普通檔案的方式解開資料"
 
-#: src/extract.c:1223
+#: src/extract.c:1379
 #, c-format
 msgid "Current %s is newer or same age"
 msgstr "目前的 %s 較新或相同"
 
-#: src/extract.c:1274
+#: src/extract.c:1431
 #, c-format
 msgid "%s: Was unable to backup this file"
 msgstr "%s:之前無法備份這個檔案"
 
-#: src/extract.c:1402
+#: src/extract.c:1568
 #, c-format
 msgid "Cannot rename %s to %s"
 msgstr "無法將 %s 重新命名為 %s"
 
-#: src/incremen.c:482 src/incremen.c:526
+#: src/incremen.c:474 src/incremen.c:518
 #, c-format
 msgid "%s: Directory has been renamed from %s"
 msgstr "%s:目錄已從 %s 重新命名"
 
-#: src/incremen.c:494
+#: src/incremen.c:486
 #, c-format
 msgid "%s: Directory has been renamed"
 msgstr "%s:目錄已被重新命名"
 
-#: src/incremen.c:539
+#: src/incremen.c:531
 #, c-format
 msgid "%s: Directory is new"
 msgstr "%s:目錄是新的"
@@ -1141,175 +1148,177 @@ msgstr "%s:正在刪除 %s\n"
 msgid "%s: Cannot remove"
 msgstr "%s:無法移除"
 
-#: src/list.c:115
+#: src/list.c:130
 #, c-format
 msgid "%s: Omitting"
 msgstr "%s:省略中"
 
-#: src/list.c:133
+#: src/list.c:146
 #, c-format
 msgid "block %s: ** Block of NULs **\n"
 msgstr "區塊 %s:** 空值區塊 **\n"
 
-#: src/list.c:159
+#: src/list.c:172
 #, c-format
 msgid "block %s: ** End of File **\n"
 msgstr "區塊 %s:** 檔案結尾 **\n"
 
-#: src/list.c:182 src/list.c:1081 src/list.c:1344
+#: src/list.c:195 src/list.c:1089 src/list.c:1352
 #, c-format
 msgid "block %s: "
 msgstr "區塊 %s:"
 
 #. TRANSLATORS: %s is type of the value (gid_t, uid_t,
 #. etc.)
-#: src/list.c:689
+#: src/list.c:704
 #, c-format
 msgid "Blanks in header where numeric %s value expected"
 msgstr "空白出現在標頭中預期為數值 %s 的地方"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:744
+#: src/list.c:759
 #, c-format
 msgid "Archive octal value %.*s is out of %s range; assuming two's complement"
 msgstr "保存檔八進位數值 %.*s 超出 %s 範圍;假定為二的補數"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:755
+#: src/list.c:770
 #, c-format
 msgid "Archive octal value %.*s is out of %s range"
 msgstr "保存檔八進位數值 %.*s 超出 %s 範圍"
 
-#: src/list.c:776
+#: src/list.c:791
 msgid "Archive contains obsolescent base-64 headers"
 msgstr "保存檔含有過時的 base-64 標頭"
 
-#: src/list.c:790
+#: src/list.c:805
 #, c-format
 msgid "Archive signed base-64 string %s is out of %s range"
 msgstr "保存檔有號 base-64 字串 %s 超出 %s 範圍"
 
-#: src/list.c:821
+#: src/list.c:836
 #, c-format
 msgid "Archive base-256 value is out of %s range"
 msgstr "保存檔 base-256 值超出 %s 範圍"
 
 #. TRANSLATORS: Second %s is a type name (gid_t,uid_t,etc.)
-#: src/list.c:850
+#: src/list.c:865
 #, c-format
 msgid "Archive contains %.*s where numeric %s value expected"
 msgstr "保存檔包含 %.*s 於預期為數值 %s 的地方"
 
 #. TRANSLATORS: Second %s is type name (gid_t,uid_t,etc.)
-#: src/list.c:872
+#: src/list.c:887
 #, c-format
 msgid "Archive value %s is out of %s range %s..%s"
 msgstr "保存檔值 %s 已超出 %s 的範圍 %s..%s"
 
-#: src/list.c:1245
+#: src/list.c:1253
 #, c-format
 msgid " link to %s\n"
 msgstr " 連結到 %s\n"
 
-#: src/list.c:1253
+#: src/list.c:1261
 #, c-format
 msgid " unknown file type %s\n"
 msgstr " 不明檔案類型 %s\n"
 
-#: src/list.c:1271
+#: src/list.c:1279
 #, c-format
 msgid "--Long Link--\n"
 msgstr "--長 連 結--\n"
 
-#: src/list.c:1275
+#: src/list.c:1283
 #, c-format
 msgid "--Long Name--\n"
 msgstr "--長 名 稱--\n"
 
-#: src/list.c:1279
+#: src/list.c:1287
 #, c-format
 msgid "--Volume Header--\n"
 msgstr "--卷 冊 標 頭--\n"
 
-#: src/list.c:1287
+#: src/list.c:1295
 #, c-format
 msgid "--Continued at byte %s--\n"
 msgstr "--於第 %s 位元組繼續--\n"
 
-#: src/list.c:1349
+#: src/list.c:1357
 msgid "Creating directory:"
 msgstr "正在建立目錄:"
 
-#: src/misc.c:502
+#: src/misc.c:298
+#, fuzzy
+msgid "Cannot get working directory"
+msgstr "無法變更工作目錄"
+
+#: src/misc.c:571
 #, c-format
 msgid "Renaming %s to %s\n"
 msgstr "正在將 %s 重新命名為 %s\n"
 
-#: src/misc.c:511 src/misc.c:529
+#: src/misc.c:580 src/misc.c:599
 #, c-format
 msgid "%s: Cannot rename to %s"
 msgstr "%s:無法重新命名為 %s"
 
-#: src/misc.c:534
+#: src/misc.c:604
 #, c-format
 msgid "Renaming %s back to %s\n"
 msgstr "將 %s 的名稱還原為 %s\n"
 
-#: src/misc.c:669
-msgid "Cannot save working directory"
-msgstr "無法儲存工作目錄"
-
-#: src/misc.c:675
-msgid "Cannot change working directory"
-msgstr "無法變更工作目錄"
-
-#: src/misc.c:759
+#: src/misc.c:851
 #, c-format
 msgid "%s: File removed before we read it"
 msgstr "%s:讀取檔案之前已被移除"
 
-#: src/misc.c:774
+#: src/misc.c:866
 #, fuzzy, c-format
 msgid "%s: Directory removed before we read it"
 msgstr "%s:讀取檔案之前已被移除"
 
-#: src/misc.c:795
+#: src/misc.c:887
 msgid "child process"
 msgstr "子進程"
 
-#: src/misc.c:804
+#: src/misc.c:896
 msgid "interprocess channel"
 msgstr "進程間通道"
 
-#: src/names.c:601
+#: src/names.c:594
 #, fuzzy
 msgid "Pattern matching characters used in file names"
 msgstr "在檔案名稱中使用的式樣匹配字元。請,"
 
-#: src/names.c:603
+#: src/names.c:596
 #, fuzzy
 msgid ""
 "Use --wildcards to enable pattern matching, or --no-wildcards to suppress "
 "this warning"
 msgstr "使用 --wildcards 以啟用式樣匹配,或 --no-wildcards 來"
 
-#: src/names.c:619 src/names.c:637
+#: src/names.c:614 src/names.c:630
 #, c-format
 msgid "%s: Not found in archive"
 msgstr "%s:在保存檔中找不到"
 
-#: src/names.c:622
+#: src/names.c:615
 #, c-format
 msgid "%s: Required occurrence not found in archive"
 msgstr "%s:要求項目在保存檔中找不到"
 
-#: src/names.c:894
+#: src/names.c:649
+#, fuzzy, c-format
+msgid "Archive label mismatch"
+msgstr "保存檔未標誌為符合 %s"
+
+#: src/names.c:953
 #, fuzzy
 msgid ""
 "Using -C option inside file list is not allowed with --listed-incremental"
 msgstr "--preserve-order 與 --listed-incremental 不相容"
 
-#: src/names.c:900
+#: src/names.c:959
 #, fuzzy
 msgid "Only one -C option is allowed with --listed-incremental"
 msgstr "--preserve-order 與 --listed-incremental 不相容"
@@ -1334,7 +1343,7 @@ msgid ""
 "Unknown quoting style `%s'. Try `%s --quoting-style=help' to get a list."
 msgstr "不明引號樣式「%s」。嘗試「%s --quoting-style=help」以取得清單。"
 
-#: src/tar.c:347
+#: src/tar.c:348
 msgid ""
 "GNU `tar' saves many files together into a single tape or disk archive, and "
 "can restore individual files from the archive.\n"
@@ -1352,7 +1361,7 @@ msgstr ""
 "  tar -tvf archive.tar         # 詳細列出 archive.tar 中的所有檔案。\n"
 "  tar -xf archive.tar          # 解開 archive.tar 中的所有檔案。\n"
 
-#: src/tar.c:356
+#: src/tar.c:357
 msgid ""
 "The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
 "The version control may be set with --backup or VERSION_CONTROL, values "
@@ -1371,79 +1380,79 @@ msgstr ""
 "  nil, existing   若有數字的備份檔已經存在則使用數字,否則使用普通方式備份\n"
 "  never, simple   永遠使用普通方式備份\n"
 
-#: src/tar.c:386
+#: src/tar.c:387
 msgid "Main operation mode:"
 msgstr "主要操作模式:"
 
-#: src/tar.c:389
+#: src/tar.c:390
 msgid "list the contents of an archive"
 msgstr "列出保存檔的內容"
 
-#: src/tar.c:391
+#: src/tar.c:392
 msgid "extract files from an archive"
 msgstr "從保存檔中解開檔案"
 
-#: src/tar.c:394
+#: src/tar.c:395
 msgid "create a new archive"
 msgstr "建立新的保存檔"
 
-#: src/tar.c:396
+#: src/tar.c:397
 msgid "find differences between archive and file system"
 msgstr "在保存檔與檔案系統之間找出差異"
 
-#: src/tar.c:399
+#: src/tar.c:400
 msgid "append files to the end of an archive"
 msgstr "加入檔案到保存檔末端"
 
-#: src/tar.c:401
+#: src/tar.c:402
 msgid "only append files newer than copy in archive"
 msgstr "只加入比保存檔中複本還新的檔案"
 
-#: src/tar.c:403
+#: src/tar.c:404
 msgid "append tar files to an archive"
 msgstr "加入 tar 檔案到保存檔中"
 
-#: src/tar.c:406
+#: src/tar.c:407
 msgid "delete from the archive (not on mag tapes!)"
 msgstr "從保存檔中刪除 (並非在磁帶上!)"
 
-#: src/tar.c:408
+#: src/tar.c:409
 msgid "test the archive volume label and exit"
 msgstr "測試保存檔卷冊標籤然後離開"
 
-#: src/tar.c:413
+#: src/tar.c:414
 msgid "Operation modifiers:"
 msgstr "運算變更項:"
 
-#: src/tar.c:416
+#: src/tar.c:417
 msgid "handle sparse files efficiently"
 msgstr "有效率地處理稀疏檔案"
 
-#: src/tar.c:417
+#: src/tar.c:418
 msgid "MAJOR[.MINOR]"
 msgstr "MAJOR[.MINOR]"
 
-#: src/tar.c:418
+#: src/tar.c:419
 msgid "set version of the sparse format to use (implies --sparse)"
 msgstr "設定稀疏格式版本以使用 (意味著 --sparse)"
 
-#: src/tar.c:420
+#: src/tar.c:421
 msgid "handle old GNU-format incremental backup"
 msgstr "處理舊型 GNU-格式之遞增備份"
 
-#: src/tar.c:422
+#: src/tar.c:423
 msgid "handle new GNU-format incremental backup"
 msgstr "處理新型 GNU-格式之遞增備份"
 
-#: src/tar.c:424
+#: src/tar.c:425
 msgid "dump level for created listed-incremental archive"
 msgstr ""
 
-#: src/tar.c:426
+#: src/tar.c:427
 msgid "do not exit with nonzero on unreadable files"
 msgstr "離開無法讀取的檔案時不要回傳非零的值"
 
-#: src/tar.c:428
+#: src/tar.c:429
 msgid ""
 "process only the NUMBERth occurrence of each file in the archive; this "
 "option is valid only in conjunction with one of the subcommands --delete, --"
@@ -1454,120 +1463,120 @@ msgstr ""
 "delete、--diff、--extract 或 --list 等次命令之一合併使用時才有效,而且要經由"
 "命令列或是 -T 選項來提供一個檔案序列。預設的數目是 1。"
 
-#: src/tar.c:434
+#: src/tar.c:435
 msgid "archive is seekable"
 msgstr "保存檔是可尋指的"
 
-#: src/tar.c:436
+#: src/tar.c:437
 #, fuzzy
 msgid "archive is not seekable"
 msgstr "保存檔是可尋指的"
 
-#: src/tar.c:438
+#: src/tar.c:439
 msgid "do not check device numbers when creating incremental archives"
 msgstr "不檢查裝置數量時建立遞增檔案"
 
-#: src/tar.c:441
+#: src/tar.c:442
 msgid "check device numbers when creating incremental archives (default)"
 msgstr "檢查裝置數量時建立遞增檔案 (預設)"
 
-#: src/tar.c:447
+#: src/tar.c:448
 msgid "Overwrite control:"
 msgstr "覆寫控制:"
 
-#: src/tar.c:450
+#: src/tar.c:451
 msgid "attempt to verify the archive after writing it"
 msgstr "嘗試在寫入之後驗證保存檔"
 
-#: src/tar.c:452
+#: src/tar.c:453
 msgid "remove files after adding them to the archive"
 msgstr "在加入檔案至保存檔之後移除它們"
 
-#: src/tar.c:454
+#: src/tar.c:455
 msgid "don't replace existing files when extracting"
 msgstr "解開時不要替換既有的檔案"
 
-#: src/tar.c:456
+#: src/tar.c:457
 msgid "don't replace existing files that are newer than their archive copies"
 msgstr "不要替換既有且比它們在保存檔中複本還新的檔案"
 
-#: src/tar.c:458
+#: src/tar.c:459
 msgid "overwrite existing files when extracting"
 msgstr "解開時覆寫既有檔案"
 
-#: src/tar.c:460
+#: src/tar.c:461
 msgid "remove each file prior to extracting over it"
 msgstr "在解開並覆寫檔案之前先移除它"
 
-#: src/tar.c:462
+#: src/tar.c:463
 msgid "empty hierarchies prior to extracting directory"
 msgstr "在解開目錄之前先清空階層結構"
 
-#: src/tar.c:464
+#: src/tar.c:465
 msgid "preserve metadata of existing directories"
 msgstr "保留既有目錄的後設資料"
 
-#: src/tar.c:466
+#: src/tar.c:467
 msgid "overwrite metadata of existing directories when extracting (default)"
 msgstr "解開時覆寫既有目錄的後設資料 (預設)"
 
-#: src/tar.c:472
+#: src/tar.c:473
 msgid "Select output stream:"
 msgstr "選取輸出串流:"
 
-#: src/tar.c:475
+#: src/tar.c:476
 msgid "extract files to standard output"
 msgstr "解開檔案到標準輸出"
 
-#: src/tar.c:476 src/tar.c:535 src/tar.c:537 tests/genfile.c:191
+#: src/tar.c:477 src/tar.c:536 src/tar.c:538 tests/genfile.c:190
 msgid "COMMAND"
 msgstr "命令"
 
-#: src/tar.c:477
+#: src/tar.c:478
 msgid "pipe extracted files to another program"
 msgstr "將解開的檔案管線引導到另外的程式"
 
-#: src/tar.c:479
+#: src/tar.c:480
 msgid "ignore exit codes of children"
 msgstr "忽略子進程的離開代碼"
 
-#: src/tar.c:481
+#: src/tar.c:482
 msgid "treat non-zero exit codes of children as error"
 msgstr "將子進程的非零離開代碼視為錯誤"
 
-#: src/tar.c:486
+#: src/tar.c:487
 msgid "Handling of file attributes:"
 msgstr "檔案屬性的處理:"
 
-#: src/tar.c:489
+#: src/tar.c:490
 msgid "force NAME as owner for added files"
 msgstr "強制以 NAME 做為加入檔案的擁有者"
 
-#: src/tar.c:491
+#: src/tar.c:492
 msgid "force NAME as group for added files"
 msgstr "強制以 NAME 做為加入檔案的群組"
 
-#: src/tar.c:492 src/tar.c:689
+#: src/tar.c:493 src/tar.c:690
 msgid "DATE-OR-FILE"
 msgstr "檔案的日期"
 
-#: src/tar.c:493
+#: src/tar.c:494
 msgid "set mtime for added files from DATE-OR-FILE"
 msgstr "將加入檔案的 mtime 設定為 DATE-OR-FILE"
 
-#: src/tar.c:494
+#: src/tar.c:495
 msgid "CHANGES"
 msgstr "變更"
 
-#: src/tar.c:495
+#: src/tar.c:496
 msgid "force (symbolic) mode CHANGES for added files"
 msgstr "強制將 (符號) 模式 CHANGES 用於已加入檔案"
 
-#: src/tar.c:497
+#: src/tar.c:498
 msgid "METHOD"
 msgstr "方法"
 
-#: src/tar.c:498
+#: src/tar.c:499
 msgid ""
 "preserve access times on dumped files, either by restoring the times after "
 "reading (METHOD='replace'; default) or by not setting the times in the first "
@@ -1576,183 +1585,183 @@ msgstr ""
 "保留傾印檔案的存取時間,若非由讀取之後的回復時間(方法=「replace」;預設),就"
 "是藉由原本不設定時間 (方法=「system」)"
 
-#: src/tar.c:502
+#: src/tar.c:503
 msgid "don't extract file modified time"
 msgstr "不要解開檔案的修改時間"
 
-#: src/tar.c:504
+#: src/tar.c:505
 #, fuzzy
 msgid ""
 "try extracting files with the same ownership as exists in the archive "
 "(default for superuser)"
 msgstr "嘗試以相同的擁有身分去解開檔案"
 
-#: src/tar.c:506
+#: src/tar.c:507
 #, fuzzy
 msgid "extract files as yourself (default for ordinary users)"
 msgstr "以自己的身分解開檔案"
 
-#: src/tar.c:508
+#: src/tar.c:509
 msgid "always use numbers for user/group names"
 msgstr "總是使用數字做為使用者/群組名稱"
 
-#: src/tar.c:510
+#: src/tar.c:511
 msgid "extract information about file permissions (default for superuser)"
 msgstr "解開檔案權限相關資訊 (預設用於超級使用者)"
 
-#: src/tar.c:514
+#: src/tar.c:515
 msgid ""
 "apply the user's umask when extracting permissions from the archive (default "
 "for ordinary users)"
 msgstr "從保存檔解開權限時套用使用者 umask (預設用於一般使用者)"
 
-#: src/tar.c:516
+#: src/tar.c:517
 msgid "sort names to extract to match archive"
 msgstr "解開時依名稱排序以符合保存檔"
 
-#: src/tar.c:519
+#: src/tar.c:520
 msgid "same as both -p and -s"
 msgstr "等同於指定 -p 與 -s"
 
-#: src/tar.c:521
+#: src/tar.c:522
 msgid ""
 "delay setting modification times and permissions of extracted directories "
 "until the end of extraction"
 msgstr "延遲設定解開目錄的修改時間和權限,直到解開結束"
 
-#: src/tar.c:524
+#: src/tar.c:525
 msgid "cancel the effect of --delay-directory-restore option"
 msgstr "取消 --delay-directory-restore 選項的效果"
 
-#: src/tar.c:529
+#: src/tar.c:530
 msgid "Device selection and switching:"
 msgstr "裝置選擇與切換:"
 
-#: src/tar.c:531
+#: src/tar.c:532
 msgid "ARCHIVE"
 msgstr "保存檔"
 
-#: src/tar.c:532
+#: src/tar.c:533
 msgid "use archive file or device ARCHIVE"
 msgstr "使用 ARCHIVE 檔案或 ARCHIVE 裝置"
 
-#: src/tar.c:534
+#: src/tar.c:535
 msgid "archive file is local even if it has a colon"
 msgstr "即使具有冒號,保存檔檔案仍位於本地端"
 
-#: src/tar.c:536
+#: src/tar.c:537
 msgid "use given rmt COMMAND instead of rmt"
 msgstr "使用給定的 rmt COMMAND 以代替 rmt"
 
-#: src/tar.c:538
+#: src/tar.c:539
 msgid "use remote COMMAND instead of rsh"
 msgstr "使用遠端 COMMAND 以代替 rsh"
 
-#: src/tar.c:542
+#: src/tar.c:543
 msgid "specify drive and density"
 msgstr "指定磁碟機與記錄密度"
 
-#: src/tar.c:556
+#: src/tar.c:557
 msgid "create/list/extract multi-volume archive"
 msgstr "建立/列表/解開 多重卷冊的保存檔"
 
-#: src/tar.c:558
+#: src/tar.c:559
 msgid "change tape after writing NUMBER x 1024 bytes"
 msgstr "在寫入 NUMBER x 1024 位元組之後更換磁帶"
 
-#: src/tar.c:560
+#: src/tar.c:561
 msgid "run script at end of each tape (implies -M)"
 msgstr "在每卷磁帶末端執行命令稿 (意指 -M)"
 
-#: src/tar.c:563
+#: src/tar.c:564
 msgid "use/update the volume number in FILE"
 msgstr "使用/更新 FILE 中的卷冊號碼"
 
-#: src/tar.c:568
+#: src/tar.c:569
 msgid "Device blocking:"
 msgstr "裝置分區:"
 
-#: src/tar.c:570
+#: src/tar.c:571
 msgid "BLOCKS"
 msgstr "區塊"
 
-#: src/tar.c:571
+#: src/tar.c:572
 msgid "BLOCKS x 512 bytes per record"
 msgstr "每筆記錄含有 BLOCKS x 512 位元組"
 
-#: src/tar.c:573
+#: src/tar.c:574
 msgid "NUMBER of bytes per record, multiple of 512"
 msgstr "每筆記錄 SIZE 位元組,為 512 的倍數"
 
-#: src/tar.c:575
+#: src/tar.c:576
 msgid "ignore zeroed blocks in archive (means EOF)"
 msgstr "忽略保存檔中零值的區塊 (意指 EOF)"
 
-#: src/tar.c:577
+#: src/tar.c:578
 msgid "reblock as we read (for 4.2BSD pipes)"
 msgstr "讀取時重新分區 (用於 4.2BSD 管線)"
 
-#: src/tar.c:582
+#: src/tar.c:583
 msgid "Archive format selection:"
 msgstr "保存檔格式選擇:"
 
-#: src/tar.c:584 tests/genfile.c:154
+#: src/tar.c:585 tests/genfile.c:153
 msgid "FORMAT"
 msgstr "格式"
 
-#: src/tar.c:585
+#: src/tar.c:586
 msgid "create archive of the given format"
 msgstr "以給定格式建立保存檔"
 
-#: src/tar.c:587
+#: src/tar.c:588
 msgid "FORMAT is one of the following:"
 msgstr "符合下列任一 FORMAT:"
 
-#: src/tar.c:588
+#: src/tar.c:589
 msgid "old V7 tar format"
 msgstr "舊式 V7 tar 格式"
 
-#: src/tar.c:591
+#: src/tar.c:592
 msgid "GNU format as per tar <= 1.12"
 msgstr "tar <= 1.12 之 GNU 格式"
 
-#: src/tar.c:593
+#: src/tar.c:594
 msgid "GNU tar 1.13.x format"
 msgstr "GNU tar 1.13.x 格式"
 
-#: src/tar.c:595
+#: src/tar.c:596
 msgid "POSIX 1003.1-1988 (ustar) format"
 msgstr "POSIX 1003.1-1988 (ustar) 格式"
 
-#: src/tar.c:597
+#: src/tar.c:598
 msgid "POSIX 1003.1-2001 (pax) format"
 msgstr "POSIX 1003.1-2001 (pax) 格式"
 
-#: src/tar.c:598
+#: src/tar.c:599
 msgid "same as pax"
 msgstr "等同 pax"
 
-#: src/tar.c:601
+#: src/tar.c:602
 msgid "same as --format=v7"
 msgstr "等同 --format=v7"
 
-#: src/tar.c:604
+#: src/tar.c:605
 msgid "same as --format=posix"
 msgstr "等同 --format=posix"
 
-#: src/tar.c:605
+#: src/tar.c:606
 msgid "keyword[[:]=value][,keyword[[:]=value]]..."
 msgstr "關鍵字[[:]=值][,關鍵字[[:]=值]…]"
 
-#: src/tar.c:606
+#: src/tar.c:607
 msgid "control pax keywords"
 msgstr "控制 pax 的關鍵字"
 
-#: src/tar.c:607
+#: src/tar.c:608
 msgid "TEXT"
 msgstr "文字"
 
-#: src/tar.c:608
+#: src/tar.c:609
 msgid ""
 "create archive with volume name TEXT; at list/extract time, use TEXT as a "
 "globbing pattern for volume name"
@@ -1760,165 +1769,165 @@ msgstr ""
 "以卷冊名稱 NAME 來建立保存檔。在列表/解開時,使用 TEXT 做為卷冊名稱的萬用比對"
 "式樣"
 
-#: src/tar.c:613
+#: src/tar.c:614
 msgid "Compression options:"
 msgstr "壓縮選項:"
 
-#: src/tar.c:615
+#: src/tar.c:616
 msgid "use archive suffix to determine the compression program"
 msgstr "利用保存檔字尾決定壓縮程式"
 
-#: src/tar.c:617
+#: src/tar.c:618
 msgid "do not use archive suffix to determine the compression program"
 msgstr "不利用保存檔字尾決定壓縮程式"
 
-#: src/tar.c:619
+#: src/tar.c:620
 msgid "PROG"
 msgstr "程式"
 
-#: src/tar.c:620
+#: src/tar.c:621
 msgid "filter through PROG (must accept -d)"
 msgstr "以 PROG 過濾處理 (必須接受 -d)"
 
-#: src/tar.c:636
+#: src/tar.c:637
 msgid "Local file selection:"
 msgstr "本機檔案選擇:"
 
-#: src/tar.c:639
+#: src/tar.c:640
 msgid "add given FILE to the archive (useful if its name starts with a dash)"
 msgstr "將給定的 FILE 加入保存檔 (如果它的名稱以減號開始時就很有用)"
 
-#: src/tar.c:640
+#: src/tar.c:641
 msgid "DIR"
 msgstr "目錄"
 
-#: src/tar.c:641
+#: src/tar.c:642
 msgid "change to directory DIR"
 msgstr "更改至目錄 DIR"
 
-#: src/tar.c:643
+#: src/tar.c:644
 msgid "get names to extract or create from FILE"
 msgstr "從 FILE 中取得要解開或建立的名稱"
 
-#: src/tar.c:645
+#: src/tar.c:646
 msgid "-T reads null-terminated names, disable -C"
 msgstr "-T 讀取零值終結的名稱,停用 -C"
 
-#: src/tar.c:647
+#: src/tar.c:648
 msgid "disable the effect of the previous --null option"
 msgstr "停用先前 --null 選項的效果"
 
-#: src/tar.c:649
+#: src/tar.c:650
 msgid "unquote filenames read with -T (default)"
 msgstr "去除以 -T 讀取的檔名引號 (預設)"
 
-#: src/tar.c:651
+#: src/tar.c:652
 msgid "do not unquote filenames read with -T"
 msgstr "不去除以 -T 讀取的檔名引號"
 
-#: src/tar.c:652 tests/genfile.c:137
+#: src/tar.c:653 tests/genfile.c:136
 msgid "PATTERN"
 msgstr "式樣"
 
-#: src/tar.c:653
+#: src/tar.c:654
 msgid "exclude files, given as a PATTERN"
 msgstr "排除給定式樣的檔案"
 
-#: src/tar.c:655
+#: src/tar.c:656
 msgid "exclude patterns listed in FILE"
 msgstr "排除 FILE 中所列出的式樣"
 
-#: src/tar.c:657
+#: src/tar.c:658
 msgid ""
 "exclude contents of directories containing CACHEDIR.TAG, except for the tag "
 "file itself"
 msgstr "排除包含 CACHEDIR.TAG 的目錄內容,除了該標記檔案本身"
 
-#: src/tar.c:660
+#: src/tar.c:661
 msgid "exclude everything under directories containing CACHEDIR.TAG"
 msgstr "排除包含 CACHEDIR.TAG 的目錄之下所有東西"
 
-#: src/tar.c:663
+#: src/tar.c:664
 msgid "exclude directories containing CACHEDIR.TAG"
 msgstr "排除包含 CACHEDIR.TAG 的目錄"
 
-#: src/tar.c:665
+#: src/tar.c:666
 msgid "exclude contents of directories containing FILE, except for FILE itself"
 msgstr "排除包含 FILE 的目錄內容,除了該檔案本身"
 
-#: src/tar.c:668
+#: src/tar.c:669
 msgid "exclude everything under directories containing FILE"
 msgstr "排除包含 FILE 的目錄之下所有東西"
 
-#: src/tar.c:670
+#: src/tar.c:671
 msgid "exclude directories containing FILE"
 msgstr "排除包含 FILE 的目錄"
 
-#: src/tar.c:672
+#: src/tar.c:673
 msgid "exclude version control system directories"
 msgstr "排除版本控制系統目錄"
 
-#: src/tar.c:674
+#: src/tar.c:675
 msgid "exclude backup and lock files"
 msgstr ""
 
-#: src/tar.c:676
+#: src/tar.c:677
 msgid "avoid descending automatically in directories"
 msgstr "避免自動在目錄中遞降"
 
-#: src/tar.c:678
+#: src/tar.c:679
 msgid "stay in local file system when creating archive"
 msgstr "建立保存檔時保持在本地檔案系統中"
 
-#: src/tar.c:680
+#: src/tar.c:681
 msgid "recurse into directories (default)"
 msgstr "遞迴進入目錄 (預設)"
 
-#: src/tar.c:682
+#: src/tar.c:683
 msgid "don't strip leading `/'s from file names"
 msgstr "不要從檔案名稱中截去前導的 '/'"
 
-#: src/tar.c:684
+#: src/tar.c:685
 msgid "follow symlinks; archive and dump the files they point to"
 msgstr "跟隨符號連結;保存和傾印它們所指涉的檔案"
 
-#: src/tar.c:686
+#: src/tar.c:687
 msgid "follow hard links; archive and dump the files they refer to"
 msgstr "跟隨硬式連結;保存和傾印它們所參考的檔案"
 
-#: src/tar.c:687
+#: src/tar.c:688
 msgid "MEMBER-NAME"
 msgstr "成員-名稱"
 
-#: src/tar.c:688
+#: src/tar.c:689
 msgid "begin at member MEMBER-NAME in the archive"
 msgstr "從保存檔中名為 MEMBER-NAME 的成員開始"
 
-#: src/tar.c:690
+#: src/tar.c:691
 msgid "only store files newer than DATE-OR-FILE"
 msgstr "只儲存比 DATE-OF-FILE 還新的檔案"
 
-#: src/tar.c:692
+#: src/tar.c:693
 msgid "DATE"
 msgstr "日期"
 
-#: src/tar.c:693
+#: src/tar.c:694
 msgid "compare date and time when data changed only"
 msgstr "只有當資料變更時才比較日期和時間"
 
-#: src/tar.c:694
+#: src/tar.c:695
 msgid "CONTROL"
 msgstr "控制"
 
-#: src/tar.c:695
+#: src/tar.c:696
 msgid "backup before removal, choose version CONTROL"
 msgstr "移除之前先備份,選擇版本 CONTROL"
 
-#: src/tar.c:696 src/tar.c:773 src/tar.c:775 tests/genfile.c:170
+#: src/tar.c:697 src/tar.c:776 src/tar.c:778 tests/genfile.c:169
 msgid "STRING"
 msgstr "字串"
 
-#: src/tar.c:697
+#: src/tar.c:698
 msgid ""
 "backup before removal, override usual suffix ('~' unless overridden by "
 "environment variable SIMPLE_BACKUP_SUFFIX)"
@@ -1926,96 +1935,96 @@ msgstr ""
 "移除之前先備份並覆寫常用後置文字 (「~」除非被環境變數 SIMPLE_BACKUP_SUFFIX 所"
 "蓋過)"
 
-#: src/tar.c:702
+#: src/tar.c:703
 msgid "File name transformations:"
 msgstr "檔案名稱變換:"
 
-#: src/tar.c:704
+#: src/tar.c:705
 msgid "strip NUMBER leading components from file names on extraction"
 msgstr "從檔案名稱中截去以 NUMBER 為首的成分"
 
-#: src/tar.c:706
+#: src/tar.c:707
 msgid "EXPRESSION"
 msgstr "表示式"
 
-#: src/tar.c:707
+#: src/tar.c:708
 msgid "use sed replace EXPRESSION to transform file names"
 msgstr "利用 sed 將 EXPRESSION 替代為變換檔案名稱"
 
-#: src/tar.c:713
+#: src/tar.c:714
 msgid "File name matching options (affect both exclude and include patterns):"
 msgstr "檔案名稱吻合選項 (同時影響排除和包含式樣同者):"
 
-#: src/tar.c:716
+#: src/tar.c:717
 msgid "ignore case"
 msgstr "忽略大小寫"
 
-#: src/tar.c:718
+#: src/tar.c:719
 msgid "patterns match file name start"
 msgstr "吻合檔案名稱開頭的式樣"
 
-#: src/tar.c:720
+#: src/tar.c:721
 msgid "patterns match after any `/' (default for exclusion)"
 msgstr "式樣吻合任何「/」之後的式樣 (預設排除)"
 
-#: src/tar.c:722
+#: src/tar.c:723
 msgid "case sensitive matching (default)"
 msgstr "大小寫需相符的吻合 (預設)"
 
-#: src/tar.c:724
+#: src/tar.c:725
 msgid "use wildcards (default for exclusion)"
 msgstr "使用萬用字元 (預設排除)"
 
-#: src/tar.c:726
+#: src/tar.c:727
 msgid "verbatim string matching"
 msgstr "逐字進行吻合"
 
-#: src/tar.c:728
+#: src/tar.c:729
 msgid "wildcards do not match `/'"
 msgstr "萬用字元不會吻合「/」"
 
-#: src/tar.c:730
+#: src/tar.c:731
 msgid "wildcards match `/' (default for exclusion)"
 msgstr "萬用字元會吻合「/」(預設排除)"
 
-#: src/tar.c:735
+#: src/tar.c:736
 msgid "Informative output:"
 msgstr "富含資訊的輸出:"
 
-#: src/tar.c:738
+#: src/tar.c:739
 msgid "verbosely list files processed"
 msgstr "詳細列出處理過的檔案"
 
-#: src/tar.c:739
+#: src/tar.c:740
 msgid "KEYWORD"
 msgstr ""
 
-#: src/tar.c:740
+#: src/tar.c:741
 #, fuzzy
 msgid "warning control"
 msgstr "覆寫控制:"
 
-#: src/tar.c:742
+#: src/tar.c:743
 msgid "display progress messages every NUMBERth record (default 10)"
 msgstr "每幾項記錄顯示一次進度訊息 (預設 10)"
 
-#: src/tar.c:744
+#: src/tar.c:745
 msgid "ACTION"
 msgstr "動作"
 
-#: src/tar.c:745
+#: src/tar.c:746
 msgid "execute ACTION on each checkpoint"
 msgstr "於每個查核點執行 ACTION"
 
-#: src/tar.c:748
+#: src/tar.c:749
 msgid "print a message if not all links are dumped"
 msgstr "如果並非所有連結都被傾印則印出訊息"
 
-#: src/tar.c:749
+#: src/tar.c:750
 msgid "SIGNAL"
 msgstr "信號"
 
-#: src/tar.c:750
+#: src/tar.c:751
 msgid ""
 "print total bytes after processing the archive; with an argument - print "
 "total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, "
@@ -2026,120 +2035,125 @@ msgstr ""
 "許的信號是:SIGHUP、SIGQUIT、SIGINT、SIGUSR1 和 SIGUSR2;不具 SIG 前綴的名稱"
 "也是可接受的"
 
-#: src/tar.c:755
-msgid "print file modification dates in UTC"
+#: src/tar.c:756
+#, fuzzy
+msgid "print file modification times in UTC"
 msgstr "以 UTC 格式印出檔案修改日期"
 
-#: src/tar.c:757
+#: src/tar.c:758
+msgid "print file time to its full resolution"
+msgstr ""
+
+#: src/tar.c:760
 msgid "send verbose output to FILE"
 msgstr "將詳細輸出送至 FILE"
 
-#: src/tar.c:759
+#: src/tar.c:762
 msgid "show block number within archive with each message"
 msgstr "每則訊息附帶顯示在保存檔中的區塊號碼"
 
-#: src/tar.c:761
+#: src/tar.c:764
 msgid "ask for confirmation for every action"
 msgstr "任何動作都要求確認"
 
-#: src/tar.c:764
+#: src/tar.c:767
 msgid "show tar defaults"
 msgstr "顯示 tar 預設值"
 
-#: src/tar.c:766
+#: src/tar.c:769
 msgid ""
 "when listing or extracting, list each directory that does not match search "
 "criteria"
 msgstr "當表列或解開時,列出每一個不符合搜尋條件的目錄"
 
-#: src/tar.c:768
+#: src/tar.c:771
 msgid "show file or archive names after transformation"
 msgstr "顯示變換之後的檔案或保存檔名稱"
 
-#: src/tar.c:771
+#: src/tar.c:774
 msgid "STYLE"
 msgstr "樣式"
 
-#: src/tar.c:772
+#: src/tar.c:775
 msgid "set name quoting style; see below for valid STYLE values"
 msgstr "設定名稱引號樣式;參看下列的有效樣式值"
 
-#: src/tar.c:774
+#: src/tar.c:777
 msgid "additionally quote characters from STRING"
 msgstr "來自 STRING 的額外引號字元"
 
-#: src/tar.c:776
+#: src/tar.c:779
 msgid "disable quoting for characters from STRING"
 msgstr "停用來自字串的引號字元"
 
-#: src/tar.c:781
+#: src/tar.c:784
 msgid "Compatibility options:"
 msgstr "相容選項:"
 
-#: src/tar.c:784
+#: src/tar.c:787
 msgid ""
 "when creating, same as --old-archive; when extracting, same as --no-same-"
 "owner"
 msgstr "當建立時,等同於 --old-archive。當解開時,等同於 --no-same-owner"
 
-#: src/tar.c:789
+#: src/tar.c:792
 msgid "Other options:"
 msgstr "其他選項:"
 
-#: src/tar.c:792
+#: src/tar.c:795
 msgid "disable use of some potentially harmful options"
 msgstr "停用某些潛在有害的選項"
 
-#: src/tar.c:927
+#: src/tar.c:930
 #, fuzzy
 msgid "You may not specify more than one `-Acdtrux' or `--test-label' option"
 msgstr "不可指定「-Acdtrux」當中多於一個的選項"
 
-#: src/tar.c:937
+#: src/tar.c:940
 msgid "Conflicting compression options"
 msgstr "互相抵觸的壓縮選項"
 
-#: src/tar.c:993
+#: src/tar.c:996
 #, c-format
 msgid "Unknown signal name: %s"
 msgstr "不明的信號名稱:%s"
 
-#: src/tar.c:1017
+#: src/tar.c:1020
 msgid "Date sample file not found"
 msgstr "找不到日期範例檔案"
 
-#: src/tar.c:1025
+#: src/tar.c:1028
 #, c-format
 msgid "Substituting %s for unknown date format %s"
 msgstr "以 %s 代替不明的日期格式 %s"
 
-#: src/tar.c:1054
+#: src/tar.c:1057
 #, c-format
 msgid "Option %s: Treating date `%s' as %s"
 msgstr "選項 %1$s: 以 %3$s 格式來處理日期「%2$s」"
 
-#: src/tar.c:1132
+#: src/tar.c:1135
 #, c-format
 msgid "%s: file list already read"
 msgstr "%s:已經讀取檔案清單"
 
-#: src/tar.c:1198
+#: src/tar.c:1201
 #, c-format
 msgid "%s: file name read contains nul character"
 msgstr "%s:所讀檔案名稱含有空值字元"
 
-#: src/tar.c:1265 src/tar.c:1269 src/tar.c:1273 src/tar.c:1277 src/tar.c:1281
-#: src/tar.c:1285
+#: src/tar.c:1268 src/tar.c:1272 src/tar.c:1276 src/tar.c:1280 src/tar.c:1284
+#: src/tar.c:1288
 #, fuzzy, c-format
 msgid "filter the archive through %s"
 msgstr "保存檔以 xz 過濾處理"
 
-#: src/tar.c:1290
+#: src/tar.c:1296
 #, fuzzy
 msgid "Valid arguments for the --quoting-style option are:"
 msgstr "用於 --quoting-style 選項的有效引數為:"
 
-#: src/tar.c:1294
+#: src/tar.c:1300
 msgid ""
 "\n"
 "*This* tar defaults to:\n"
@@ -2147,53 +2161,53 @@ msgstr ""
 "\n"
 "*這個* tar 預設為:\n"
 
-#: src/tar.c:1393
+#: src/tar.c:1402
 msgid "Invalid blocking factor"
 msgstr "無效的分區因子"
 
-#: src/tar.c:1500
+#: src/tar.c:1515
 msgid "Invalid tape length"
 msgstr "無效的磁帶長度"
 
-#: src/tar.c:1511
+#: src/tar.c:1529
 #, fuzzy
 msgid "Invalid incremental level value"
 msgstr "不當的遞增檔案格式"
 
-#: src/tar.c:1557
+#: src/tar.c:1575
 msgid "More than one threshold date"
 msgstr "一個以上的限定日期"
 
-#: src/tar.c:1612 src/tar.c:1615
+#: src/tar.c:1630 src/tar.c:1633
 msgid "Invalid sparse version value"
 msgstr "無效的稀疏版本值"
 
-#: src/tar.c:1700
+#: src/tar.c:1718
 msgid "--atime-preserve='system' is not supported on this platform"
 msgstr "--atime-preserve='system' 於這個平台未被支援"
 
-#: src/tar.c:1725
+#: src/tar.c:1743
 msgid "--checkpoint value is not an integer"
 msgstr "--checkpoint 值不是整數"
 
-#: src/tar.c:1830
+#: src/tar.c:1848
 #, fuzzy
 msgid "Invalid group"
 msgstr "%s:無效的群組"
 
-#: src/tar.c:1837
+#: src/tar.c:1855
 msgid "Invalid mode given on option"
 msgstr "選項中的模式無效"
 
-#: src/tar.c:1894
+#: src/tar.c:1912
 msgid "Invalid number"
 msgstr "無效的號碼"
 
-#: src/tar.c:1916
+#: src/tar.c:1934
 msgid "Invalid owner"
 msgstr "無效的擁有者"
 
-#: src/tar.c:1946
+#: src/tar.c:1964
 msgid ""
 "The --preserve option is deprecated, use --preserve-permissions --preserve-"
 "order instead"
@@ -2201,116 +2215,116 @@ msgstr ""
 "--preserve 選項不宜再用,請以 --preserve-permissions --preserve-order 做為替"
 "代"
 
-#: src/tar.c:1956
+#: src/tar.c:1975
 msgid "Invalid record size"
 msgstr "無效的記錄大小"
 
-#: src/tar.c:1959
+#: src/tar.c:1978
 #, c-format
 msgid "Record size must be a multiple of %d."
 msgstr "記錄大小必須是 %d 的倍數。"
 
-#: src/tar.c:2000
+#: src/tar.c:2019
 msgid "Invalid number of elements"
 msgstr "無效的元素號碼"
 
-#: src/tar.c:2020
+#: src/tar.c:2039
 msgid "Only one --to-command option allowed"
 msgstr "只允許一個 --to-command 選項"
 
-#: src/tar.c:2100
+#: src/tar.c:2119
 #, c-format
 msgid "Malformed density argument: %s"
 msgstr "異常的密度引數:%s"
 
-#: src/tar.c:2126
+#: src/tar.c:2145
 #, c-format
 msgid "Unknown density: `%c'"
 msgstr "不明的密度:「%c」"
 
-#: src/tar.c:2143
+#: src/tar.c:2162
 #, c-format
 msgid "Options `-[0-7][lmh]' not supported by *this* tar"
 msgstr "此版本的 tar 不支援「-[0-7][ lmh]」選項"
 
-#: src/tar.c:2156
+#: src/tar.c:2175
 msgid "[FILE]..."
 msgstr "[FILE]…"
 
-#: src/tar.c:2274
+#: src/tar.c:2293
 #, c-format
 msgid "Old option `%c' requires an argument."
 msgstr "舊的選項「%c」需要一個引數。"
 
-#: src/tar.c:2355
+#: src/tar.c:2374
 msgid "--occurrence is meaningless without a file list"
 msgstr "若無檔案列表,--occurrence 便不具意義"
 
-#: src/tar.c:2361
+#: src/tar.c:2380
 msgid "--occurrence cannot be used in the requested operation mode"
 msgstr "--occurrence 無法於要求的作業模式中使用"
 
-#: src/tar.c:2379
+#: src/tar.c:2398
 msgid "Multiple archive files require `-M' option"
 msgstr "指定多個保存檔時需要「-M」選項"
 
-#: src/tar.c:2384
+#: src/tar.c:2403
 msgid "Cannot combine --listed-incremental with --newer"
 msgstr "無法同時使用 --listed-incremental 及 --newer"
 
-#: src/tar.c:2387
+#: src/tar.c:2406
 #, fuzzy
 msgid "--level is meaningless without --listed-incremental"
 msgstr "--preserve-order 與 --listed-incremental 不相容"
 
-#: src/tar.c:2404
+#: src/tar.c:2423
 #, c-format
 msgid "%s: Volume label is too long (limit is %lu byte)"
 msgid_plural "%s: Volume label is too long (limit is %lu bytes)"
 msgstr[0] "%s:卷冊標籤太長 (限制為 %lu 位元組)"
 
-#: src/tar.c:2417
+#: src/tar.c:2436
 msgid "Cannot verify multi-volume archives"
 msgstr "無法驗證多重卷冊的保存檔"
 
-#: src/tar.c:2419
+#: src/tar.c:2438
 msgid "Cannot verify compressed archives"
 msgstr "無法驗證壓縮過的保存檔"
 
-#: src/tar.c:2425
+#: src/tar.c:2444
 msgid "Cannot use multi-volume compressed archives"
 msgstr "無法使用多重卷冊的壓縮保存檔"
 
-#: src/tar.c:2431
+#: src/tar.c:2450
 msgid "Cannot concatenate compressed archives"
 msgstr "無法串接壓縮過的檔案"
 
-#: src/tar.c:2443
+#: src/tar.c:2462
 msgid "--pax-option can be used only on POSIX archives"
 msgstr "--pax-option 只能用於 POSIX 保存檔"
 
-#: src/tar.c:2461
+#: src/tar.c:2492
 msgid "Volume length cannot be less than record size"
 msgstr "卷冊長度無法少於記錄大小"
 
-#: src/tar.c:2464
+#: src/tar.c:2495
 msgid "--preserve-order is not compatible with --listed-incremental"
 msgstr "--preserve-order 與 --listed-incremental 不相容"
 
-#: src/tar.c:2475
+#: src/tar.c:2506
 msgid "Cowardly refusing to create an empty archive"
 msgstr "低調拒絕建立空白的保存檔"
 
-#: src/tar.c:2501
+#: src/tar.c:2532
 msgid "Options `-Aru' are incompatible with `-f -'"
 msgstr "「-Aru」與「-f -」選項不相容"
 
-#: src/tar.c:2592
+#: src/tar.c:2621
 #, fuzzy
 msgid "You must specify one of the `-Acdtrux' or `--test-label'  options"
 msgstr "必須指定「-Acdtrux」選項的其中一個"
 
-#: src/tar.c:2646
+#: src/tar.c:2675
 #, c-format
 msgid "Exiting with failure status due to previous errors"
 msgstr "由於先前錯誤而以失敗狀態離開"
@@ -2321,84 +2335,84 @@ msgid "%s: File shrank by %s byte"
 msgid_plural "%s: File shrank by %s bytes"
 msgstr[0] "%s:檔案縮減了 %s 位元組"
 
-#: src/xheader.c:163
+#: src/xheader.c:164
 #, c-format
 msgid "Keyword %s is unknown or not yet implemented"
 msgstr "關鍵字 %s 為未知或尚未實作"
 
-#: src/xheader.c:173
+#: src/xheader.c:174
 #, fuzzy
 msgid "Time stamp is out of allowed range"
 msgstr "號碼超出允許的範圍:%s"
 
-#: src/xheader.c:204
+#: src/xheader.c:205
 #, c-format
 msgid "Pattern %s cannot be used"
 msgstr "式樣 %s 無法使用"
 
-#: src/xheader.c:218
+#: src/xheader.c:219
 #, c-format
 msgid "Keyword %s cannot be overridden"
 msgstr "關鍵字 %s 無法被蓋過"
 
-#: src/xheader.c:541
+#: src/xheader.c:542
 msgid "Malformed extended header: missing length"
 msgstr "異常的擴充標頭:長度缺少"
 
-#: src/xheader.c:549
+#: src/xheader.c:550
 msgid "Extended header length is out of allowed range"
 msgstr "擴充標頭長度超出允許範圍"
 
-#: src/xheader.c:556
+#: src/xheader.c:557
 #, c-format
 msgid "Extended header length %*s is out of range"
 msgstr "擴充標頭長度 %*s 超出範圍"
 
-#: src/xheader.c:568
+#: src/xheader.c:569
 msgid "Malformed extended header: missing blank after length"
 msgstr "異常的擴充標頭:在長度之後缺少空白"
 
-#: src/xheader.c:576
+#: src/xheader.c:577
 msgid "Malformed extended header: missing equal sign"
 msgstr "異常的擴充標頭:缺少等號"
 
-#: src/xheader.c:582
+#: src/xheader.c:583
 msgid "Malformed extended header: missing newline"
 msgstr "異常的擴充標頭:缺少新列"
 
-#: src/xheader.c:620
+#: src/xheader.c:621
 #, c-format
 msgid "Ignoring unknown extended header keyword `%s'"
 msgstr "忽略不明擴充標頭關鍵字「%s」"
 
-#: src/xheader.c:830
+#: src/xheader.c:831
 #, c-format
 msgid "Generated keyword/value pair is too long (keyword=%s, length=%s)"
 msgstr "產生的關鍵字/值對太長 (關鍵字=%s,長度=%s)"
 
 #. TRANSLATORS: The first %s is the pax extended header keyword
 #. (atime, gid, etc.).
-#: src/xheader.c:862
+#: src/xheader.c:863
 #, c-format
 msgid "Extended header %s=%s is out of range %s..%s"
 msgstr "擴充標頭 %s=%s 超出範圍 %s..%s"
 
-#: src/xheader.c:993 src/xheader.c:1023 src/xheader.c:1337
+#: src/xheader.c:994 src/xheader.c:1024 src/xheader.c:1338
 #, c-format
 msgid "Malformed extended header: invalid %s=%s"
 msgstr "異常的擴充標頭:無效的 %s=%s"
 
-#: src/xheader.c:1290 src/xheader.c:1315 src/xheader.c:1365
+#: src/xheader.c:1291 src/xheader.c:1316 src/xheader.c:1366
 #, c-format
 msgid "Malformed extended header: excess %s=%s"
 msgstr "異常的擴充標頭:過剩的 %s=%s"
 
-#: src/xheader.c:1378
+#: src/xheader.c:1379
 #, c-format
 msgid "Malformed extended header: invalid %s: unexpected delimiter %c"
 msgstr "異常的擴充標頭:無效的 %s:未預期的分隔符號 %c"
 
-#: src/xheader.c:1388
+#: src/xheader.c:1389
 #, c-format
 msgid "Malformed extended header: invalid %s: odd number of values"
 msgstr "異常的擴充標頭:無效的 %s:奇怪的數值數量"
@@ -2439,7 +2453,7 @@ msgstr "寫入的查核點 %u"
 msgid "Read checkpoint %u"
 msgstr "讀取的查核點 %u"
 
-#: tests/genfile.c:112
+#: tests/genfile.c:111
 msgid ""
 "genfile manipulates data files for GNU paxutils test suite.\n"
 "OPTIONS are:\n"
@@ -2447,68 +2461,68 @@ msgstr ""
 "genfile 在 GNU paxutils 測試套件中用於操控資料檔案。\n"
 "選項:\n"
 
-#: tests/genfile.c:128
+#: tests/genfile.c:127
 msgid "File creation options:"
 msgstr "檔案建立選項:"
 
-#: tests/genfile.c:129 tests/genfile.c:140
+#: tests/genfile.c:128 tests/genfile.c:139
 msgid "SIZE"
 msgstr "大小"
 
-#: tests/genfile.c:130
+#: tests/genfile.c:129
 msgid "Create file of the given SIZE"
 msgstr "以給定 SIZE 建立檔案。"
 
-#: tests/genfile.c:132
+#: tests/genfile.c:131
 msgid "Write to file NAME, instead of standard output"
 msgstr "寫入檔案 NAME,以代替標準輸出"
 
-#: tests/genfile.c:134
+#: tests/genfile.c:133
 msgid "Read file names from FILE"
 msgstr "從 FILE 讀取檔案名稱"
 
-#: tests/genfile.c:136
+#: tests/genfile.c:135
 msgid "-T reads null-terminated names"
 msgstr "-T 讀取零值終結的名稱"
 
-#: tests/genfile.c:138
+#: tests/genfile.c:137
 msgid "Fill the file with the given PATTERN. PATTERN is 'default' or 'zeros'"
 msgstr "以給定 PATTERN 填充檔案。PATTERN 是「default」或「zeros」"
 
-#: tests/genfile.c:141
+#: tests/genfile.c:140
 msgid "Size of a block for sparse file"
 msgstr "用於稀疏檔案的區塊大小"
 
-#: tests/genfile.c:143
+#: tests/genfile.c:142
 msgid "Generate sparse file. Rest of the command line gives the file map."
 msgstr "產生稀疏檔案。命令列的其餘部份給出檔案對映。"
 
-#: tests/genfile.c:145
+#: tests/genfile.c:144
 msgid "OFFSET"
 msgstr "偏移值"
 
-#: tests/genfile.c:146
+#: tests/genfile.c:145
 msgid "Seek to the given offset before writing data"
 msgstr "寫入資料之前尋指給定的偏移值"
 
-#: tests/genfile.c:152
+#: tests/genfile.c:151
 msgid "File statistics options:"
 msgstr "檔案統計選項:"
 
-#: tests/genfile.c:155
+#: tests/genfile.c:154
 msgid "Print contents of struct stat for each given file. Default FORMAT is: "
 msgstr "列印每個給定檔案的結構狀態內容。預設 FORMAT 為:"
 
-#: tests/genfile.c:162
+#: tests/genfile.c:161
 msgid "Synchronous execution options:"
 msgstr "同步的執行選項:"
 
-#: tests/genfile.c:164
+#: tests/genfile.c:163
 #, fuzzy
 msgid "OPTION"
 msgstr " [選項…]"
 
-#: tests/genfile.c:165
+#: tests/genfile.c:164
 #, fuzzy
 msgid ""
 "Execute ARGS. Useful with --checkpoint and one of --cut, --append, --touch, "
@@ -2517,19 +2531,19 @@ msgstr ""
 "執行給定的 COMMAND。同時與 --checkpoint 和 --cut, --append, --touch 之一使用"
 "會有作用"
 
-#: tests/genfile.c:168
+#: tests/genfile.c:167
 msgid "Perform given action (see below) upon reaching checkpoint NUMBER"
 msgstr "當達到查核點 NUMBER 時實行給定動作 (參看以下)"
 
-#: tests/genfile.c:171
+#: tests/genfile.c:170
 msgid "Set date for next --touch option"
 msgstr "設定後續 --touch 選項所需的日期"
 
-#: tests/genfile.c:174
+#: tests/genfile.c:173
 msgid "Display executed checkpoints and exit status of COMMAND"
 msgstr "顯示已執行的查核點以及 COMMAND 的離開狀態"
 
-#: tests/genfile.c:179
+#: tests/genfile.c:178
 msgid ""
 "Synchronous execution actions. These are executed when checkpoint number "
 "given by --checkpoint option is reached."
@@ -2537,150 +2551,164 @@ msgstr ""
 "同步的執行動作。當到達由 --checkpoint 選項所給定的查核點編號時,這些動作會被"
 "執行。"
 
-#: tests/genfile.c:182
+#: tests/genfile.c:181
 msgid ""
 "Truncate FILE to the size specified by previous --length option (or 0, if it "
 "is not given)"
 msgstr "依先前 --length 選項指定的大小來截斷檔案 (如果它未被給定就是 0)"
 
-#: tests/genfile.c:186
+#: tests/genfile.c:185
 msgid "Append SIZE bytes to FILE. SIZE is given by previous --length option."
 msgstr "附加 SIZE 位元組到 FILE。SIZE 是由先前 --length 選項所給定。"
 
-#: tests/genfile.c:189
+#: tests/genfile.c:188
 msgid "Update the access and modification times of FILE"
 msgstr "更新檔案的存取和修改時間"
 
-#: tests/genfile.c:192
+#: tests/genfile.c:191
 msgid "Execute COMMAND"
 msgstr "執行 COMMAND"
 
-#: tests/genfile.c:195
+#: tests/genfile.c:194
 msgid "Unlink FILE"
 msgstr ""
 
-#: tests/genfile.c:245
+#: tests/genfile.c:244
 #, c-format
 msgid "Invalid size: %s"
 msgstr "無效的大小:%s"
 
-#: tests/genfile.c:250
+#: tests/genfile.c:249
 #, c-format
 msgid "Number out of allowed range: %s"
 msgstr "號碼超出允許的範圍:%s"
 
-#: tests/genfile.c:253
+#: tests/genfile.c:252
 #, c-format
 msgid "Negative size: %s"
 msgstr "負值大小:%s"
 
-#: tests/genfile.c:266 tests/genfile.c:568
+#: tests/genfile.c:265 tests/genfile.c:567
 #, c-format
 msgid "stat(%s) failed"
 msgstr "狀態(%s) 失敗"
 
-#: tests/genfile.c:269
+#: tests/genfile.c:268
 #, c-format
 msgid "requested file length %lu, actual %lu"
 msgstr "要求檔案長度 %lu,實際則是 %lu"
 
-#: tests/genfile.c:273
+#: tests/genfile.c:272
 #, c-format
 msgid "created file is not sparse"
 msgstr "建立的不是稀疏檔案"
 
-#: tests/genfile.c:362
+#: tests/genfile.c:361
 #, c-format
 msgid "Error parsing number near `%s'"
 msgstr "剖析數字接近「%s」時發生錯誤"
 
-#: tests/genfile.c:368
+#: tests/genfile.c:367
 #, c-format
 msgid "Unknown date format"
 msgstr "不明的日期格式"
 
-#: tests/genfile.c:392
+#: tests/genfile.c:391
 msgid "[ARGS...]"
 msgstr "[引數…]"
 
-#: tests/genfile.c:429 tests/genfile.c:469 tests/genfile.c:522
-#: tests/genfile.c:672 tests/genfile.c:686
+#: tests/genfile.c:428 tests/genfile.c:468 tests/genfile.c:521
+#: tests/genfile.c:671 tests/genfile.c:685
 #, c-format
 msgid "cannot open `%s'"
 msgstr "無法開啟「%s」"
 
-#: tests/genfile.c:435
+#: tests/genfile.c:434
 msgid "cannot seek"
 msgstr "無法尋指"
 
-#: tests/genfile.c:452
+#: tests/genfile.c:451
 #, c-format
 msgid "file name contains null character"
 msgstr "檔案名稱含有空字元"
 
-#: tests/genfile.c:517
+#: tests/genfile.c:516
 #, c-format
 msgid "cannot generate sparse files on standard output, use --file option"
 msgstr "無法於標準輸出產生稀疏檔案,使用 --file 選項"
 
-#: tests/genfile.c:595
+#: tests/genfile.c:594
 #, c-format
 msgid "incorrect mask (near `%s')"
 msgstr "不正確遮罩 (接近「%s」)"
 
-#: tests/genfile.c:601 tests/genfile.c:634
+#: tests/genfile.c:600 tests/genfile.c:633
 #, c-format
 msgid "Unknown field `%s'"
 msgstr "不明的欄位「%s」"
 
-#: tests/genfile.c:661
+#: tests/genfile.c:660
 #, c-format
 msgid "cannot set time on `%s'"
 msgstr "無法設定時間為「%s」"
 
-#: tests/genfile.c:700
+#: tests/genfile.c:699
 #, fuzzy, c-format
 msgid "cannot unlink `%s'"
 msgstr "無法開啟「%s」"
 
-#: tests/genfile.c:826
+#: tests/genfile.c:825
 #, c-format
 msgid "Command exited successfully\n"
 msgstr "成功離開命令\n"
 
-#: tests/genfile.c:828
+#: tests/genfile.c:827
 #, c-format
 msgid "Command failed with status %d\n"
 msgstr "命令以狀態 %d 失敗\n"
 
-#: tests/genfile.c:832
+#: tests/genfile.c:831
 #, c-format
 msgid "Command terminated on signal %d\n"
 msgstr "命令於信號 %d 終止\n"
 
-#: tests/genfile.c:834
+#: tests/genfile.c:833
 #, c-format
 msgid "Command stopped on signal %d\n"
 msgstr "命令於信號 %d 停止\n"
 
-#: tests/genfile.c:837
+#: tests/genfile.c:836
 #, c-format
 msgid "Command dumped core\n"
 msgstr "命令傾印核心\n"
 
-#: tests/genfile.c:840
+#: tests/genfile.c:839
 #, c-format
 msgid "Command terminated\n"
 msgstr "命令終止\n"
 
-#: tests/genfile.c:872
+#: tests/genfile.c:871
 #, c-format
 msgid "--stat requires file names"
 msgstr "--stat 需要檔案名稱"
 
+#, fuzzy
+#~ msgid "Cannot restore working directory"
+#~ msgstr "無法儲存工作目錄"
+
+#, fuzzy
+#~ msgid "Cannot resolve hostname %s"
+#~ msgstr "無法將 %s 重新命名為 %s"
+
+#~ msgid "suppress this warning."
+#~ msgstr "抑制這個警告。"
+
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s:不合法的選項 -- %c\n"
 
+#~ msgid "Reading %s\n"
+#~ msgstr "正在讀取 %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "Report bugs to <%s>.\n"
@@ -2688,15 +2716,6 @@ msgstr "--stat 需要檔案名稱"
 #~ "\n"
 #~ "將錯誤回報給 <%s>。\n"
 
-#~ msgid "Reading %s\n"
-#~ msgstr "正在讀取 %s\n"
-
-#~ msgid "Error is not recoverable: exiting now"
-#~ msgstr "發生無法復原的錯誤:立刻離開"
-
-#~ msgid "suppress this warning."
-#~ msgstr "抑制這個警告。"
-
 #~ msgid "filter the archive through bzip2"
 #~ msgstr "保存檔以 bzip2 過濾處理"
 
@@ -2745,3 +2764,6 @@ msgstr "--stat 需要檔案名稱"
 
 #~ msgid "Premature end of file"
 #~ msgstr "檔案突然結束"
+
+#~ msgid "Error is not recoverable: exiting now"
+#~ msgstr "發生無法復原的錯誤:立刻離開"
index de66f7498d8fdf1042f40728b062d13a4566225f..93f19896bb8d4b16859e9e4f0b52db69ebc953fa 100644 (file)
@@ -40,11 +40,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -57,17 +57,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -77,54 +77,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -179,6 +186,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -276,6 +284,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -331,10 +340,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -359,6 +370,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -375,11 +387,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -397,20 +414,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -418,7 +438,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -434,12 +453,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -451,25 +473,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -479,18 +505,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -507,6 +536,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -523,8 +553,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -539,6 +572,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -557,6 +591,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -623,21 +659,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -660,6 +699,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -667,6 +707,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -692,7 +733,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -704,17 +747,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -784,6 +831,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
index a3897eb56f0fc06d91417d8d92ff373d4c44a60f..fff83b87a57402e048b0cded6732de0d9f84fbd3 100644 (file)
--- a/rmt/rmt.c
+++ b/rmt/rmt.c
@@ -61,7 +61,7 @@ FILE *dbgout;
        }                                       \
     }                                          \
   while (0)
-      
+
 
 \f
 static void
@@ -74,13 +74,13 @@ trimnl (char *str)
        str[len-1] = 0;
     }
 }
-  
+
 
 \f
 char *input_buf_ptr = NULL;
 size_t input_buf_size = 0;
 
-char *
+static char *
 rmt_read (void)
 {
   ssize_t rc = getline (&input_buf_ptr, &input_buf_size, stdin);
@@ -94,32 +94,34 @@ rmt_read (void)
   return NULL;
 }
 
-void
+static void
 rmt_write (const char *fmt, ...)
 {
   va_list ap;
   va_start (ap, fmt);
   vfprintf (stdout, fmt, ap);
+  fflush (stdout);
   VDEBUG (10, "S: ", fmt, ap);
 }
 
-void
+static void
 rmt_reply (uintmax_t code)
 {
   char buf[UINTMAX_STRSIZE_BOUND];
   rmt_write ("A%s\n", umaxtostr (code, buf));
 }
 
-void
+static void
 rmt_error_message (int code, const char *msg)
 {
   DEBUG1 (10, "S: E%d\n", code);
   DEBUG1 (10, "S: %s\n", msg);
   DEBUG1 (1, "error: %s\n", msg);
   fprintf (stdout, "E%d\n%s\n", code, msg);
+  fflush (stdout);
 }
 
-void
+static void
 rmt_error (int code)
 {
   rmt_error_message (code, strerror (code));
@@ -152,7 +154,7 @@ struct rmt_kw
 
 #define RMT_KW(s,v) { #s, sizeof (#s) - 1, v }
 
-int
+static int
 xlat_kw (const char *s, const char *pfx,
         struct rmt_kw const *kw, int *valp, const char **endp)
 {
@@ -167,7 +169,7 @@ xlat_kw (const char *s, const char *pfx,
          slen -= pfxlen;
        }
     }
-  
+
   for (; kw->name; kw++)
     {
       if (slen >= kw->len
@@ -182,7 +184,7 @@ xlat_kw (const char *s, const char *pfx,
   return 1;
 }
 
-const char *
+static const char *
 skip_ws (const char *s)
 {
   while (*s && c_isblank (*s))
@@ -222,47 +224,60 @@ static struct rmt_kw const open_flag_kw[] =
     { NULL }
   };
 
-int
+static int
 decode_open_flag (const char *mstr, int *pmode)
 {
+  int numeric_mode = 0;
   int mode = 0;
+  const char *p;
 
-  while (mstr)
+  mstr = skip_ws (mstr);
+  if (c_isdigit (*mstr))
     {
-      int v;
-      const char *p;
-
-      mstr = skip_ws (mstr);
-      if (*mstr == 0)
-       break;
-      else if (c_isdigit (*mstr))
-       v = strtol (mstr, (char**) &p, 10);
-      else if (xlat_kw (mstr, "O_", open_flag_kw, &v, &p))
-       {
-         rmt_error_message (EINVAL, "invalid open mode");
-         return 1;
-       }
+      numeric_mode = strtol (mstr, (char**) &p, 10);
+      mstr = skip_ws (p);
+    }
 
-      mode |= v;
-      
-      if (*p && c_isblank (*p))
-       p = skip_ws (p);
-      if (*p == 0)
-       break;
-      else if (*p == '|')
-       {
-         /* FIXMEL
-            if (p[1] == 0)
-              rmt_error_message (EINVAL, "invalid open mode");
-         */
-         mstr = p + 1;
-       }
-      else
+  if (*mstr)
+    {
+      while (mstr)
        {
-         rmt_error_message (EINVAL, "invalid open mode");
-         return 1;
+         int v;
+         
+         mstr = skip_ws (mstr);
+         if (*mstr == 0)
+           break;
+         else if (c_isdigit (*mstr))
+           v = strtol (mstr, (char**) &p, 10);
+         else if (xlat_kw (mstr, "O_", open_flag_kw, &v, &p))
+           {
+             rmt_error_message (EINVAL, "invalid open mode");
+             return 1;
+           }
+
+         mode |= v;
+         
+         if (*p && c_isblank (*p))
+           p = skip_ws (p);
+         if (*p == 0)
+           break;
+         else if (*p == '|')
+           {
+             /* FIXMEL
+                if (p[1] == 0)
+                rmt_error_message (EINVAL, "invalid open mode");
+             */
+             mstr = p + 1;
+           }
+         else
+           {
+             rmt_error_message (EINVAL, "invalid open mode");
+             return 1;
+           }
        }
     }
+  else
+    mode = numeric_mode;
   *pmode = mode;
   return 0;
 }
@@ -271,12 +286,12 @@ decode_open_flag (const char *mstr, int *pmode)
 /* Syntax
    ------
    O<device>\n<flags>\n
-   
+
    Function
    --------
    Opens the <device> with given <flags>. If a device had already been opened,
    it is closed before opening the new one.
-   
+
    Arguments
    ---------
    <device> - name of the device to open.
@@ -288,22 +303,26 @@ decode_open_flag (const char *mstr, int *pmode)
       64|512
       CREAT|TRUNC
 
+   In addition, a compined form is also allowed, i.e. a decimal mode followed
+   by its symbolic representation.  In this case the symbolic representation
+   is given preference.
+      
    Reply
    -----
-   A0\n on success, E<errno>\n<msg>\n on error.
-      
+   A0\n on success, E0\n<msg>\n on error.
+
    Extensions
    ----------
-   The BSD version allows only decimal number as <flags>.
+   BSD version allows only decimal number as <flags>
 */
-   
+
 static void
 open_device (char *str)
 {
   char *device = xstrdup (str);
   char *flag_str;
   int flag;
-  
+
   flag_str = rmt_read ();
   if (!flag_str)
     {
@@ -327,7 +346,7 @@ open_device (char *str)
 /* Syntax
    ------
    C[<device>]\n
-   
+
    Function
    --------
    Close the currently open device.
@@ -335,13 +354,13 @@ open_device (char *str)
    Arguments
    ---------
    Any arguments are silently ignored.
-   
+
    Reply
    -----
-   A0\n on success, E<errno>\n<msg>\n on error.
+   A0\n on success, E0\n<msg>\n on error.
 */
 static void
-close_device ()
+close_device (void)
 {
   if (close (device_fd) < 0)
     rmt_error (errno);
@@ -355,12 +374,12 @@ close_device ()
 /* Syntax
    ------
    L<whence>\n<offset>\n
-   
+
    Function
    --------
    Perform an lseek(2) on the currently open device with the specified
    parameters.
-   
+
    Arguments
    ---------
    <whence>  -  Where to measure offset from. Valid values are:
@@ -370,11 +389,11 @@ close_device ()
    Reply
    -----
    A<offset>\n on success. The <offset> is the new offset in file.
-   E<errno>\n<msg>\n on error.   
+   E0\n<msg>\n on error.
 
    Extensions
    ----------
-   The BSD version allows only 0,1,2 as <whence>.
+   BSD version allows only 0,1,2 as <whence>.
 */
 
 static struct rmt_kw const seek_whence_kw[] =
@@ -384,15 +403,15 @@ static struct rmt_kw const seek_whence_kw[] =
     RMT_KW(END, SEEK_END),
     { NULL }
   };
-  
-void
+
+static void
 lseek_device (const char *str)
 {
   char *p;
   int whence;
   off_t off;
   uintmax_t n;
-  
+
   if (str[0] && str[1] == 0)
     {
       switch (str[0])
@@ -427,7 +446,7 @@ lseek_device (const char *str)
       rmt_error_message (EINVAL, N_("Invalid seek offset"));
       return;
     }
-    
+
   if (n != off || errno == ERANGE)
     {
       rmt_error_message (EINVAL, N_("Seek offset out of range"));
@@ -444,37 +463,37 @@ lseek_device (const char *str)
 /* Syntax
    ------
    R<count>\n
-   
+
    Function
    --------
    Read <count> bytes of data from the current device.
-   
+
    Arguments
    ---------
    <count>  -  number of bytes to read.
-   
+
    Reply
    -----
    On success: A<rdcount>\n, followed by <rdcount> bytes of data read from
    the device.
-   On error: E<errno>\n<msg>\n
+   On error: E0\n<msg>\n
 */
 
-void
+static void
 read_device (const char *str)
 {
   char *p;
   size_t size;
   uintmax_t n;
   size_t status;
-  
+
   n = size = strtoumax (str, &p, 10);
   if (*p)
     {
       rmt_error_message (EINVAL, N_("Invalid byte count"));
       return;
     }
-  
+
   if (n != size || errno == ERANGE)
     {
       rmt_error_message (EINVAL, N_("Byte count out of range"));
@@ -495,37 +514,37 @@ read_device (const char *str)
 /* Syntax
    ------
    W<count>\n followed by <count> bytes of input data.
-   
+
    Function
    --------
    Write data onto the current device.
-   
+
    Arguments
    ---------
    <count>  - number of bytes.
-   
+
    Reply
    -----
    On success: A<wrcount>\n, where <wrcount> is number of bytes actually
    written.
-   On error: E<errno>\n<msg>\n
+   On error: E0\n<msg>\n
 */
 
-void
+static void
 write_device (const char *str)
 {
   char *p;
   size_t size;
   uintmax_t n;
   size_t status;
-  
+
   n = size = strtoumax (str, &p, 10);
   if (*p)
     {
       rmt_error_message (EINVAL, N_("Invalid byte count"));
       return;
     }
-  
+
   if (n != size || errno == ERANGE)
     {
       rmt_error_message (EINVAL, N_("Byte count out of range"));
@@ -552,30 +571,30 @@ write_device (const char *str)
 /* Syntax
    ------
    I<opcode>\n<count>\n
-   
+
    Function
    --------
    Perform a MTIOCOP ioctl(2) command using the specified paramedters.
-   
+
    Arguments
    ---------
    <opcode>   -  MTIOCOP operation code.
    <count>    -  mt_count.
-   
+
    Reply
    -----
    On success: A0\n
-   On error: E<errno>\n<msg>\n
+   On error: E0\n<msg>\n
 */
 
-void
+static void
 iocop_device (const char *str)
 {
   char *p;
   long opcode;
   off_t count;
   uintmax_t n;
-  
+
   opcode = strtol (str, &p, 10);
   if (*p)
     {
@@ -589,13 +608,13 @@ iocop_device (const char *str)
       rmt_error_message (EINVAL, N_("Invalid byte count"));
       return;
     }
-    
+
   if (n != count || errno == ERANGE)
     {
       rmt_error_message (EINVAL, N_("Byte count out of range"));
       return;
     }
-  
+
 #ifdef MTIOCTOP
   {
     struct mtop mtop;
@@ -621,23 +640,23 @@ iocop_device (const char *str)
 /* Syntax
    ------
    S\n
-   
+
    Function
    --------
    Return the status of the open device, as obtained with a MTIOCGET
    ioctl call.
-   
+
    Arguments
    ---------
    None
-   
+
    Reply
    -----
    On success: A<count>\n followed by <count> bytes of data.
-   On error: E<errno>\n<msg>\n
+   On error: E0\n<msg>\n
 */
 
-void
+static void
 status_device (const char *str)
 {
   if (*str)
@@ -661,7 +680,7 @@ status_device (const char *str)
   rmt_error_message (ENOSYS, N_("Operation not supported"));
 #endif
 }
-  
+
 
 \f
 const char *argp_program_version = "rmt (" PACKAGE_NAME ") " VERSION;
@@ -689,13 +708,13 @@ parse_opt (int key, char *arg, struct argp_state *state)
     case 'd':
       dbglev = strtol (arg, NULL, 0);
       break;
-      
+
     case DEBUG_FILE_OPTION:
       dbgout = fopen (arg, "w");
       if (!dbgout)
        error (EXIT_FAILURE, errno, _("cannot open %s"), arg);
       break;
-      
+
     case ARGP_KEY_FINI:
       if (dbglev)
        {
@@ -705,13 +724,13 @@ parse_opt (int key, char *arg, struct argp_state *state)
       else if (dbgout)
        dbglev = 1;
       break;
-      
+
     default:
       return ARGP_ERR_UNKNOWN;
     }
   return 0;
 }
-      
+
 static struct argp argp = {
   options,
   parse_opt,
@@ -742,7 +761,7 @@ main (int argc, char **argv)
   char *buf;
   int idx;
   int stop = 0;
-  
+
   set_program_name (argv[0]);
   argp_version_setup ("rmt", rmt_authors);
 
@@ -752,7 +771,7 @@ main (int argc, char **argv)
       bindtextdomain (PACKAGE, LOCALEDIR);
       textdomain (PACKAGE);
     }
-  
+
   if (argp_parse (&argp, argc, argv, ARGP_IN_ORDER, &idx, NULL))
     exit (EXIT_FAILURE);
   if (idx != argc)
@@ -764,7 +783,7 @@ main (int argc, char **argv)
        error (EXIT_FAILURE, errno, _("cannot open %s"), argv[idx]);
       dbglev = 1;
     }
-  
+
   while (!stop && (buf = rmt_read ()) != NULL)
     {
       switch (buf[0])
@@ -773,36 +792,36 @@ main (int argc, char **argv)
          close_device ();
          stop = 1;
          break;
-         
+
        case 'I':
          iocop_device (buf + 1);
          break;
-         
+
        case 'L':
          lseek_device (buf + 1);
          break;
-         
+
        case 'O':
          open_device (buf + 1);
          break;
-         
+
        case 'R':
          read_device (buf + 1);
          break;
-         
+
        case 'S':
          status_device (buf + 1);
          break;
-         
+
        case 'W':
          write_device (buf + 1);
          break;
-         
+
        default:
          DEBUG1 (1, "garbage input %s\n", buf);
          rmt_error_message (EINVAL, N_("Garbage command"));
          return EXIT_FAILURE;  /* exit status used to be 3 */
-       }         
+       }
     }
   if (device_fd >= 0)
     close_device ();
index 5da72c537ead9204d57557a88538a6648259480e..cd8a8be1a13fff008b1bc4de64b3d8a1f05934c2 100644 (file)
@@ -41,11 +41,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -58,17 +58,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -78,54 +78,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -180,6 +187,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -277,6 +285,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -332,10 +341,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -360,6 +371,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -376,11 +388,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -398,20 +415,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -419,7 +439,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -435,12 +454,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -452,25 +474,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -480,18 +506,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -508,6 +537,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -524,8 +554,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -540,6 +573,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -558,6 +592,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -624,21 +660,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -661,6 +700,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -668,6 +708,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -693,7 +734,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -705,17 +748,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -785,6 +832,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
index 47d4f1658f401a95a957014ab84fe46094146399..ae8df8a048ddb969f8fe6fe00be0e3f2d07cec15 100644 (file)
@@ -65,9 +65,9 @@ XLIST=exclude_files
 SLEEP_TIME=15
 
 # Script to be run when it's time to insert a new tape in for the next
-# volume.  Administrators may want to tailor this script for their site. 
+# volume.  Administrators may want to tailor this script for their site.
 # If this variable isn't set, tar will use some default behavior which is
-# probably defined in the manual. 
+# probably defined in the manual.
 #DUMP_REMIND_SCRIPT='rsh apple-gunkies /home/gd2/dump/dump-remind'
 
 # Message to display on the terminal while waiting for dump time.  Usually
@@ -75,7 +75,7 @@ SLEEP_TIME=15
 # entertaining than this.  The awk script here saves some redundant
 # repetition, but is not really all that desirable.
 SLEEP_MESSAGE="`awk '
-   BEGIN { 
+   BEGIN {
       for (i = 0; i < 30; i++)
          print \"           \" \
                \"D O    N O T   T O U C H   T H I S   T E R M I N A L !!!!!\"
index 0b95f4bdcdedab04af520dad97b36bdd50d71c26..a3f013fe1925b2f148d0c783af5dca7fb8dd720b 100644 (file)
@@ -2,14 +2,14 @@
 # This file is included in the GNU tar distribution as an example.  It is
 # not used by default unless the proper line is uncommented in backup-specs.
 # System administrators will probably want to customize this and
-# backup-specs for their site. 
+# backup-specs for their site.
 #
 # This script should be run by tar with --info-script (-F) to inform
 # interested parties that a tape for the next volume of the backup needs to
-# be put in the tape drive. 
+# be put in the tape drive.
 #
 
-# Include location of `sendmail' and GNU finger. 
+# Include location of `sendmail' and GNU finger.
 PATH="/usr/lib:/usr/local/gnubin:${PATH}"
 export PATH
 
@@ -27,7 +27,7 @@ MT_OFFLINE
 #
 # Certain users (like `root') aren't real users, and shouldn't be notified.
 # Neither should `zippy', `elvis', etc. (on the GNU machines) since they're
-# just test accounts. 
+# just test accounts.
 recipients="`
     finger .clients 2> /dev/null \
      | sed -ne '
@@ -69,8 +69,8 @@ Cc: ${ADMINISTRATOR}
 Subject: Backup needs new tape for volume ${TAR_VOLUME}
 Reply-To: ${ADMINISTRATOR}
 
-This is an automated report from the backup script running on 
-`hostname`. 
+This is an automated report from the backup script running on
+`hostname`.
 
 Volume ${TAR_VOLUME} of the backup needs to be put in the tape drive.
 Usually whoever prepared the backup leaves labeled tapes on top of the
@@ -92,8 +92,8 @@ Cc: ${ADMINISTRATOR}
 Subject: Volume ${TAR_VOLUME} for backup has been added
 Reply-To: ${ADMINISTRATOR}
 
-This is an automated report from the backup script running on 
-`hostname`. 
+This is an automated report from the backup script running on
+`hostname`.
 
 The backup has been continued, so for now no further attention is required.
 __EOF__
index fcbac33f08d8e74757195fb79daf3ceb916b0e3f..de310f43512a8dba61bd852aa2eb965a4dc49b91 100644 (file)
@@ -48,4 +48,4 @@ INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu -I$(top_srcdir)/lib -I../lib
 
 LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV)
 
-tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)
index 164869c4c6e0236b222757f3cfb99948e85b017d..41151f21fc1ea30c8aa4525d1607375844fc0b09 100644 (file)
@@ -47,11 +47,11 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -64,17 +64,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -84,54 +84,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -195,6 +202,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -292,6 +300,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -347,10 +356,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -375,6 +386,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -391,11 +403,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -413,20 +430,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -434,7 +454,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -450,12 +469,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -467,25 +489,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -495,18 +521,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -523,6 +552,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -539,8 +569,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -555,6 +588,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -573,6 +607,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -639,21 +675,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -676,6 +715,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -683,6 +723,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -708,7 +749,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -720,17 +763,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -800,6 +847,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -854,7 +902,7 @@ tar_SOURCES = \
 
 INCLUDES = -I$(top_srcdir)/gnu -I../ -I../gnu -I$(top_srcdir)/lib -I../lib
 LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV)
-tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+tar_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)
 all: all-am
 
 .SUFFIXES:
index bcd1c0a2f4e33dbea4a0d568875df66cc1f83415..a2abfe826c1e1f37b3a4c6b310753f004a7fa004 100644 (file)
@@ -22,6 +22,6 @@
    blocked in 1 kB boundaries.  We'll need arbitrary precision
    arithmetic anyway once we get into the 2**64 range, so there's no
    point doing anything fancy before then.  */
-   
+
 #define TARLONG_FORMAT "%.0f"
 typedef double tarlong;
index 8147def1961246dfdef3f3704432416431c6f932..ef4bbac6a7f6ec3a5cac1f24d59a24bb3806c507 100644 (file)
@@ -54,7 +54,7 @@ enum access_mode access_mode;   /* how do we handle the archive */
 off_t records_read;             /* number of records read from this archive */
 off_t records_written;          /* likewise, for records written */
 extern off_t records_skipped;   /* number of records skipped at the start
-                                   of the archive, defined in delete.c */   
+                                   of the archive, defined in delete.c */
 
 static off_t record_start_block; /* block ordinal at record_start */
 
@@ -77,7 +77,6 @@ static bool read_full_records = false;
 /* We're reading, but we just read the last block and it's time to update.
    Declared in update.c
 
-   As least EXTERN like this one as possible. (?? --gray)
    FIXME: Either eliminate it or move it to common.h.
 */
 extern bool time_to_start_writing;
@@ -101,19 +100,94 @@ static int global_volno = 1;    /* volume number to print in external
 
 bool write_archive_to_stdout;
 
-/* Used by flush_read and flush_write to store the real info about saved
-   names.  */
-static char *real_s_name;
-static off_t real_s_totsize;
-static off_t real_s_sizeleft;
-
 \f
 /* Multi-volume tracking support */
-static char *save_name;         /* name of the file we are currently writing */
-static off_t save_totsize;      /* total size of file we are writing, only
-                                   valid if save_name is nonzero */
-static off_t save_sizeleft;     /* where we are in the file we are writing,
-                                   only valid if save_name is nonzero */
+
+/* When creating a multi-volume archive, each `bufmap' represents
+   a member stored (perhaps partly) in the current record buffer.
+   After flushing the record to the output media, all bufmaps that
+   represent fully written members are removed from the list, then
+   the sizeleft and start numbers in the remaining bufmaps are updated.
+
+   When reading from a multi-volume archive, the list degrades to a
+   single element, which keeps information about the member currently
+   being read.
+*/
+
+struct bufmap
+{
+  struct bufmap *next;          /* Pointer to the next map entry */
+  size_t start;                 /* Offset of the first data block */
+  char *file_name;              /* Name of the stored file */
+  off_t sizetotal;              /* Size of the stored file */
+  off_t sizeleft;               /* Size left to read/write */
+};
+static struct bufmap *bufmap_head, *bufmap_tail;
+
+/* This variable, when set, inhibits updating the bufmap chain after
+   a write.  This is necessary when writing extended POSIX headers. */
+static int inhibit_map;
+
+void
+mv_begin_write (const char *file_name, off_t totsize, off_t sizeleft)
+{
+  if (multi_volume_option)
+    {
+      struct bufmap *bp = xmalloc (sizeof bp[0]);
+      if (bufmap_tail)
+       bufmap_tail->next = bp;
+      else
+       bufmap_head = bp;
+      bufmap_tail = bp;
+
+      bp->next = NULL;
+      bp->start = current_block - record_start;
+      bp->file_name = xstrdup (file_name);
+      bp->sizetotal = totsize;
+      bp->sizeleft = sizeleft;
+    }
+}
+
+static struct bufmap *
+bufmap_locate (size_t off)
+{
+  struct bufmap *map;
+
+  for (map = bufmap_head; map; map = map->next)
+    {
+      if (!map->next
+         || off < map->next->start * BLOCKSIZE)
+       break;
+    }
+  return map;
+}
+
+static void
+bufmap_free (struct bufmap *mark)
+{
+  struct bufmap *map;
+  for (map = bufmap_head; map && map != mark; )
+    {
+      struct bufmap *next = map->next;
+      free (map->file_name);
+      free (map);
+      map = next;
+    }
+  bufmap_head = map;
+  if (!bufmap_head)
+    bufmap_tail = bufmap_head;
+}
+
+static void
+bufmap_reset (struct bufmap *map, ssize_t fixup)
+{
+  bufmap_free (map);
+  if (map)
+    {
+      for (; map; map = map->next)
+       map->start += fixup;
+    }
+}
 
 \f
 static struct tar_stat_info dummy;
@@ -125,32 +199,23 @@ buffer_write_global_xheader ()
 }
 
 void
-mv_begin (struct tar_stat_info *st)
+mv_begin_read (struct tar_stat_info *st)
 {
-  if (multi_volume_option)
-    {
-      assign_string (&save_name,  st->orig_file_name);
-      save_totsize = save_sizeleft = st->stat.st_size;
-    }
+  mv_begin_write (st->orig_file_name, st->stat.st_size, st->stat.st_size);
 }
 
 void
 mv_end ()
 {
   if (multi_volume_option)
-    assign_string (&save_name, 0);
-}
-
-void
-mv_total_size (off_t size)
-{
-  save_totsize = size;
+    bufmap_free (NULL);
 }
 
 void
 mv_size_left (off_t size)
 {
-  save_sizeleft = size;
+  if (bufmap_head)
+    bufmap_head->sizeleft = size;
 }
 
 \f
@@ -175,8 +240,8 @@ set_start_time ()
   last_stat_time = start_time;
 }
 
-void
-set_volume_start_time ()
+static void
+set_volume_start_time (void)
 {
   gettime (&volume_start_time);
   last_stat_time = volume_start_time;
@@ -211,9 +276,9 @@ struct zip_magic
 {
   enum compress_type type;
   size_t length;
-  char *magic;
-  char *program;
-  char *option;
+  char const *magic;
+  char const *program;
+  char const *option;
 };
 
 static struct zip_magic const magic[] = {
@@ -225,7 +290,7 @@ static struct zip_magic const magic[] = {
   { ct_lzip,     4, "LZIP",      LZIP_PROGRAM,     "--lzip" },
   { ct_lzma,     6, "\xFFLZMA",  LZMA_PROGRAM,     "--lzma" },
   { ct_lzop,     4, "\211LZO",   LZOP_PROGRAM,     "--lzop" },
-  { ct_xz,       6, "\0xFD7zXZ", XZ_PROGRAM,       "-J" },
+  { ct_xz,       6, "\xFD" "7zXZ",  XZ_PROGRAM,       "-J" },
 };
 
 #define NMAGIC (sizeof(magic)/sizeof(magic[0]))
@@ -234,7 +299,7 @@ static struct zip_magic const magic[] = {
 #define compress_program(t) magic[t].program
 
 /* Check if the file ARCHIVE is a compressed archive. */
-enum compress_type
+static enum compress_type
 check_compressed_archive (bool *pshort)
 {
   struct zip_magic const *p;
@@ -243,14 +308,14 @@ check_compressed_archive (bool *pshort)
 
   if (!pshort)
     pshort = &temp;
-  
+
   /* Prepare global data needed for find_next_block: */
   record_end = record_start; /* set up for 1st record = # 0 */
   sfr = read_full_records;
   read_full_records = true; /* Suppress fatal error on reading a partial
                                record */
   *pshort = find_next_block () == 0;
-  
+
   /* Restore global values */
   read_full_records = sfr;
 
@@ -267,7 +332,7 @@ check_compressed_archive (bool *pshort)
 
 /* Guess if the archive is seekable. */
 static void
-guess_seekable_archive ()
+guess_seekable_archive (void)
 {
   struct stat st;
 
@@ -288,7 +353,7 @@ guess_seekable_archive ()
       seekable_archive = !!seek_option;
       return;
     }
-  
+
   if (!multi_volume_option && !use_compress_program_option
       && fstat (archive, &st) == 0)
     seekable_archive = S_ISREG (st.st_mode);
@@ -299,8 +364,8 @@ guess_seekable_archive ()
 /* Open an archive named archive_name_array[0]. Detect if it is
    a compressed archive of known type and use corresponding decompression
    program if so */
-int
-open_compressed_archive ()
+static int
+open_compressed_archive (void)
 {
   archive = rmtopen (archive_name_array[0], O_RDONLY | O_BINARY,
                      MODE_RW, rsh_command_option);
@@ -320,11 +385,11 @@ open_compressed_archive ()
               if (shortfile)
                 ERROR ((0, 0, _("This does not look like a tar archive")));
               return archive;
-      
+
             case ct_none:
               if (shortfile)
                 ERROR ((0, 0, _("This does not look like a tar archive")));
-              set_comression_program_by_suffix (archive_name_array[0], NULL);
+              set_compression_program_by_suffix (archive_name_array[0], NULL);
               if (!use_compress_program_option)
                return archive;
               break;
@@ -334,10 +399,10 @@ open_compressed_archive ()
               break;
             }
         }
-      
+
       /* FD is not needed any more */
       rmtclose (archive);
-      
+
       hit_eof = false; /* It might have been set by find_next_block in
                           check_compressed_archive */
 
@@ -486,7 +551,7 @@ xclose (int fd)
 }
 
 static void
-init_buffer ()
+init_buffer (void)
 {
   if (! record_buffer_aligned[record_index])
     record_buffer_aligned[record_index] =
@@ -511,8 +576,6 @@ _open_archive (enum access_mode wanted_access)
     FATAL_ERROR ((0, 0, _("No archive name given")));
 
   tar_stat_destroy (&current_stat_info);
-  save_name = 0;
-  real_s_name = 0;
 
   record_index = 0;
   init_buffer ();
@@ -657,7 +720,7 @@ _open_archive (enum access_mode wanted_access)
 }
 
 /* Perform a write to flush the buffer.  */
-ssize_t
+static ssize_t
 _flush_write (void)
 {
   ssize_t status;
@@ -672,7 +735,21 @@ _flush_write (void)
     status = record_size;
   else
     status = sys_write_archive_buffer ();
-  
+
+  if (status && multi_volume_option && !inhibit_map)
+    {
+      struct bufmap *map = bufmap_locate (status);
+      if (map)
+       {
+         size_t delta = status - map->start * BLOCKSIZE;
+         if (delta > map->sizeleft)
+           delta = map->sizeleft;
+         map->sizeleft -= delta;
+         if (map->sizeleft == 0)
+           map = map->next;
+         bufmap_reset (map, map ? (- map->start) : 0);
+       }
+    }
   return status;
 }
 
@@ -713,7 +790,7 @@ archive_read_error (void)
 }
 
 static bool
-archive_is_dev ()
+archive_is_dev (void)
 {
   struct stat st;
 
@@ -861,7 +938,7 @@ seek_archive (off_t size)
 
   if (size <= skipped)
     return 0;
-  
+
   /* Compute number of records to skip */
   nrec = (size - skipped) / record_size;
   if (nrec == 0)
@@ -907,12 +984,9 @@ close_archive (void)
   sys_wait_for_child (child_pid, hit_eof);
 
   tar_stat_destroy (&current_stat_info);
-  if (save_name)
-    free (save_name);
-  if (real_s_name)
-    free (real_s_name);
   free (record_buffer[0]);
   free (record_buffer[1]);
+  bufmap_free (NULL);
 }
 
 /* Called to initialize the global volume number.  */
@@ -956,7 +1030,7 @@ closeout_volume_number (void)
 
 \f
 static void
-increase_volume_number ()
+increase_volume_number (void)
 {
   global_volno++;
   if (global_volno < 0)
@@ -964,13 +1038,13 @@ increase_volume_number ()
   volno++;
 }
 
-void
+static void
 change_tape_menu (FILE *read_file)
 {
   char *input_buffer = NULL;
   size_t size = 0;
   bool stop = false;
-  
+
   while (!stop)
     {
       fputc ('\007', stderr);
@@ -1088,7 +1162,7 @@ new_volume (enum access_mode mode)
   assign_string (&continued_file_name, NULL);
   continued_file_size = continued_file_offset = 0;
   current_block = record_start;
-  
+
   if (rmtclose (archive) != 0)
     close_error (*archive_name_cursor);
 
@@ -1177,13 +1251,13 @@ read_header0 (struct tar_stat_info *info)
   return false;
 }
 
-bool
-try_new_volume ()
+static bool
+try_new_volume (void)
 {
   size_t status;
   union block *header;
   enum access_mode acc;
-  
+
   switch (subcommand_option)
     {
     case APPEND_SUBCOMMAND:
@@ -1199,7 +1273,7 @@ try_new_volume ()
 
   if (!new_volume (acc))
     return true;
-  
+
   while ((status = rmtread (archive, record_start->buffer, record_size))
          == SAFE_READ_ERROR)
     archive_read_error ();
@@ -1222,10 +1296,10 @@ try_new_volume ()
            ERROR ((0, 0, _("This does not look like a tar archive")));
            return false;
          }
-       
+
         xheader_decode (&dummy); /* decodes values from the global header */
         tar_stat_destroy (&dummy);
-       
+
        /* The initial global header must be immediately followed by
           an extended PAX header for the first member in this volume.
           However, in some cases tar may split volumes in the middle
@@ -1237,7 +1311,7 @@ try_new_volume ()
           HEADER_FAILURE, which is ignored.
 
           See also tests/multiv07.at */
-              
+
        switch (read_header (&header, &dummy, read_header_auto))
          {
          case HEADER_SUCCESS:
@@ -1280,30 +1354,30 @@ try_new_volume ()
       break;
     }
 
-  if (real_s_name)
+  if (bufmap_head)
     {
       uintmax_t s;
       if (!continued_file_name
-          || strcmp (continued_file_name, real_s_name))
+          || strcmp (continued_file_name, bufmap_head->file_name))
         {
           if ((archive_format == GNU_FORMAT || archive_format == OLDGNU_FORMAT)
-              && strlen (real_s_name) >= NAME_FIELD_SIZE
-              && strncmp (continued_file_name, real_s_name,
+              && strlen (bufmap_head->file_name) >= NAME_FIELD_SIZE
+              && strncmp (continued_file_name, bufmap_head->file_name,
                           NAME_FIELD_SIZE) == 0)
             WARN ((0, 0,
  _("%s is possibly continued on this volume: header contains truncated name"),
-                   quote (real_s_name)));
+                   quote (bufmap_head->file_name)));
           else
             {
               WARN ((0, 0, _("%s is not continued on this volume"),
-                     quote (real_s_name)));
+                     quote (bufmap_head->file_name)));
               return false;
             }
         }
 
       s = continued_file_size + continued_file_offset;
 
-      if (real_s_totsize != s || s < continued_file_offset)
+      if (bufmap_head->sizetotal != s || s < continued_file_offset)
         {
           char totsizebuf[UINTMAX_STRSIZE_BOUND];
           char s1buf[UINTMAX_STRSIZE_BOUND];
@@ -1311,23 +1385,24 @@ try_new_volume ()
 
           WARN ((0, 0, _("%s is the wrong size (%s != %s + %s)"),
                  quote (continued_file_name),
-                 STRINGIFY_BIGINT (save_totsize, totsizebuf),
+                 STRINGIFY_BIGINT (bufmap_head->sizetotal, totsizebuf),
                  STRINGIFY_BIGINT (continued_file_size, s1buf),
                  STRINGIFY_BIGINT (continued_file_offset, s2buf)));
           return false;
         }
 
-      if (real_s_totsize - real_s_sizeleft != continued_file_offset)
+      if (bufmap_head->sizetotal - bufmap_head->sizeleft !=
+         continued_file_offset)
         {
           char totsizebuf[UINTMAX_STRSIZE_BOUND];
           char s1buf[UINTMAX_STRSIZE_BOUND];
           char s2buf[UINTMAX_STRSIZE_BOUND];
 
           WARN ((0, 0, _("This volume is out of sequence (%s - %s != %s)"),
-                 STRINGIFY_BIGINT (real_s_totsize, totsizebuf),
-                 STRINGIFY_BIGINT (real_s_sizeleft, s1buf),
+                 STRINGIFY_BIGINT (bufmap_head->sizetotal, totsizebuf),
+                 STRINGIFY_BIGINT (bufmap_head->sizeleft, s1buf),
                  STRINGIFY_BIGINT (continued_file_offset, s2buf)));
-         
+
           return false;
         }
     }
@@ -1348,7 +1423,7 @@ drop_volume_label_suffix (const char *label)
 
   if (len < 1)
     return NULL;
-  
+
   for (p = label + len - 1; p > label && isdigit ((unsigned char) *p); p--)
     ;
   if (p > label && p - (VOLUME_TEXT_LEN - 1) > label)
@@ -1365,7 +1440,7 @@ drop_volume_label_suffix (const char *label)
 
   return NULL;
 }
-      
+
 /* Check LABEL against the volume label, seen as a globbing
    pattern.  Return true if the pattern matches.  In case of failure,
    retry matching a volume sequence number before giving up in
@@ -1374,7 +1449,7 @@ static bool
 check_label_pattern (const char *label)
 {
   char *string;
-  bool result;
+  bool result = false;
 
   if (fnmatch (volume_label_option, label, 0) == 0)
     return true;
@@ -1399,7 +1474,7 @@ match_volume_label (void)
   if (!volume_label)
     {
       union block *label = find_next_block ();
-  
+
       if (!label)
        FATAL_ERROR ((0, 0, _("Archive not labeled to match %s"),
                      quote (volume_label_option)));
@@ -1425,11 +1500,11 @@ match_volume_label (void)
          tar_stat_destroy (&st);
        }
     }
-  
+
   if (!volume_label)
     FATAL_ERROR ((0, 0, _("Archive not labeled to match %s"),
                   quote (volume_label_option)));
-  
+
   if (!check_label_pattern (volume_label))
     FATAL_ERROR ((0, 0, _("Volume %s does not match %s"),
                   quote_n (0, volume_label),
@@ -1477,26 +1552,24 @@ add_volume_label (void)
 }
 
 static void
-add_chunk_header ()
+add_chunk_header (struct bufmap *map)
 {
   if (archive_format == POSIX_FORMAT)
     {
       off_t block_ordinal;
       union block *blk;
       struct tar_stat_info st;
-      static size_t real_s_part_no; /* FIXME */
 
-      real_s_part_no++;
       memset (&st, 0, sizeof st);
-      st.orig_file_name = st.file_name = real_s_name;
+      st.orig_file_name = st.file_name = map->file_name;
       st.stat.st_mode = S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;
       st.stat.st_uid = getuid ();
       st.stat.st_gid = getgid ();
       st.orig_file_name = xheader_format_name (&st,
                                                "%d/GNUFileParts.%p/%f.%n",
-                                               real_s_part_no);
+                                               volno);
       st.file_name = st.orig_file_name;
-      st.archive_file_size = st.stat.st_size = real_s_sizeleft;
+      st.archive_file_size = st.stat.st_size = map->sizeleft;
 
       block_ordinal = current_block_ordinal ();
       blk = start_header (&st);
@@ -1520,27 +1593,23 @@ write_volume_label (void)
 
 /* Write GNU multi-volume header */
 static void
-gnu_add_multi_volume_header (void)
+gnu_add_multi_volume_header (struct bufmap *map)
 {
   int tmp;
   union block *block = find_next_block ();
 
-  if (strlen (real_s_name) > NAME_FIELD_SIZE)
+  if (strlen (map->file_name) > NAME_FIELD_SIZE)
     WARN ((0, 0,
            _("%s: file name too long to be stored in a GNU multivolume header, truncated"),
-           quotearg_colon (real_s_name)));
+           quotearg_colon (map->file_name)));
 
   memset (block, 0, BLOCKSIZE);
 
-  /* FIXME: Michael P Urban writes: [a long name file] is being written
-     when a new volume rolls around [...]  Looks like the wrong value is
-     being preserved in real_s_name, though.  */
-
-  strncpy (block->header.name, real_s_name, NAME_FIELD_SIZE);
+  strncpy (block->header.name, map->file_name, NAME_FIELD_SIZE);
   block->header.typeflag = GNUTYPE_MULTIVOL;
 
-  OFF_TO_CHARS (real_s_sizeleft, block->header.size);
-  OFF_TO_CHARS (real_s_totsize - real_s_sizeleft,
+  OFF_TO_CHARS (map->sizeleft, block->header.size);
+  OFF_TO_CHARS (map->sizetotal - map->sizeleft,
                 block->oldgnu_header.offset);
 
   tmp = verbose_option;
@@ -1553,40 +1622,17 @@ gnu_add_multi_volume_header (void)
 /* Add a multi volume header to the current archive. The exact header format
    depends on the archive format. */
 static void
-add_multi_volume_header (void)
+add_multi_volume_header (struct bufmap *map)
 {
   if (archive_format == POSIX_FORMAT)
     {
-      off_t d = real_s_totsize - real_s_sizeleft;
-      xheader_store ("GNU.volume.filename", &dummy, real_s_name);
-      xheader_store ("GNU.volume.size", &dummy, &real_s_sizeleft);
+      off_t d = map->sizetotal - map->sizeleft;
+      xheader_store ("GNU.volume.filename", &dummy, map->file_name);
+      xheader_store ("GNU.volume.size", &dummy, &map->sizeleft);
       xheader_store ("GNU.volume.offset", &dummy, &d);
     }
   else
-    gnu_add_multi_volume_header ();
-}
-
-/* Synchronize multi-volume globals */
-static void
-multi_volume_sync ()
-{
-  if (multi_volume_option)
-    {
-      if (save_name)
-        {
-          assign_string (&real_s_name,
-                         safer_name_suffix (save_name, false,
-                                            absolute_names_option));
-          real_s_totsize = save_totsize;
-          real_s_sizeleft = save_sizeleft;
-        }
-      else
-        {
-          assign_string (&real_s_name, 0);
-          real_s_totsize = 0;
-          real_s_sizeleft = 0;
-        }
-    }
+    gnu_add_multi_volume_header (map);
 }
 
 \f
@@ -1599,7 +1645,7 @@ simple_flush_read (void)
   size_t status;                /* result from system call */
 
   checkpoint_run (false);
-  
+
   /* Clear the count of errors.  This only applies to a single call to
      flush_read.  */
 
@@ -1658,7 +1704,7 @@ _gnu_flush_read (void)
   size_t status;                /* result from system call */
 
   checkpoint_run (false);
-  
+
   /* Clear the count of errors.  This only applies to a single call to
      flush_read.  */
 
@@ -1673,8 +1719,6 @@ _gnu_flush_read (void)
         archive_write_error (status);
     }
 
-  multi_volume_sync ();
-
   for (;;)
     {
       status = rmtread (archive, record_start->buffer, record_size);
@@ -1726,36 +1770,36 @@ _gnu_flush_write (size_t buffer_level)
   char *copy_ptr;
   size_t copy_size;
   size_t bufsize;
-  tarlong wrt;
-  
+  struct bufmap *map;
+
   status = _flush_write ();
   if (status != record_size && !multi_volume_option)
     archive_write_error (status);
   else
     {
       if (status)
-        records_written++; 
+        records_written++;
       bytes_written += status;
     }
 
   if (status == record_size)
     {
-      multi_volume_sync ();
       return;
     }
 
+  map = bufmap_locate (status);
+
   if (status % BLOCKSIZE)
     {
       ERROR ((0, 0, _("write did not end on a block boundary")));
       archive_write_error (status);
     }
-  
+
   /* In multi-volume mode. */
   /* ENXIO is for the UNIX PC.  */
   if (status < 0 && errno != ENOSPC && errno != EIO && errno != ENXIO)
     archive_write_error (status);
 
-  real_s_sizeleft -= status;
   if (!new_volume (ACCESS_WRITE))
     return;
 
@@ -1767,25 +1811,28 @@ _gnu_flush_write (size_t buffer_level)
 
   copy_ptr = record_start->buffer + status;
   copy_size = buffer_level - status;
-                   
+
   /* Switch to the next buffer */
   record_index = !record_index;
   init_buffer ();
 
+  inhibit_map = 1;
+
   if (volume_label_option)
     add_volume_label ();
 
-  if (real_s_name)
-    add_multi_volume_header ();
+  if (map)
+    add_multi_volume_header (map);
 
   write_extended (true, &dummy, find_next_block ());
   tar_stat_destroy (&dummy);
-  
-  if (real_s_name)
-    add_chunk_header ();
-  wrt = bytes_written;
+
+  if (map)
+    add_chunk_header (map);
   header = find_next_block ();
+  bufmap_reset (map, header - record_start);
   bufsize = available_space_after (header);
+  inhibit_map = 0;
   while (bufsize < copy_size)
     {
       memcpy (header->buffer, copy_ptr, bufsize);
@@ -1798,16 +1845,6 @@ _gnu_flush_write (size_t buffer_level)
   memcpy (header->buffer, copy_ptr, copy_size);
   memset (header->buffer + copy_size, 0, bufsize - copy_size);
   set_next_block_after (header + (copy_size - 1) / BLOCKSIZE);
-  if (multi_volume_option && wrt < bytes_written)
-    {
-      /* The value of bytes_written has changed while moving data;
-         that means that flush_archive was executed at least once in
-         between, and, as a consequence, copy_size bytes were not written
-         to disk.  We need to update sizeleft variables to compensate for
-         that. */
-      save_sizeleft += copy_size;
-      multi_volume_sync ();
-    }
   find_next_block ();
 }
 
@@ -1841,6 +1878,7 @@ open_archive (enum access_mode wanted_access)
   switch (wanted_access)
     {
     case ACCESS_READ:
+    case ACCESS_UPDATE:
       if (volume_label_option)
         match_volume_label ();
       break;
@@ -1850,9 +1888,6 @@ open_archive (enum access_mode wanted_access)
       if (volume_label_option)
         write_volume_label ();
       break;
-
-    default:
-      break;
     }
   set_volume_start_time ();
 }
index 9f031f7e277f5247efe944d8bfedb8d95e62abef..a2896ab3d3cf1205ac7a7c411c77203e36fd4d0d 100644 (file)
@@ -77,7 +77,7 @@ void
 checkpoint_compile_action (const char *str)
 {
   struct checkpoint_action *act;
-  
+
   if (strcmp (str, ".") == 0 || strcmp (str, "dot") == 0)
     alloc_action (cop_dot);
   else if (strcmp (str, "bell") == 0)
@@ -119,14 +119,14 @@ checkpoint_finish_compile ()
     {
       if (!checkpoint_action)
        /* Provide a historical default */
-       checkpoint_compile_action ("echo"); 
+       checkpoint_compile_action ("echo");
     }
   else if (checkpoint_action)
     /* Otherwise, set default checkpoint rate */
     checkpoint_option = DEFAULT_CHECKPOINT;
 }
 
-char *
+static char *
 expand_checkpoint_string (const char *input, bool do_write, unsigned cpn)
 {
   const char *opstr = do_write ? gettext ("write") : gettext ("read");
@@ -147,7 +147,7 @@ expand_checkpoint_string (const char *input, bool do_write, unsigned cpn)
        case 'u':
          outlen += cpslen - 2;
          break;
-         
+
        case 's':
          outlen += opstrlen - 2;
        }
@@ -164,11 +164,11 @@ expand_checkpoint_string (const char *input, bool do_write, unsigned cpn)
            case 'u':
              op = stpcpy (op, cps);
              break;
-             
+
            case 's':
              op = stpcpy (op, opstr);
              break;
-             
+
            default:
              *op++ = '%';
              *op++ = *ip;
@@ -188,7 +188,7 @@ run_checkpoint_actions (bool do_write)
 {
   struct checkpoint_action *p;
   FILE *tty = NULL;
-  
+
   for (p = checkpoint_action; p; p = p->next)
     {
       switch (p->opcode)
@@ -207,7 +207,7 @@ run_checkpoint_actions (bool do_write)
              fflush (tty);
            }
          break;
-         
+
        case cop_echo:
          {
            char *tmp;
@@ -232,7 +232,7 @@ run_checkpoint_actions (bool do_write)
            free (tmp);
          }
          break;
-         
+
        case cop_ttyout:
          if (!tty)
            tty = fopen ("/dev/tty", "w");
@@ -245,11 +245,11 @@ run_checkpoint_actions (bool do_write)
              free (tmp);
            }
          break;
-         
+
        case cop_sleep:
          sleep (p->v.time);
          break;
-         
+
        case cop_exec:
          sys_exec_checkpoint_script (p->v.command,
                                      archive_name_cursor[0],
@@ -266,5 +266,4 @@ checkpoint_run (bool do_write)
 {
   if (checkpoint_option && !(++checkpoint % checkpoint_option))
     run_checkpoint_actions (do_write);
-}  
-
+}
index d2de528e0e94809eef7fa0efbb1e3a8975faa3ad..192cf9e5b64a77c0a7857b0a85f4b3f222187b9d 100644 (file)
@@ -1,7 +1,7 @@
 /* Common declarations for the tar program.
 
    Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001,
-   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, 
+   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
    Inc.
 
    This program is free software; you can redistribute it and/or modify it
@@ -105,6 +105,8 @@ GLOBAL bool absolute_names_option;
 
 /* Display file times in UTC */
 GLOBAL bool utc_option;
+/* Output file timestamps to the full resolution */
+GLOBAL bool full_time_option;
 
 /* This variable tells how to interpret newer_mtime_option, below.  If zero,
    files get archived if their mtime is not less than newer_mtime_option.
@@ -335,12 +337,12 @@ struct name
     int matching_flags;         /* wildcard flags if name is a pattern */
     bool cmdline;               /* true if this name was given in the
                                   command line */
-    
+
     int change_dir;            /* Number of the directory to change to.
                                   Set with the -C option. */
     uintmax_t found_count;     /* number of times a matching file has
                                   been found */
-    
+
     /* The following members are used for incremental dumps only,
        if this struct name represents a directory;
        see incremen.c */
@@ -355,6 +357,11 @@ struct name
 GLOBAL dev_t ar_dev;
 GLOBAL ino_t ar_ino;
 
+/* Flags for reading, searching, and fstatatting files.  */
+GLOBAL int open_read_flags;
+GLOBAL int open_searchdir_flags;
+GLOBAL int fstatat_flags;
+
 GLOBAL int seek_option;
 GLOBAL bool seekable_archive;
 
@@ -425,9 +432,10 @@ void archive_read_error (void);
 off_t seek_archive (off_t size);
 void set_start_time (void);
 
-void mv_begin (struct tar_stat_info *st);
+void mv_begin_write (const char *file_name, off_t totsize, off_t sizeleft);
+
+void mv_begin_read (struct tar_stat_info *st);
 void mv_end (void);
-void mv_total_size (off_t size);
 void mv_size_left (off_t size);
 
 void buffer_write_global_xheader (void);
@@ -443,13 +451,14 @@ enum dump_status
   };
 
 void add_exclusion_tag (const char *name, enum exclusion_tag_type type,
-                       bool (*)(const char*));
-bool cachedir_file_p (const char *name);
+                       bool (*predicate) (int));
+bool cachedir_file_p (int fd);
+char *get_directory_entries (struct tar_stat_info *st);
 
-bool file_dumpable_p (struct tar_stat_info *st);
 void create_archive (void);
 void pad_archive (off_t size_left);
-void dump_file (const char *st, bool top_level, dev_t parent_device);
+void dump_file (struct tar_stat_info *parent, char const *name,
+               char const *fullname);
 union block *start_header (struct tar_stat_info *st);
 void finish_header (struct tar_stat_info *st, union block *header,
                    off_t block_ordinal);
@@ -459,33 +468,18 @@ union block * write_extended (bool global, struct tar_stat_info *st,
 union block *start_private_header (const char *name, size_t size, time_t t);
 void write_eot (void);
 void check_links (void);
+int subfile_open (struct tar_stat_info const *dir, char const *file, int flags);
+void restore_parent_fd (struct tar_stat_info const *st);
 void exclusion_tag_warning (const char *dirname, const char *tagname,
                            const char *message);
-enum exclusion_tag_type check_exclusion_tags (const char *dirname,
+enum exclusion_tag_type check_exclusion_tags (struct tar_stat_info const *st,
                                              const char **tag_file_name);
-     
-#define GID_TO_CHARS(val, where) gid_to_chars (val, where, sizeof (where))
-#define MAJOR_TO_CHARS(val, where) major_to_chars (val, where, sizeof (where))
-#define MINOR_TO_CHARS(val, where) minor_to_chars (val, where, sizeof (where))
-#define MODE_TO_CHARS(val, where) mode_to_chars (val, where, sizeof (where))
+
 #define OFF_TO_CHARS(val, where) off_to_chars (val, where, sizeof (where))
-#define SIZE_TO_CHARS(val, where) size_to_chars (val, where, sizeof (where))
 #define TIME_TO_CHARS(val, where) time_to_chars (val, where, sizeof (where))
-#define UID_TO_CHARS(val, where) uid_to_chars (val, where, sizeof (where))
-#define UINTMAX_TO_CHARS(val, where) uintmax_to_chars (val, where, sizeof (where))
-#define UNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
-#define GNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
-
-bool gid_to_chars (gid_t gid, char *buf, size_t size);
-bool major_to_chars (major_t m, char *buf, size_t size);
-bool minor_to_chars (minor_t m, char *buf, size_t size);
-bool mode_to_chars (mode_t m, char *buf, size_t size);
+
 bool off_to_chars (off_t off, char *buf, size_t size);
-bool size_to_chars (size_t v, char *buf, size_t size);
 bool time_to_chars (time_t t, char *buf, size_t size);
-bool uid_to_chars (uid_t uid, char *buf, size_t size);
-bool uintmax_to_chars (uintmax_t v, char *buf, size_t size);
-void string_to_chars (char const *s, char *buf, size_t size);
 
 /* Module diffarch.c.  */
 
@@ -507,18 +501,8 @@ bool rename_directory (char *src, char *dst);
 void delete_archive_members (void);
 
 /* Module incremen.c.  */
-typedef struct dumpdir *dumpdir_t;
-typedef struct dumpdir_iter *dumpdir_iter_t;
-
-dumpdir_t dumpdir_create0 (const char *contents, const char *cmask);
-dumpdir_t dumpdir_create (const char *contents);
-void dumpdir_free (dumpdir_t);
-char *dumpdir_locate (dumpdir_t dump, const char *name);
-char *dumpdir_next (dumpdir_iter_t itr);
-char *dumpdir_first (dumpdir_t dump, int all, dumpdir_iter_t *pitr);
-
-struct directory *scan_directory (char *dir, dev_t device, bool cmdline);
-void name_fill_directory (struct name *name, dev_t device, bool cmdline);
+
+struct directory *scan_directory (struct tar_stat_info *st);
 const char *directory_contents (struct directory *dir);
 const char *safe_directory_contents (struct directory *dir);
 
@@ -531,7 +515,7 @@ void read_directory_file (void);
 void write_directory_file (void);
 void purge_directory (char const *directory_name);
 void list_dumpdir (char *buffer, size_t size);
-void update_parent_directory (const char *name);
+void update_parent_directory (struct tar_stat_info *st);
 
 size_t dumpdir_size (const char *p);
 bool is_dumpdir (struct tar_stat_info *stat_info);
@@ -568,25 +552,10 @@ void decode_header (union block *header, struct tar_stat_info *stat_info,
                    enum archive_format *format_pointer, int do_user_group);
 char const *tartime (struct timespec t, bool full_time);
 
-#define GID_FROM_HEADER(where) gid_from_header (where, sizeof (where))
-#define MAJOR_FROM_HEADER(where) major_from_header (where, sizeof (where))
-#define MINOR_FROM_HEADER(where) minor_from_header (where, sizeof (where))
-#define MODE_FROM_HEADER(where, hbits) \
-  mode_from_header (where, sizeof (where), hbits)
 #define OFF_FROM_HEADER(where) off_from_header (where, sizeof (where))
-#define SIZE_FROM_HEADER(where) size_from_header (where, sizeof (where))
-#define TIME_FROM_HEADER(where) time_from_header (where, sizeof (where))
-#define UID_FROM_HEADER(where) uid_from_header (where, sizeof (where))
 #define UINTMAX_FROM_HEADER(where) uintmax_from_header (where, sizeof (where))
 
-gid_t gid_from_header (const char *buf, size_t size);
-major_t major_from_header (const char *buf, size_t size);
-minor_t minor_from_header (const char *buf, size_t size);
-mode_t mode_from_header (const char *buf, size_t size, unsigned *hbits);
 off_t off_from_header (const char *buf, size_t size);
-size_t size_from_header (const char *buf, size_t size);
-time_t time_from_header (const char *buf, size_t size);
-uid_t uid_from_header (const char *buf, size_t size);
 uintmax_t uintmax_from_header (const char *buf, size_t size);
 
 void list_archive (void);
@@ -605,7 +574,6 @@ void skip_member (void);
 /* Module misc.c.  */
 
 void assign_string (char **dest, const char *src);
-char *quote_copy_string (const char *str);
 int unquote_string (char *str);
 char *zap_slashes (char *name);
 char *normalize_filename (const char *name);
@@ -623,6 +591,8 @@ enum { BILLION = 1000000000, LOG10_BILLION = 9 };
 enum { TIMESPEC_STRSIZE_BOUND =
          UINTMAX_STRSIZE_BOUND + LOG10_BILLION + sizeof "-." - 1 };
 
+bool must_be_dot_or_slash (char const *);
+
 enum remove_option
 {
   ORDINARY_REMOVE_OPTION,
@@ -641,8 +611,10 @@ int remove_any_file (const char *file_name, enum remove_option option);
 bool maybe_backup_file (const char *file_name, bool this_is_the_archive);
 void undo_last_backup (void);
 
-int deref_stat (bool deref, char const *name, struct stat *buf);
+int deref_stat (char const *name, struct stat *buf);
 
+extern int chdir_current;
+extern int chdir_fd;
 int chdir_arg (char const *dir);
 void chdir_do (int dir);
 int chdir_count (void);
@@ -667,11 +639,12 @@ pid_t xfork (void);
 void xpipe (int fd[2]);
 
 void *page_aligned_alloc (void **ptr, size_t size);
-int set_file_atime (int fd, char const *file,
-                   struct timespec const timespec[2]);
+int set_file_atime (int fd, int parentfd, char const *file,
+                   struct timespec atime);
 
 /* Module names.c.  */
 
+extern size_t name_count;
 extern struct name *gnu_list_name;
 
 void gid_to_gname (gid_t gid, char **gname);
@@ -690,6 +663,7 @@ struct name *addname (char const *string, int change_dir,
 void remname (struct name *name);
 bool name_match (const char *name);
 void names_notfound (void);
+void label_notfound (void);
 void collect_and_sort_names (void);
 struct name *name_scan (const char *name);
 struct name const *name_from_list (void);
@@ -716,9 +690,9 @@ bool contains_dot_dot (char const *name);
 void usage (int);
 
 int confirm (const char *message_action, const char *name);
-void request_stdin (const char *option);
 
 void tar_stat_init (struct tar_stat_info *st);
+bool tar_stat_close (struct tar_stat_info *st);
 void tar_stat_destroy (struct tar_stat_info *st);
 void usage (int) __attribute__ ((noreturn));
 int tar_timespec_cmp (struct timespec a, struct timespec b);
@@ -734,7 +708,6 @@ void update_archive (void);
 
 /* Module xheader.c.  */
 
-void xheader_init (struct xheader *xhdr);
 void xheader_decode (struct tar_stat_info *stat);
 void xheader_decode_global (struct xheader *xhdr);
 void xheader_store (char const *keyword, struct tar_stat_info *st,
@@ -800,12 +773,11 @@ bool utf8_convert (bool to_utf, char const *input, char **output);
 
 void set_transform_expr (const char *expr);
 bool transform_name (char **pinput, int type);
-bool transform_member_name (char **pinput, int type);
 bool transform_name_fp (char **pinput, int type,
                        char *(*fun)(char *, void *), void *);
 
 /* Module suffix.c */
-void set_comression_program_by_suffix (const char *name, const char *defprog);
+void set_compression_program_by_suffix (const char *name, const char *defprog);
 
 /* Module checkpoint.c */
 void checkpoint_compile_action (const char *str);
@@ -836,7 +808,7 @@ void checkpoint_run (bool do_write);
 /* The warnings composing WARN_VERBOSE_WARNINGS are enabled by default
    in verbose mode */
 #define WARN_VERBOSE_WARNINGS    (WARN_RENAME_DIRECTORY|WARN_NEW_DIRECTORY)
-#define WARN_ALL                 (0xffffffff & ~WARN_VERBOSE_WARNINGS)
+#define WARN_ALL                 (~WARN_VERBOSE_WARNINGS)
 
 void set_warning_option (const char *arg);
 
@@ -856,4 +828,3 @@ void finish_deferred_unlinks (void);
 
 /* Module exit.c */
 extern void (*fatal_exit_hook) (void);
-
index f4e92da58f0fa6cf81825ba9c09fa2f502700522..6b7e6d8747053bebfef98bcf27707ba9d3b1d489 100644 (file)
@@ -122,7 +122,7 @@ read_and_process (struct tar_stat_info *st, int (*processor) (size_t, char *))
   size_t data_size;
   off_t size = st->stat.st_size;
 
-  mv_begin (st);
+  mv_begin_read (st);
   while (size)
     {
       data_block = find_next_block ();
@@ -151,7 +151,7 @@ read_and_process (struct tar_stat_info *st, int (*processor) (size_t, char *))
 static int
 get_stat_data (char const *file_name, struct stat *stat_data)
 {
-  int status = deref_stat (dereference_option, file_name, stat_data);
+  int status = deref_stat (file_name, stat_data);
 
   if (status != 0)
     {
@@ -217,12 +217,7 @@ diff_file (void)
        }
       else
        {
-         int atime_flag =
-           (atime_preserve_option == system_atime_preserve
-            ? O_NOATIME
-            : 0);
-
-         diff_handle = open (file_name, O_RDONLY | O_BINARY | atime_flag);
+         diff_handle = openat (chdir_fd, file_name, open_read_flags);
 
          if (diff_handle < 0)
            {
@@ -241,10 +236,9 @@ diff_file (void)
 
              if (atime_preserve_option == replace_atime_preserve)
                {
-                 struct timespec ts[2];
-                 ts[0] = get_stat_atime (&stat_data);
-                 ts[1] = get_stat_mtime (&stat_data);
-                 if (set_file_atime (diff_handle, file_name, ts) != 0)
+                 struct timespec atime = get_stat_atime (&stat_data);
+                 if (set_file_atime (diff_handle, chdir_fd, file_name, atime)
+                     != 0)
                    utime_error (file_name);
                }
 
@@ -277,7 +271,8 @@ diff_symlink (void)
   size_t len = strlen (current_stat_info.link_name);
   char *linkbuf = alloca (len + 1);
 
-  int status = readlink (current_stat_info.file_name, linkbuf, len + 1);
+  int status = readlinkat (chdir_fd, current_stat_info.file_name,
+                          linkbuf, len + 1);
 
   if (status < 0)
     {
@@ -331,7 +326,7 @@ static int
 dumpdir_cmp (const char *a, const char *b)
 {
   size_t len;
-  
+
   while (*a)
     switch (*a)
       {
@@ -345,7 +340,7 @@ dumpdir_cmp (const char *a, const char *b)
        a += len;
        b += len;
        break;
-       
+
       case 'D':
        if (strcmp(a, b))
          return 1;
@@ -353,7 +348,7 @@ dumpdir_cmp (const char *a, const char *b)
        a += len;
        b += len;
        break;
-       
+
       case 'R':
       case 'T':
       case 'X':
@@ -369,7 +364,7 @@ diff_dumpdir (void)
   dev_t dev = 0;
   struct stat stat_data;
 
-  if (deref_stat (true, current_stat_info.file_name, &stat_data))
+  if (deref_stat (current_stat_info.file_name, &stat_data) != 0)
     {
       if (errno == ENOENT)
        stat_warn (current_stat_info.file_name);
@@ -379,8 +374,7 @@ diff_dumpdir (void)
   else
     dev = stat_data.st_dev;
 
-  dumpdir_buffer = directory_contents
-                    (scan_directory (current_stat_info.file_name, dev, false));
+  dumpdir_buffer = directory_contents (scan_directory (&current_stat_info));
 
   if (dumpdir_buffer)
     {
@@ -422,7 +416,8 @@ diff_multivol (void)
       return;
     }
 
-  fd = open (current_stat_info.file_name, O_RDONLY | O_BINARY);
+
+  fd = openat (chdir_fd, current_stat_info.file_name, open_read_flags);
 
   if (fd < 0)
     {
@@ -452,7 +447,6 @@ diff_archive (void)
 {
 
   set_next_block_after (current_header);
-  decode_header (current_header, &current_stat_info, &current_format, 1);
 
   /* Print the block from current_header and current_stat_info.  */
 
@@ -578,8 +572,8 @@ verify_volume (void)
   flush_read ();
   while (1)
     {
-      enum read_header status = read_header (&current_header, 
-                                             &current_stat_info, 
+      enum read_header status = read_header (&current_header,
+                                             &current_stat_info,
                                              read_header_auto);
 
       if (status == HEADER_FAILURE)
@@ -609,7 +603,7 @@ verify_volume (void)
             {
              char buf[UINTMAX_STRSIZE_BOUND];
 
-             status = read_header (&current_header, &current_stat_info, 
+             status = read_header (&current_header, &current_stat_info,
                                    read_header_auto);
              if (status == HEADER_ZERO_BLOCK)
                break;
@@ -618,7 +612,7 @@ verify_volume (void)
                        STRINGIFY_BIGINT (current_block_ordinal (), buf)));
             }
        }
-      
+
       diff_archive ();
       tar_stat_destroy (&current_stat_info);
     }
index c69d3406a1c859b52afd2695b9136e1bd9885b9a..05af0d9062cee9e6d6102df1baa9e4a35b7cb601 100644 (file)
 #include "common.h"
 #include <hash.h>
 
+/* Error number to use when an impostor is discovered.
+   Pretend the impostor isn't there.  */
+enum { IMPOSTOR_ERRNO = ENOENT };
+
 struct link
   {
     dev_t dev;
     ino_t ino;
-    size_t nlink;
+    nlink_t nlink;
     char name[1];
   };
 
@@ -39,7 +43,7 @@ struct exclusion_tag
   const char *name;
   size_t length;
   enum exclusion_tag_type type;
-  bool (*predicate) (const char *name);
+  bool (*predicate) (int fd);
   struct exclusion_tag *next;
 };
 
@@ -47,7 +51,7 @@ static struct exclusion_tag *exclusion_tags;
 
 void
 add_exclusion_tag (const char *name, enum exclusion_tag_type type,
-                  bool (*predicate) (const char *name))
+                  bool (*predicate) (int fd))
 {
   struct exclusion_tag *tag = xmalloc (sizeof tag[0]);
   tag->next = exclusion_tags;
@@ -71,39 +75,24 @@ exclusion_tag_warning (const char *dirname, const char *tagname,
              message));
 }
 
-enum exclusion_tag_type 
-check_exclusion_tags (const char *dirname, const char **tag_file_name)
+enum exclusion_tag_type
+check_exclusion_tags (struct tar_stat_info const *st, char const **tag_file_name)
 {
-  static char *tagname;
-  static size_t tagsize;
   struct exclusion_tag *tag;
-  size_t dlen = strlen (dirname);
-  int addslash = !ISSLASH (dirname[dlen-1]);
-  size_t noff = 0;
-  
+
   for (tag = exclusion_tags; tag; tag = tag->next)
     {
-      size_t size = dlen + addslash + tag->length + 1;
-      if (size > tagsize)
-       {
-         tagsize = size;
-         tagname = xrealloc (tagname, tagsize);
-       }
-
-      if (noff == 0)
-       {
-         strcpy (tagname, dirname);
-         noff = dlen;
-         if (addslash)
-           tagname[noff++] = '/';
-       }
-      strcpy (tagname + noff, tag->name);
-      if (access (tagname, F_OK) == 0
-         && (!tag->predicate || tag->predicate (tagname)))
+      int tagfd = subfile_open (st, tag->name, open_read_flags);
+      if (0 <= tagfd)
        {
-         if (tag_file_name)
-           *tag_file_name = tag->name;
-         return tag->type;
+         bool satisfied = !tag->predicate || tag->predicate (tagfd);
+         close (tagfd);
+         if (satisfied)
+           {
+             if (tag_file_name)
+               *tag_file_name = tag->name;
+             return tag->type;
+           }
        }
     }
 
@@ -121,22 +110,13 @@ check_exclusion_tags (const char *dirname, const char **tag_file_name)
 #define CACHEDIR_SIGNATURE_SIZE (sizeof CACHEDIR_SIGNATURE - 1)
 
 bool
-cachedir_file_p (const char *name)
+cachedir_file_p (int fd)
 {
-  bool tag_present = false;
-  int fd = open (name, O_RDONLY);
-  if (fd >= 0)
-    {
-      static char tagbuf[CACHEDIR_SIGNATURE_SIZE];
+  char tagbuf[CACHEDIR_SIGNATURE_SIZE];
 
-      if (read (fd, tagbuf, CACHEDIR_SIGNATURE_SIZE)
-         == CACHEDIR_SIGNATURE_SIZE
-         && memcmp (tagbuf, CACHEDIR_SIGNATURE, CACHEDIR_SIGNATURE_SIZE) == 0)
-       tag_present = true;
-
-      close (fd);
-    }
-  return tag_present;
+  return
+    (read (fd, tagbuf, CACHEDIR_SIGNATURE_SIZE) == CACHEDIR_SIGNATURE_SIZE
+     && memcmp (tagbuf, CACHEDIR_SIGNATURE, CACHEDIR_SIGNATURE_SIZE) == 0);
 }
 
 \f
@@ -214,6 +194,14 @@ to_base256 (int negative, uintmax_t value, char *where, size_t size)
   while (i);
 }
 
+#define GID_TO_CHARS(val, where) gid_to_chars (val, where, sizeof (where))
+#define MAJOR_TO_CHARS(val, where) major_to_chars (val, where, sizeof (where))
+#define MINOR_TO_CHARS(val, where) minor_to_chars (val, where, sizeof (where))
+#define MODE_TO_CHARS(val, where) mode_to_chars (val, where, sizeof (where))
+#define UID_TO_CHARS(val, where) uid_to_chars (val, where, sizeof (where))
+
+#define UNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
+#define GNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
 
 static bool
 to_chars (int negative, uintmax_t value, size_t valsize,
@@ -263,7 +251,7 @@ to_chars_subst (int negative, int gnu_format, uintmax_t value, size_t valsize,
 
         1. In OLDGNU_FORMAT all strings in a tar header end in \0
         2. Incremental archives use oldgnu_header.
-        
+
         Apart from this they are completely identical. */
       uintmax_t s = (negsub &= archive_format == GNU_FORMAT) ? - sub : sub;
       char subbuf[UINTMAX_STRSIZE_BOUND + 1];
@@ -368,25 +356,25 @@ gid_substitute (int *negative)
   return r;
 }
 
-bool
+static bool
 gid_to_chars (gid_t v, char *p, size_t s)
 {
   return to_chars (v < 0, (uintmax_t) v, sizeof v, gid_substitute, p, s, "gid_t");
 }
 
-bool
+static bool
 major_to_chars (major_t v, char *p, size_t s)
 {
   return to_chars (v < 0, (uintmax_t) v, sizeof v, 0, p, s, "major_t");
 }
 
-bool
+static bool
 minor_to_chars (minor_t v, char *p, size_t s)
 {
   return to_chars (v < 0, (uintmax_t) v, sizeof v, 0, p, s, "minor_t");
 }
 
-bool
+static bool
 mode_to_chars (mode_t v, char *p, size_t s)
 {
   /* In the common case where the internal and external mode bits are the same,
@@ -432,12 +420,6 @@ off_to_chars (off_t v, char *p, size_t s)
   return to_chars (v < 0, (uintmax_t) v, sizeof v, 0, p, s, "off_t");
 }
 
-bool
-size_to_chars (size_t v, char *p, size_t s)
-{
-  return to_chars (0, (uintmax_t) v, sizeof v, 0, p, s, "size_t");
-}
-
 bool
 time_to_chars (time_t v, char *p, size_t s)
 {
@@ -460,19 +442,19 @@ uid_substitute (int *negative)
   return r;
 }
 
-bool
+static bool
 uid_to_chars (uid_t v, char *p, size_t s)
 {
   return to_chars (v < 0, (uintmax_t) v, sizeof v, uid_substitute, p, s, "uid_t");
 }
 
-bool
+static bool
 uintmax_to_chars (uintmax_t v, char *p, size_t s)
 {
   return to_chars (0, v, sizeof v, 0, p, s, "uintmax_t");
 }
 
-void
+static void
 string_to_chars (char const *str, char *p, size_t s)
 {
   tar_copy_str (p, str, s);
@@ -480,20 +462,25 @@ string_to_chars (char const *str, char *p, size_t s)
 }
 
 \f
-/* A file is considered dumpable if it is sparse and both --sparse and --totals
+/* A directory is always considered dumpable.
+   Otherwise, only regular and contiguous files are considered dumpable.
+   Such a file is dumpable if it is sparse and both --sparse and --totals
    are specified.
    Otherwise, it is dumpable unless any of the following conditions occur:
 
    a) it is empty *and* world-readable, or
    b) current archive is /dev/null */
 
-bool
-file_dumpable_p (struct tar_stat_info *st)
+static bool
+file_dumpable_p (struct stat const *st)
 {
+  if (S_ISDIR (st->st_mode))
+    return true;
+  if (! (S_ISREG (st->st_mode) || S_ISCTG (st->st_mode)))
+    return false;
   if (dev_null_output)
-    return totals_option && sparse_option && ST_IS_SPARSE (st->stat);
-  return !(st->archive_file_size == 0
-          && (st->stat.st_mode & MODE_R) == MODE_R);
+    return totals_option && sparse_option && ST_IS_SPARSE (*st);
+  return ! (st->st_size == 0 && (st->st_mode & MODE_R) == MODE_R);
 }
 
 \f
@@ -618,7 +605,7 @@ write_ustar_long_name (const char *name)
   size_t length = strlen (name);
   size_t i, nlen;
   union block *header;
-  
+
   if (length > PREFIX_FIELD_SIZE + NAME_FIELD_SIZE + 1)
     {
       ERROR ((0, 0, _("%s: file name is too long (max %d); not dumped"),
@@ -713,7 +700,7 @@ write_extended (bool global, struct tar_stat_info *st, union block *old_header)
   char *p;
   int type;
   time_t t;
-  
+
   if (st->xhdr.buffer || st->xhdr.stk == NULL)
     return old_header;
 
@@ -1012,7 +999,6 @@ pad_archive (off_t size_left)
   union block *blk;
   while (size_left > 0)
     {
-      mv_size_left (size_left);
       blk = find_next_block ();
       memset (blk->buffer, 0, BLOCKSIZE);
       set_next_block_after (blk);
@@ -1038,12 +1024,10 @@ dump_regular_file (int fd, struct tar_stat_info *st)
 
   finish_header (st, blk, block_ordinal);
 
-  mv_begin (st);
+  mv_begin_write (st->file_name, st->stat.st_size, st->stat.st_size);
   while (size_left > 0)
     {
       size_t bufsize, count;
-      
-      mv_size_left (size_left);
 
       blk = find_next_block ();
 
@@ -1058,7 +1042,7 @@ dump_regular_file (int fd, struct tar_stat_info *st)
            memset (blk->buffer + size_left, 0, BLOCKSIZE - count);
        }
 
-      count = (fd < 0) ? bufsize : safe_read (fd, blk->buffer, bufsize);
+      count = (fd <= 0) ? bufsize : safe_read (fd, blk->buffer, bufsize);
       if (count == SAFE_READ_ERROR)
        {
          read_diag_details (st->orig_file_name,
@@ -1080,7 +1064,7 @@ dump_regular_file (int fd, struct tar_stat_info *st)
                              size_left),
                    quotearg_colon (st->orig_file_name),
                    STRINGIFY_BIGINT (size_left, buf)));
-         if (! ignore_failed_read_option) 
+         if (! ignore_failed_read_option)
            set_exit_status (TAREXIT_DIFFERS);
          pad_archive (size_left - (bufsize - count));
          return dump_status_short;
@@ -1090,11 +1074,13 @@ dump_regular_file (int fd, struct tar_stat_info *st)
 }
 
 \f
+/* Copy info from the directory identified by ST into the archive.
+   DIRECTORY contains the directory's entries.  */
+
 static void
-dump_dir0 (char *directory,
-          struct tar_stat_info *st, bool top_level, dev_t parent_device)
+dump_dir0 (struct tar_stat_info *st, char const *directory)
 {
-  dev_t our_device = st->stat.st_dev;
+  bool top_level = ! st->parent;
   const char *tag_file_name;
   union block *blk = NULL;
   off_t block_ordinal = current_block_ordinal ();
@@ -1129,7 +1115,7 @@ dump_dir0 (char *directory,
          size_t bufsize;
          ssize_t count;
          const char *buffer, *p_buffer;
-         
+
          block_ordinal = current_block_ordinal ();
          buffer = safe_directory_contents (gnu_list_name->directory);
          totsize = dumpdir_size (buffer);
@@ -1137,12 +1123,10 @@ dump_dir0 (char *directory,
          finish_header (st, blk, block_ordinal);
          p_buffer = buffer;
          size_left = totsize;
-         
-         mv_begin (st);
-         mv_total_size (totsize);
+
+         mv_begin_write (st->file_name, totsize, totsize);
          while (size_left > 0)
            {
-             mv_size_left (size_left);
              blk = find_next_block ();
              bufsize = available_space_after (blk);
              if (size_left < bufsize)
@@ -1157,7 +1141,6 @@ dump_dir0 (char *directory,
              p_buffer += bufsize;
              set_next_block_after (blk + (bufsize - 1) / BLOCKSIZE);
            }
-         mv_end ();
        }
       return;
     }
@@ -1167,7 +1150,7 @@ dump_dir0 (char *directory,
 
   if (one_file_system_option
       && !top_level
-      && parent_device != st->stat.st_dev)
+      && st->parent->stat.st_dev != st->stat.st_dev)
     {
       if (verbose_option)
        WARNOPT (WARN_XDEV,
@@ -1179,13 +1162,13 @@ dump_dir0 (char *directory,
     {
       char *name_buf;
       size_t name_size;
-      
-      switch (check_exclusion_tags (st->orig_file_name, &tag_file_name))
+
+      switch (check_exclusion_tags (st, &tag_file_name))
        {
        case exclusion_tag_all:
          /* Handled in dump_file0 */
          break;
-         
+
        case exclusion_tag_none:
          {
            char const *entry;
@@ -1196,7 +1179,6 @@ dump_dir0 (char *directory,
            name_size = name_len = strlen (name_buf);
 
            /* Now output all the files in the directory.  */
-           /* FIXME: Should speed this up by cd-ing into the dir.  */
            for (entry = directory; (entry_len = strlen (entry)) != 0;
                 entry += entry_len + 1)
              {
@@ -1207,9 +1189,9 @@ dump_dir0 (char *directory,
                  }
                strcpy (name_buf + name_len, entry);
                if (!excluded_name (name_buf))
-                 dump_file (name_buf, false, our_device);
+                 dump_file (st, entry, name_buf);
              }
-           
+
            free (name_buf);
          }
          break;
@@ -1221,10 +1203,10 @@ dump_dir0 (char *directory,
          name_buf = xmalloc (name_size);
          strcpy (name_buf, st->orig_file_name);
          strcat (name_buf, tag_file_name);
-         dump_file (name_buf, false, our_device);
+         dump_file (st, tag_file_name, name_buf);
          free (name_buf);
          break;
-      
+
        case exclusion_tag_under:
          exclusion_tag_warning (st->orig_file_name, tag_file_name,
                                 _("contents not dumped"));
@@ -1246,23 +1228,73 @@ ensure_slash (char **pstr)
   (*pstr)[len] = '\0';
 }
 
+/* If we just ran out of file descriptors, release a file descriptor
+   in the directory chain somewhere leading from DIR->parent->parent
+   up through the root.  Return true if successful, false (preserving
+   errno == EMFILE) otherwise.
+
+   Do not release DIR's file descriptor, or DIR's parent, as other
+   code assumes that they work.  On some operating systems, another
+   process can claim file descriptor resources as we release them, and
+   some calls or their emulations require multiple file descriptors,
+   so callers should not give up if a single release doesn't work.  */
+
+static bool
+open_failure_recover (struct tar_stat_info const *dir)
+{
+  if (errno == EMFILE && dir && dir->parent)
+    {
+      struct tar_stat_info *p;
+      for (p = dir->parent->parent; p; p = p->parent)
+       if (0 < p->fd && (! p->parent || p->parent->fd <= 0))
+         {
+           tar_stat_close (p);
+           return true;
+         }
+      errno = EMFILE;
+    }
+
+  return false;
+}
+
+/* Return the directory entries of ST, in a dynamically allocated buffer,
+   each entry followed by '\0' and the last followed by an extra '\0'.
+   Return null on failure, setting errno.  */
+char *
+get_directory_entries (struct tar_stat_info *st)
+{
+  while (! (st->dirstream = fdopendir (st->fd)))
+    if (! open_failure_recover (st))
+      return 0;
+  return streamsavedir (st->dirstream);
+}
+
+/* Dump the directory ST.  Return true if successful, false (emitting
+   diagnostics) otherwise.  Get ST's entries, recurse through its
+   subdirectories, and clean up file descriptors afterwards.  */
 static bool
-dump_dir (int fd, struct tar_stat_info *st, bool top_level,
-         dev_t parent_device)
+dump_dir (struct tar_stat_info *st)
 {
-  char *directory = fdsavedir (fd);
-  if (!directory)
+  char *directory = get_directory_entries (st);
+  if (! directory)
     {
       savedir_diag (st->orig_file_name);
       return false;
     }
 
-  dump_dir0 (directory, st, top_level, parent_device);
+  dump_dir0 (st, directory);
 
+  restore_parent_fd (st);
   free (directory);
   return true;
 }
 
+\f
+/* Number of links a file can have without having to be entered into
+   the link table.  Typically this is 1, but in trickier circumstances
+   it is 0.  */
+static nlink_t trivial_link_count;
+
 \f
 /* Main functions of this module.  */
 
@@ -1271,6 +1303,8 @@ create_archive (void)
 {
   struct name const *p;
 
+  trivial_link_count = name_count <= 1 && ! dereference_option;
+
   open_archive (ACCESS_WRITE);
   buffer_write_global_xheader ();
 
@@ -1284,12 +1318,13 @@ create_archive (void)
 
       while ((p = name_from_list ()) != NULL)
        if (!excluded_name (p->name))
-         dump_file (p->name, p->cmdline, (dev_t) 0);
+         dump_file (0, p->name, p->name);
 
       blank_name_list ();
       while ((p = name_from_list ()) != NULL)
        if (!excluded_name (p->name))
          {
+           struct tar_stat_info st;
            size_t plen = strlen (p->name);
            if (buffer_size <= plen)
              {
@@ -1300,6 +1335,7 @@ create_archive (void)
            memcpy (buffer, p->name, plen);
            if (! ISSLASH (buffer[plen - 1]))
              buffer[plen++] = DIRECTORY_SEPARATOR;
+           tar_stat_init (&st);
            q = directory_contents (gnu_list_name->directory);
            if (q)
              while (*q)
@@ -1307,6 +1343,23 @@ create_archive (void)
                  size_t qlen = strlen (q);
                  if (*q == 'Y')
                    {
+                     if (! st.orig_file_name)
+                       {
+                         int fd = openat (chdir_fd, p->name,
+                                          open_searchdir_flags);
+                         if (fd < 0)
+                           {
+                             open_diag (p->name);
+                             break;
+                           }
+                         st.fd = fd;
+                         if (fstat (fd, &st.stat) != 0)
+                           {
+                             stat_diag (p->name);
+                             break;
+                           }
+                         st.orig_file_name = xstrdup (p->name);
+                       }
                      if (buffer_size < plen + qlen)
                        {
                          while ((buffer_size *=2 ) < plen + qlen)
@@ -1314,10 +1367,11 @@ create_archive (void)
                          buffer = xrealloc (buffer, buffer_size);
                        }
                      strcpy (buffer + plen, q + 1);
-                     dump_file (buffer, false, (dev_t) 0);
+                     dump_file (&st, q + 1, buffer);
                    }
                  q += qlen + 1;
                }
+           tar_stat_destroy (&st);
          }
       free (buffer);
     }
@@ -1326,7 +1380,7 @@ create_archive (void)
       const char *name;
       while ((name = name_next (1)) != NULL)
        if (!excluded_name (name))
-         dump_file (name, true, (dev_t) 0);
+         dump_file (0, name, name);
     }
 
   write_eot ();
@@ -1378,7 +1432,8 @@ static Hash_table *link_table;
 static bool
 dump_hard_link (struct tar_stat_info *st)
 {
-  if (link_table && (st->stat.st_nlink > 1 || remove_files_option))
+  if (link_table
+      && (trivial_link_count < st->stat.st_nlink || remove_files_option))
     {
       struct link lp;
       struct link *duplicate;
@@ -1425,7 +1480,7 @@ file_count_links (struct tar_stat_info *st)
 {
   if (hard_dereference_option)
     return;
-  if (st->stat.st_nlink > 1)
+  if (trivial_link_count < st->stat.st_nlink)
     {
       struct link *duplicate;
       char *linkname = NULL;
@@ -1433,7 +1488,7 @@ file_count_links (struct tar_stat_info *st)
 
       assign_string (&linkname, st->orig_file_name);
       transform_name (&linkname, XFORM_LINK);
-      
+
       lp = xmalloc (offsetof (struct link, name)
                                 + strlen (linkname) + 1);
       lp->ino = st->stat.st_ino;
@@ -1441,13 +1496,13 @@ file_count_links (struct tar_stat_info *st)
       lp->nlink = st->stat.st_nlink;
       strcpy (lp->name, linkname);
       free (linkname);
-      
+
       if (! ((link_table
              || (link_table = hash_initialize (0, 0, hash_link,
                                                compare_links, 0)))
             && (duplicate = hash_insert (link_table, lp))))
        xalloc_die ();
-      
+
       if (duplicate != lp)
        abort ();
       lp->nlink--;
@@ -1474,26 +1529,96 @@ check_links (void)
     }
 }
 
-/* Dump a single file, recursing on directories.  P is the file name
-   to dump.  TOP_LEVEL tells whether this is a top-level call; zero
-   means no, positive means yes, and negative means the top level
-   of an incremental dump.  PARENT_DEVICE is the device of P's
-   parent directory; it is examined only if TOP_LEVEL is zero. */
+/* Assuming DIR is the working directory, open FILE, using FLAGS to
+   control the open.  A null DIR means to use ".".  If we are low on
+   file descriptors, try to release one or more from DIR's parents to
+   reuse it.  */
+int
+subfile_open (struct tar_stat_info const *dir, char const *file, int flags)
+{
+  int fd;
+
+  static bool initialized;
+  if (! initialized)
+    {
+      /* Initialize any tables that might be needed when file
+        descriptors are exhausted, and whose initialization might
+        require a file descriptor.  This includes the system message
+        catalog and tar's message catalog.  */
+      initialized = true;
+      strerror (ENOENT);
+      gettext ("");
+    }
+
+  while ((fd = openat (dir ? dir->fd : chdir_fd, file, flags)) < 0
+        && open_failure_recover (dir))
+    continue;
+  return fd;
+}
+
+/* Restore the file descriptor for ST->parent, if it was temporarily
+   closed to conserve file descriptors.  On failure, set the file
+   descriptor to the negative of the corresponding errno value.  Call
+   this every time a subdirectory is ascended from.  */
+void
+restore_parent_fd (struct tar_stat_info const *st)
+{
+  struct tar_stat_info *parent = st->parent;
+  if (parent && ! parent->fd)
+    {
+      int parentfd = openat (st->fd, "..", open_searchdir_flags);
+      struct stat parentstat;
+
+      if (parentfd < 0)
+       parentfd = - errno;
+      else if (! (fstat (parentfd, &parentstat) == 0
+                 && parent->stat.st_ino == parentstat.st_ino
+                 && parent->stat.st_dev == parentstat.st_dev))
+       {
+         close (parentfd);
+         parentfd = IMPOSTOR_ERRNO;
+       }
+
+      if (parentfd < 0)
+       {
+         int origfd = openat (chdir_fd, parent->orig_file_name,
+                              open_searchdir_flags);
+         if (0 <= origfd)
+           {
+             if (fstat (parentfd, &parentstat) == 0
+                 && parent->stat.st_ino == parentstat.st_ino
+                 && parent->stat.st_dev == parentstat.st_dev)
+               parentfd = origfd;
+             else
+               close (origfd);
+           }
+       }
+
+      parent->fd = parentfd;
+    }
+}
+
+/* Dump a single file, recursing on directories.  ST is the file's
+   status info, NAME its name relative to the parent directory, and P
+   its full name (which may be relative to the working directory).  */
 
 /* FIXME: One should make sure that for *every* path leading to setting
    exit_status to failure, a clear diagnostic has been issued.  */
 
 static void
-dump_file0 (struct tar_stat_info *st, const char *p,
-           bool top_level, dev_t parent_device)
+dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
 {
   union block *header;
   char type;
   off_t original_size;
   struct timespec original_ctime;
-  struct timespec restore_times[2];
   off_t block_ordinal = -1;
+  int fd = 0;
   bool is_dir;
+  struct tar_stat_info const *parent = st->parent;
+  bool top_level = ! parent;
+  int parentfd = top_level ? chdir_fd : parent->fd;
+  void (*diag) (char const *) = 0;
 
   if (interactive_option && !confirm ("add", p))
     return;
@@ -1504,14 +1629,34 @@ dump_file0 (struct tar_stat_info *st, const char *p,
 
   transform_name (&st->file_name, XFORM_REGFILE);
 
-  if (deref_stat (dereference_option, p, &st->stat) != 0)
+  if (parentfd < 0 && ! top_level)
+    {
+      errno = - parentfd;
+      diag = open_diag;
+    }
+  else if (fstatat (parentfd, name, &st->stat, fstatat_flags) != 0)
+    diag = stat_diag;
+  else if (file_dumpable_p (&st->stat))
+    {
+      fd = subfile_open (parent, name, open_read_flags);
+      if (fd < 0)
+       diag = open_diag;
+      else
+       {
+         st->fd = fd;
+         if (fstat (fd, &st->stat) != 0)
+           diag = stat_diag;
+       }
+    }
+  if (diag)
     {
-      file_removed_diag (p, top_level, stat_diag);
+      file_removed_diag (p, top_level, diag);
       return;
     }
+
   st->archive_file_size = original_size = st->stat.st_size;
-  st->atime = restore_times[0] = get_stat_atime (&st->stat);
-  st->mtime = restore_times[1] = get_stat_mtime (&st->stat);
+  st->atime = get_stat_atime (&st->stat);
+  st->mtime = get_stat_mtime (&st->stat);
   st->ctime = original_ctime = get_stat_ctime (&st->stat);
 
 #ifdef S_ISHIDDEN
@@ -1529,10 +1674,10 @@ dump_file0 (struct tar_stat_info *st, const char *p,
 
   /* See if we want only new files, and check if this one is too old to
      put in the archive.
-     
+
      This check is omitted if incremental_option is set *and* the
      requested file is not explicitely listed in the command line. */
-  
+
   if (!(incremental_option && !is_individual_file (p))
       && !S_ISDIR (st->stat.st_mode)
       && OLDER_TAR_STAT_TIME (*st, m)
@@ -1562,51 +1707,31 @@ dump_file0 (struct tar_stat_info *st, const char *p,
   if (is_dir || S_ISREG (st->stat.st_mode) || S_ISCTG (st->stat.st_mode))
     {
       bool ok;
-      int fd = -1;
       struct stat final_stat;
 
-      if (is_dir || file_dumpable_p (st))
-       {
-         fd = open (p,
-                    (O_RDONLY | O_BINARY
-                     | (is_dir ? O_DIRECTORY | O_NONBLOCK : 0)
-                     | (atime_preserve_option == system_atime_preserve
-                        ? O_NOATIME
-                        : 0)));
-         if (fd < 0)
-           {
-             file_removed_diag (p, top_level, open_diag);
-             return;
-           }
-       }
-
       if (is_dir)
        {
          const char *tag_file_name;
          ensure_slash (&st->orig_file_name);
          ensure_slash (&st->file_name);
 
-         if (check_exclusion_tags (st->orig_file_name, &tag_file_name)
-             == exclusion_tag_all)
+         if (check_exclusion_tags (st, &tag_file_name) == exclusion_tag_all)
            {
              exclusion_tag_warning (st->orig_file_name, tag_file_name,
                                     _("directory not dumped"));
-             if (fd >= 0)
-               close (fd);
              return;
            }
-         
-         ok = dump_dir (fd, st, top_level, parent_device);
 
-         /* dump_dir consumes FD if successful.  */
-         if (ok)
-           fd = -1;
+         ok = dump_dir (st);
+
+         fd = st->fd;
+         parentfd = top_level ? chdir_fd : parent->fd;
        }
       else
        {
          enum dump_status status;
 
-         if (fd != -1 && sparse_option && ST_IS_SPARSE (st->stat))
+         if (fd && sparse_option && ST_IS_SPARSE (st->stat))
            {
              status = sparse_dump_file (fd, st);
              if (status == dump_status_not_implemented)
@@ -1619,7 +1744,6 @@ dump_file0 (struct tar_stat_info *st, const char *p,
            {
            case dump_status_ok:
            case dump_status_short:
-             mv_end ();
              file_count_links (st);
              break;
 
@@ -1635,21 +1759,26 @@ dump_file0 (struct tar_stat_info *st, const char *p,
 
       if (ok)
        {
-         /* If possible, reopen a directory if we are preserving
-            atimes, so that we can set just the atime on systems with
-            _FIOSATIME.  */
-         if (fd < 0 && is_dir
-             && atime_preserve_option == replace_atime_preserve)
-           fd = open (p, O_RDONLY | O_BINARY | O_DIRECTORY | O_NONBLOCK);
-
-         if ((fd < 0
-              ? deref_stat (dereference_option, p, &final_stat)
-              : fstat (fd, &final_stat))
-             != 0)
+         if (fd < 0)
            {
-             file_removed_diag (p, top_level, stat_diag);
+             errno = - fd;
              ok = false;
            }
+         else if (fd == 0)
+           {
+             if (parentfd < 0 && ! top_level)
+               {
+                 errno = - parentfd;
+                 ok = false;
+               }
+             else
+               ok = fstatat (parentfd, name, &final_stat, fstatat_flags) == 0;
+           }
+         else
+           ok = fstat (fd, &final_stat) == 0;
+
+         if (! ok)
+           file_removed_diag (p, top_level, stat_diag);
        }
 
       if (ok)
@@ -1666,16 +1795,11 @@ dump_file0 (struct tar_stat_info *st, const char *p,
              set_exit_status (TAREXIT_DIFFERS);
            }
          else if (atime_preserve_option == replace_atime_preserve
-                  && set_file_atime (fd, p, restore_times) != 0)
+                  && set_file_atime (fd, parentfd, name, st->atime) != 0)
            utime_error (p);
        }
 
-      if (0 <= fd && close (fd) != 0)
-       {
-         close_diag (p);
-         ok = false;
-       }
-
+      ok &= tar_stat_close (st);
       if (ok && remove_files_option)
        queue_deferred_unlink (p, is_dir);
 
@@ -1690,7 +1814,7 @@ dump_file0 (struct tar_stat_info *st, const char *p,
       if (linklen != st->stat.st_size || linklen + 1 == 0)
        xalloc_die ();
       buffer = (char *) alloca (linklen + 1);
-      size = readlink (p, buffer, linklen + 1);
+      size = readlinkat (parentfd, name, buffer, linklen + 1);
       if (size < 0)
        {
          file_removed_diag (p, top_level, readlink_diag);
@@ -1769,13 +1893,20 @@ dump_file0 (struct tar_stat_info *st, const char *p,
     queue_deferred_unlink (p, false);
 }
 
+/* Dump a file, recursively.  PARENT describes the file's parent
+   directory, NAME is the file's name relative to PARENT, and FULLNAME
+   its full name, possibly relative to the working directory.  NAME
+   may contain slashes at the top level of invocation.  */
+
 void
-dump_file (const char *p, bool top_level, dev_t parent_device)
+dump_file (struct tar_stat_info *parent, char const *name,
+          char const *fullname)
 {
   struct tar_stat_info st;
   tar_stat_init (&st);
-  dump_file0 (&st, p, top_level, parent_device);
-  if (listed_incremental_option)
-    update_parent_directory (p);
+  st.parent = parent;
+  dump_file0 (&st, name, fullname);
+  if (parent && listed_incremental_option)
+    update_parent_directory (parent);
   tar_stat_destroy (&st);
 }
index 75dc01f8961f532bcccd87e18924236f58e01690..a0a6d67c0b76033b09761fc7ad33ae1b741910c3 100644 (file)
@@ -262,7 +262,7 @@ delete_archive_members (void)
 
          if (current_block == record_end)
            flush_archive ();
-         status = read_header (&current_header, &current_stat_info, 
+         status = read_header (&current_header, &current_stat_info,
                                read_header_auto);
 
          xheader_decode (&current_stat_info);
@@ -296,7 +296,7 @@ delete_archive_members (void)
                  set_next_block_after (current_header);
                  blocks_to_skip = (current_stat_info.stat.st_size
                                    + BLOCKSIZE - 1) / BLOCKSIZE;
-                 
+
                  while (record_end - current_block <= blocks_to_skip)
                    {
                      blocks_to_skip -= (record_end - current_block);
index ad4d27cfe7b08097deebd97e3467440224e3a6a0..d1ddaf926fbc4a8333634c07abfe846e6b8b5989 100644 (file)
@@ -1,4 +1,4 @@
-/* This file is part of GNU tar. 
+/* This file is part of GNU tar.
    Copyright (C) 2009 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
index 32a883f6592f23a505410a4b09d03b2e066f1e1f..0d23d4ab55ec9027b45bfd5ae3dff676ef223e3f 100644 (file)
 
 #include <system.h>
 #include <quotearg.h>
-#include <utimens.h>
 #include <errno.h>
-#include <xgetcwd.h>
 #include <priv-set.h>
+#include <utimens.h>
 
 #include "common.h"
 
@@ -32,20 +31,24 @@ static bool we_are_root;    /* true if our effective uid == 0 */
 static mode_t newdir_umask;    /* umask when creating new directories */
 static mode_t current_umask;   /* current umask (which is set to 0 if -p) */
 
-/* Status of the permissions of a file that we are extracting.  */
-enum permstatus
-{
-  /* This file may have existed already; its permissions are unknown.  */
-  UNKNOWN_PERMSTATUS,
+#define ALL_MODE_BITS ((mode_t) ~ (mode_t) 0)
 
-  /* This file was created using the permissions from the archive,
-     except with S_IRWXG | S_IRWXO masked out if 0 < same_owner_option.  */
-  ARCHIVED_PERMSTATUS,
+#if ! HAVE_FCHMOD && ! defined fchmod
+# define fchmod(fd, mode) (errno = ENOSYS, -1)
+#endif
+#if ! HAVE_FCHOWN && ! defined fchown
+# define fchown(fd, uid, gid) (errno = ENOSYS, -1)
+#endif
 
-  /* This is an intermediate directory; the archive did not specify
-     its permissions.  */
-  INTERDIR_PERMSTATUS
-};
+/* Return true if an error number ERR means the system call is
+   supported in this case.  */
+static bool
+implemented (int err)
+{
+  return ! (err == ENOSYS
+           || err == ENOTSUP
+           || (EOPNOTSUPP != ENOTSUP && err == EOPNOTSUPP));
+}
 
 /* List of directories whose statuses we need to extract after we've
    finished extracting their subsidiary files.  If you consider each
@@ -58,18 +61,44 @@ enum permstatus
 
 struct delayed_set_stat
   {
+    /* Next directory in list.  */
     struct delayed_set_stat *next;
+
+    /* Metadata for this directory.  */
     dev_t dev;
     ino_t ino;
-    mode_t mode;
+    mode_t mode; /* The desired mode is MODE & ~ current_umask.  */
     uid_t uid;
     gid_t gid;
     struct timespec atime;
     struct timespec mtime;
-    size_t file_name_len;
-    mode_t invert_permissions;
-    enum permstatus permstatus;
+
+    /* An estimate of the directory's current mode, along with a mask
+       specifying which bits of this estimate are known to be correct.
+       If CURRENT_MODE_MASK is zero, CURRENT_MODE's value doesn't
+       matter.  */
+    mode_t current_mode;
+    mode_t current_mode_mask;
+
+    /* This directory is an intermediate directory that was created
+       as an ancestor of some other directory; it was not mentioned
+       in the archive, so do not set its uid, gid, atime, or mtime,
+       and don't alter its mode outside of MODE_RWX.  */
+    bool interdir;
+
+    /* Whether symbolic links should be followed when accessing the
+       directory.  */
+    int atflag;
+
+    /* Do not set the status of this directory until after delayed
+       links are created.  */
     bool after_links;
+
+    /* Directory that the name is relative to.  */
+    int change_dir;
+
+    /* Length and contents of name.  */
+    size_t file_name_len;
     char file_name[1];
   };
 
@@ -81,17 +110,25 @@ struct delayed_link
     /* The next delayed link in the list.  */
     struct delayed_link *next;
 
-    /* The device, inode number and last-modified time of the placeholder.  */
+    /* The device, inode number and ctime of the placeholder.  Use
+       ctime, not mtime, to make false matches less likely if some
+       other process removes the placeholder.  */
     dev_t dev;
     ino_t ino;
-    struct timespec mtime;
+    struct timespec ctime;
 
     /* True if the link is symbolic.  */
     bool is_symlink;
 
-    /* The desired owner and group of the link, if it is a symlink.  */
+    /* The desired metadata, valid only the link is symbolic.  */
+    mode_t mode;
     uid_t uid;
     gid_t gid;
+    struct timespec atime;
+    struct timespec mtime;
+
+    /* The directory that the sources and target are relative to.  */
+    int change_dir;
 
     /* A list of sources for this link.  The sources are all to be
        hard-linked together.  */
@@ -131,75 +168,104 @@ extr_init (void)
     }
 }
 
-/* If restoring permissions, restore the mode for FILE_NAME from
-   information given in *STAT_INFO (where *CUR_INFO gives
-   the current status if CUR_INFO is nonzero); otherwise invert the
-   INVERT_PERMISSIONS bits from the file's current permissions.
-   PERMSTATUS specifies the status of the file's permissions.
-   TYPEFLAG specifies the type of the file.  */
-static void
-set_mode (char const *file_name,
-         struct stat const *stat_info,
-         struct stat const *cur_info,
-         mode_t invert_permissions, enum permstatus permstatus,
-         char typeflag)
+/* Use fchmod if possible, fchmodat otherwise.  */
+static int
+fd_chmod (int fd, char const *file, mode_t mode, int atflag)
 {
-  mode_t mode;
-  bool failed;
-  
-  if (0 < same_permissions_option
-      && permstatus != INTERDIR_PERMSTATUS)
+  if (0 <= fd)
     {
-      mode = stat_info->st_mode;
-
-      /* If we created the file and it has a mode that we set already
-        with O_CREAT, then its mode is often set correctly already.
-        But if we are changing ownership, the mode's group and and
-        other permission bits were omitted originally, so it's less
-        likely that the mode is OK now.  Also, on many hosts, some
-        directories inherit the setgid bits from their parents, so we
-        we must set directories' modes explicitly.  */
-      if ((permstatus == ARCHIVED_PERMSTATUS
-          && ! (mode & ~ (0 < same_owner_option ? S_IRWXU : MODE_RWX)))
-         && typeflag != DIRTYPE
-         && typeflag != GNUTYPE_DUMPDIR)
-       return;
+      int result = fchmod (fd, mode);
+      if (result == 0 || implemented (errno))
+       return result;
     }
-  else if (! invert_permissions)
-    return;
-  else
+  return fchmodat (chdir_fd, file, mode, atflag);
+}
+
+/* Use fchown if possible, fchownat otherwise.  */
+static int
+fd_chown (int fd, char const *file, uid_t uid, gid_t gid, int atflag)
+{
+  if (0 <= fd)
     {
-      /* We must inspect a directory's current permissions, since the
-        directory may have inherited its setgid bit from its parent.
+      int result = fchown (fd, uid, gid);
+      if (result == 0 || implemented (errno))
+       return result;
+    }
+  return fchownat (chdir_fd, file, uid, gid, atflag);
+}
 
-        INVERT_PERMISSIONS happens to be nonzero only for directories
-        that we created, so there's no point optimizing this code for
-        other cases.  */
-      struct stat st;
-      if (! cur_info)
+/* Use fstat if possible, fstatat otherwise.  */
+static int
+fd_stat (int fd, char const *file, struct stat *st, int atflag)
+{
+  return (0 <= fd
+         ? fstat (fd, st)
+         : fstatat (chdir_fd, file, st, atflag));
+}
+
+/* Set the mode for FILE_NAME to MODE.
+   MODE_MASK specifies the bits of MODE that we care about;
+   thus if MODE_MASK is zero, do nothing.
+   If FD is nonnegative, it is a file descriptor for the file.
+   CURRENT_MODE and CURRENT_MODE_MASK specify information known about
+   the file's current mode, using the style of struct delayed_set_stat.
+   TYPEFLAG specifies the type of the file.
+   ATFLAG specifies the flag to use when statting the file.  */
+static void
+set_mode (char const *file_name,
+         mode_t mode, mode_t mode_mask, int fd,
+         mode_t current_mode, mode_t current_mode_mask,
+         char typeflag, int atflag)
+{
+  if (((current_mode ^ mode) | ~ current_mode_mask) & mode_mask)
+    {
+      if (MODE_ALL & ~ mode_mask & ~ current_mode_mask)
        {
-         if (stat (file_name, &st) != 0)
+         struct stat st;
+         if (fd_stat (fd, file_name, &st, atflag) != 0)
            {
              stat_error (file_name);
              return;
            }
-         cur_info = &st;
+         current_mode = st.st_mode;
        }
-      mode = cur_info->st_mode ^ invert_permissions;
-    }
 
-  failed = chmod (file_name, mode) != 0;
-  if (failed && errno == EPERM)
-    {
-      /* On Solaris, chmod may fail if we don't have PRIV_ALL.  */
-      if (priv_set_restore_linkdir () == 0)
+      current_mode &= MODE_ALL;
+      mode = (current_mode & ~ mode_mask) | (mode & mode_mask);
+
+      if (current_mode != mode)
        {
-         failed = chmod (file_name, mode) != 0;
-         priv_set_remove_linkdir ();
+         int chmod_errno =
+           fd_chmod (fd, file_name, mode, atflag) == 0 ? 0 : errno;
+
+         /* On Solaris, chmod may fail if we don't have PRIV_ALL, because
+            setuid-root files would otherwise be a backdoor.  See
+            http://opensolaris.org/jive/thread.jspa?threadID=95826
+            (2009-09-03).  */
+         if (chmod_errno == EPERM && (mode & S_ISUID)
+             && priv_set_restore_linkdir () == 0)
+           {
+             chmod_errno =
+               fd_chmod (fd, file_name, mode, atflag) == 0 ? 0 : errno;
+             priv_set_remove_linkdir ();
+           }
+
+         /* Linux fchmodat does not support AT_SYMLINK_NOFOLLOW, and
+            returns ENOTSUP even when operating on non-symlinks, try
+            again with the flag disabled if it does not appear to be
+            supported and if the file is not a symlink.  This
+            introduces a race, alas.  */
+         if (atflag && typeflag != SYMTYPE && ! implemented (chmod_errno))
+           chmod_errno = fd_chmod (fd, file_name, mode, 0) == 0 ? 0 : errno;
+
+         if (chmod_errno
+             && (typeflag != SYMTYPE || implemented (chmod_errno)))
+           {
+             errno = chmod_errno;
+             chmod_error_details (file_name, mode);
+           }
        }
     }
-  if (failed)
-    chmod_error_details (file_name, mode);
 }
 
 /* Check time after successfully setting FILE_NAME's time stamp to T.  */
@@ -234,106 +300,98 @@ check_time (char const *file_name, struct timespec t)
 
 /* Restore stat attributes (owner, group, mode and times) for
    FILE_NAME, using information given in *ST.
-   If CUR_INFO is nonzero, *CUR_INFO is the
-   file's current status.
-   If not restoring permissions, invert the
-   INVERT_PERMISSIONS bits from the file's current permissions.
-   PERMSTATUS specifies the status of the file's permissions.
-   TYPEFLAG specifies the type of the file.  */
-
-/* FIXME: About proper restoration of symbolic link attributes, we still do
-   not have it right.  Pretesters' reports tell us we need further study and
-   probably more configuration.  For now, just use lchown if it exists, and
-   punt for the rest.  Sigh!  */
+   If FD is nonnegative, it is a file descriptor for the file.
+   CURRENT_MODE and CURRENT_MODE_MASK specify information known about
+   the file's current mode, using the style of struct delayed_set_stat.
+   TYPEFLAG specifies the type of the file.
+   If INTERDIR, this is an intermediate directory.
+   ATFLAG specifies the flag to use when statting the file.  */
 
 static void
 set_stat (char const *file_name,
          struct tar_stat_info const *st,
-         struct stat const *cur_info,
-         mode_t invert_permissions, enum permstatus permstatus,
-         char typeflag)
+         int fd, mode_t current_mode, mode_t current_mode_mask,
+         char typeflag, bool interdir, int atflag)
 {
-  if (typeflag != SYMTYPE)
+  /* Do the utime before the chmod because some versions of utime are
+     broken and trash the modes of the file.  */
+
+  if (! touch_option && ! interdir)
     {
-      /* We do the utime before the chmod because some versions of utime are
-        broken and trash the modes of the file.  */
+      struct timespec ts[2];
+      if (incremental_option)
+       ts[0] = st->atime;
+      else
+       ts[0].tv_nsec = UTIME_OMIT;
+      ts[1] = st->mtime;
 
-      if (! touch_option && permstatus != INTERDIR_PERMSTATUS)
+      if (fdutimensat (fd, chdir_fd, file_name, ts, atflag) == 0)
        {
-         /* We set the accessed time to `now', which is really the time we
-            started extracting files, unless incremental_option is used, in
-            which case .st_atime is used.  */
-
-         /* FIXME: incremental_option should set ctime too, but how?  */
-
-         struct timespec ts[2];
          if (incremental_option)
-           ts[0] = st->atime;
-         else
-           ts[0] = start_time;
-         ts[1] = st->mtime;
-
-         if (utimens (file_name, ts) != 0)
-           utime_error (file_name);
-         else
-           {
-             check_time (file_name, ts[0]);
-             check_time (file_name, ts[1]);
-           }
+           check_time (file_name, ts[0]);
+         check_time (file_name, ts[1]);
        }
+      else if (typeflag != SYMTYPE || implemented (errno))
+       utime_error (file_name);
+    }
 
+  if (0 < same_owner_option && ! interdir)
+    {
       /* Some systems allow non-root users to give files away.  Once this
         done, it is not possible anymore to change file permissions.
         However, setting file permissions now would be incorrect, since
         they would apply to the wrong user, and there would be a race
         condition.  So, don't use systems that allow non-root users to
         give files away.  */
+      uid_t uid = st->stat.st_uid;
+      gid_t gid = st->stat.st_gid;
+
+      if (fd_chown (fd, file_name, uid, gid, atflag) == 0)
+       {
+         /* Changing the owner can clear st_mode bits in some cases.  */
+         if ((current_mode | ~ current_mode_mask) & S_IXUGO)
+           current_mode_mask &= ~ (current_mode & (S_ISUID | S_ISGID));
+       }
+      else if (typeflag != SYMTYPE || implemented (errno))
+       chown_error_details (file_name, uid, gid);
     }
 
-  if (0 < same_owner_option && permstatus != INTERDIR_PERMSTATUS)
+  set_mode (file_name,
+           st->stat.st_mode & ~ current_umask,
+           0 < same_permissions_option && ! interdir ? MODE_ALL : MODE_RWX,
+           fd, current_mode, current_mode_mask, typeflag, atflag);
+}
+
+/* For each entry H in the leading prefix of entries in HEAD that do
+   not have after_links marked, mark H and fill in its dev and ino
+   members.  Assume HEAD && ! HEAD->after_links.  */
+static void
+mark_after_links (struct delayed_set_stat *head)
+{
+  struct delayed_set_stat *h = head;
+
+  do
     {
-      /* When lchown exists, it should be used to change the attributes of
-        the symbolic link itself.  In this case, a mere chown would change
-        the attributes of the file the symbolic link is pointing to, and
-        should be avoided.  */
-      int chown_result = 1;
+      struct stat st;
+      h->after_links = 1;
 
-      if (typeflag == SYMTYPE)
-       {
-#if HAVE_LCHOWN
-         chown_result = lchown (file_name, st->stat.st_uid, st->stat.st_gid);
-#endif
-       }
+      if (deref_stat (h->file_name, &st) != 0)
+       stat_error (h->file_name);
       else
        {
-         chown_result = chown (file_name, st->stat.st_uid, st->stat.st_gid);
+         h->dev = st.st_dev;
+         h->ino = st.st_ino;
        }
-
-      if (chown_result == 0)
-       {
-         /* Changing the owner can flip st_mode bits in some cases, so
-            ignore cur_info if it might be obsolete now.  */
-         if (cur_info
-             && cur_info->st_mode & S_IXUGO
-             && cur_info->st_mode & (S_ISUID | S_ISGID))
-           cur_info = NULL;
-       }
-      else if (chown_result < 0)
-       chown_error_details (file_name,
-                            st->stat.st_uid, st->stat.st_gid);
     }
-
-  if (typeflag != SYMTYPE)
-    set_mode (file_name, &st->stat, cur_info,
-             invert_permissions, permstatus, typeflag);
+  while ((h = h->next) && ! h->after_links);
 }
 
 /* Remember to restore stat attributes (owner, group, mode and times)
    for the directory FILE_NAME, using information given in *ST,
    once we stop extracting files into that directory.
-   If not restoring permissions, remember to invert the
-   INVERT_PERMISSIONS bits from the file's current permissions.
-   PERMSTATUS specifies the status of the file's permissions.
+
+   If ST is null, merely create a placeholder node for an intermediate
+   directory that was created by make_directories.
 
    NOTICE: this works only if the archive has usual member order, i.e.
    directory, then the files in that directory. Incremental archive have
@@ -348,26 +406,35 @@ set_stat (char const *file_name,
 */
 static void
 delay_set_stat (char const *file_name, struct tar_stat_info const *st,
-               mode_t invert_permissions, enum permstatus permstatus)
+               mode_t current_mode, mode_t current_mode_mask,
+               mode_t mode, int atflag)
 {
   size_t file_name_len = strlen (file_name);
   struct delayed_set_stat *data =
     xmalloc (offsetof (struct delayed_set_stat, file_name)
             + file_name_len + 1);
   data->next = delayed_set_stat_head;
-  data->dev = st->stat.st_dev;
-  data->ino = st->stat.st_ino;
-  data->mode = st->stat.st_mode;
-  data->uid = st->stat.st_uid;
-  data->gid = st->stat.st_gid;
-  data->atime = st->atime;
-  data->mtime = st->mtime;
+  data->mode = mode;
+  if (st)
+    {
+      data->dev = st->stat.st_dev;
+      data->ino = st->stat.st_ino;
+      data->uid = st->stat.st_uid;
+      data->gid = st->stat.st_gid;
+      data->atime = st->atime;
+      data->mtime = st->mtime;
+    }
   data->file_name_len = file_name_len;
-  data->invert_permissions = invert_permissions;
-  data->permstatus = permstatus;
+  data->current_mode = current_mode;
+  data->current_mode_mask = current_mode_mask;
+  data->interdir = ! st;
+  data->atflag = atflag;
   data->after_links = 0;
+  data->change_dir = chdir_current;
   strcpy (data->file_name, file_name);
   delayed_set_stat_head = data;
+  if (must_be_dot_or_slash (file_name))
+    mark_after_links (data);
 }
 
 /* Update the delayed_set_stat info for an intermediate directory
@@ -382,7 +449,7 @@ repair_delayed_set_stat (char const *dir,
   for (data = delayed_set_stat_head;  data;  data = data->next)
     {
       struct stat st;
-      if (stat (data->file_name, &st) != 0)
+      if (fstatat (chdir_fd, data->file_name, &st, data->atflag) != 0)
        {
          stat_error (data->file_name);
          return;
@@ -398,10 +465,9 @@ repair_delayed_set_stat (char const *dir,
          data->gid = current_stat_info.stat.st_gid;
          data->atime = current_stat_info.atime;
          data->mtime = current_stat_info.mtime;
-         data->invert_permissions =
-           ((current_stat_info.stat.st_mode ^ st.st_mode)
-            & MODE_RWX & ~ current_umask);
-         data->permstatus = ARCHIVED_PERMSTATUS;
+         data->current_mode = st.st_mode;
+         data->current_mode_mask = ALL_MODE_BITS;
+         data->interdir = false;
          return;
        }
     }
@@ -412,20 +478,21 @@ repair_delayed_set_stat (char const *dir,
 
 /* After a file/link/directory creation has failed, see if
    it's because some required directory was not present, and if so,
-   create all required directories.  Return non-zero if a directory
-   was created.  */
+   create all required directories.  Return zero if all the required
+   directories were created, nonzero (issuing a diagnostic) otherwise.
+   Set *INTERDIR_MADE if at least one directory was created.  */
 static int
-make_directories (char *file_name)
+make_directories (char *file_name, bool *interdir_made)
 {
   char *cursor0 = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
   char *cursor;                        /* points into the file name */
-  int did_something = 0;       /* did we do anything yet? */
-  int mode;
-  int invert_permissions;
-  int status;
 
   for (cursor = cursor0; *cursor; cursor++)
     {
+      mode_t mode;
+      mode_t desired_mode;
+      int status;
+
       if (! ISSLASH (*cursor))
        continue;
 
@@ -443,65 +510,74 @@ make_directories (char *file_name)
        continue;
 
       *cursor = '\0';          /* truncate the name there */
-      mode = MODE_RWX & ~ newdir_umask;
-      invert_permissions = we_are_root ? 0 : MODE_WXUSR & ~ mode;
-      status = mkdir (file_name, mode ^ invert_permissions);
+      desired_mode = MODE_RWX & ~ newdir_umask;
+      mode = desired_mode | (we_are_root ? 0 : MODE_WXUSR);
+      status = mkdirat (chdir_fd, file_name, mode);
 
       if (status == 0)
        {
          /* Create a struct delayed_set_stat even if
-            invert_permissions is zero, because
+            mode == desired_mode, because
             repair_delayed_set_stat may need to update the struct.  */
          delay_set_stat (file_name,
-                         &current_stat_info,
-                         invert_permissions, INTERDIR_PERMSTATUS);
+                         0, mode & ~ current_umask, MODE_RWX,
+                         desired_mode, AT_SYMLINK_NOFOLLOW);
 
-         print_for_mkdir (file_name, cursor - file_name, mode);
-         did_something = 1;
-
-         *cursor = '/';
-         continue;
+         print_for_mkdir (file_name, cursor - file_name, desired_mode);
+         *interdir_made = true;
+       }
+      else if (errno == EEXIST)
+       status = 0;
+      else
+       {
+         /* Check whether the desired file exists.  Even when the
+            file exists, mkdir can fail with some errno value E other
+            than EEXIST, so long as E describes an error condition
+            that also applies.  */
+         int e = errno;
+         struct stat st;
+         status = fstatat (chdir_fd, file_name, &st, 0);
+         if (status)
+           {
+             errno = e;
+             mkdir_error (file_name);
+           }
        }
 
       *cursor = '/';
-
-      if (errno == EEXIST)
-       continue;               /* Directory already exists.  */
-      else if ((errno == ENOSYS /* Automounted dirs on Solaris return
-                                  this. Reported by Warren Hyde
-                                  <Warren.Hyde@motorola.com> */
-              || ERRNO_IS_EACCES)  /* Turbo C mkdir gives a funny errno.  */
-              && access (file_name, W_OK) == 0)
-       continue;
-
-      /* Some other error in the mkdir.  We return to the caller.  */
-      break;
+      if (status)
+       return status;
     }
 
-  return did_something;                /* tell them to retry if we made one */
+  return 0;
 }
 
+/* Return true if FILE_NAME (with status *STP, if STP) is not a
+   directory, and has a time stamp newer than (or equal to) that of
+   TAR_STAT.  */
 static bool
-file_newer_p (const char *file_name, struct tar_stat_info *tar_stat)
+file_newer_p (const char *file_name, struct stat const *stp,
+             struct tar_stat_info *tar_stat)
 {
   struct stat st;
 
-  if (stat (file_name, &st))
+  if (!stp)
     {
-      if (errno != ENOENT)
+      if (deref_stat (file_name, &st) != 0)
        {
-         stat_warn (file_name);
-         /* Be on the safe side: if the file does exist assume it is newer */
-         return true;
+         if (errno != ENOENT)
+           {
+             stat_warn (file_name);
+             /* Be safer: if the file exists, assume it is newer.  */
+             return true;
+           }
+         return false;
        }
-      return false;
+      stp = &st;
     }
-  if (!S_ISDIR (st.st_mode)
-      && tar_timespec_cmp (tar_stat->mtime, get_stat_mtime (&st)) <= 0)
-    {
-      return true;
-    }
-  return false;
+
+  return (! S_ISDIR (stp->st_mode)
+         && tar_timespec_cmp (tar_stat->mtime, get_stat_mtime (stp)) <= 0);
 }
 
 #define RECOVER_NO 0
@@ -513,18 +589,39 @@ file_newer_p (const char *file_name, struct tar_stat_info *tar_stat)
    Return RECOVER_OK if we somewhat increased our chances at a successful
    extraction, RECOVER_NO if there are no chances, and RECOVER_SKIP if the
    caller should skip extraction of that member.  The value of errno is
-   properly restored on returning RECOVER_NO.  */
+   properly restored on returning RECOVER_NO.
+
+   If REGULAR, the caller was trying to extract onto a regular file.
+
+   Set *INTERDIR_MADE if an intermediate directory is made as part of
+   the recovery process.  */
 
 static int
-maybe_recoverable (char *file_name, int *interdir_made)
+maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
 {
   int e = errno;
+  struct stat st;
+  struct stat const *stp = 0;
 
   if (*interdir_made)
     return RECOVER_NO;
 
-  switch (errno)
+  switch (e)
     {
+    case ELOOP:
+      if (! regular
+         || old_files_option != OVERWRITE_OLD_FILES || dereference_option)
+       break;
+      if (strchr (file_name, '/'))
+       {
+         if (deref_stat (file_name, &st) != 0)
+           break;
+         stp = &st;
+       }
+
+      /* The caller tried to open a symbolic link with O_NOFOLLOW.
+        Fall through, treating it as an already-existing file.  */
+
     case EEXIST:
       /* Remove an old file, if the options allow this.  */
 
@@ -534,21 +631,16 @@ maybe_recoverable (char *file_name, int *interdir_made)
          return RECOVER_SKIP;
 
        case KEEP_NEWER_FILES:
-         if (file_newer_p (file_name, &current_stat_info))
-           {
-             errno = e;
-             return RECOVER_NO;
-           }
+         if (file_newer_p (file_name, stp, &current_stat_info))
+           break;
          /* FALL THROUGH */
 
        case DEFAULT_OLD_FILES:
        case NO_OVERWRITE_DIR_OLD_FILES:
        case OVERWRITE_OLD_FILES:
-         {
-           int r = remove_any_file (file_name, ORDINARY_REMOVE_OPTION);
-           errno = EEXIST;
-           return r > 0 ? RECOVER_OK : RECOVER_NO;
-         }
+         if (0 < remove_any_file (file_name, ORDINARY_REMOVE_OPTION))
+           return RECOVER_OK;
+         break;
 
        case UNLINK_FIRST_OLD_FILES:
          break;
@@ -556,19 +648,17 @@ maybe_recoverable (char *file_name, int *interdir_made)
 
     case ENOENT:
       /* Attempt creating missing intermediate directories.  */
-      if (! make_directories (file_name))
-       {
-         errno = ENOENT;
-         return RECOVER_NO;
-       }
-      *interdir_made = 1;
-      return RECOVER_OK;
+      if (make_directories (file_name, interdir_made) == 0 && *interdir_made)
+       return RECOVER_OK;
+      break;
 
     default:
       /* Just say we can't do anything about it...  */
-
-      return RECOVER_NO;
+      break;
     }
+
+  errno = e;
+  return RECOVER_NO;
 }
 
 /* Fix the statuses of all directories whose statuses need fixing, and
@@ -587,7 +677,8 @@ apply_nonancestor_delayed_set_stat (char const *file_name, bool after_links)
       struct delayed_set_stat *data = delayed_set_stat_head;
       bool skip_this_one = 0;
       struct stat st;
-      struct stat const *cur_info = 0;
+      mode_t current_mode = data->current_mode;
+      mode_t current_mode_mask = data->current_mode_mask;
 
       check_for_renamed_directories |= data->after_links;
 
@@ -599,20 +690,26 @@ apply_nonancestor_delayed_set_stat (char const *file_name, bool after_links)
              && memcmp (file_name, data->file_name, data->file_name_len) == 0))
        break;
 
+      chdir_do (data->change_dir);
+
       if (check_for_renamed_directories)
        {
-         cur_info = &st;
-         if (stat (data->file_name, &st) != 0)
+         if (fstatat (chdir_fd, data->file_name, &st, data->atflag) != 0)
            {
              stat_error (data->file_name);
              skip_this_one = 1;
            }
-         else if (! (st.st_dev == data->dev && st.st_ino == data->ino))
+         else
            {
-             ERROR ((0, 0,
-                     _("%s: Directory renamed before its status could be extracted"),
-                     quotearg_colon (data->file_name)));
-             skip_this_one = 1;
+             current_mode = st.st_mode;
+             current_mode_mask = ALL_MODE_BITS;
+             if (! (st.st_dev == data->dev && st.st_ino == data->ino))
+               {
+                 ERROR ((0, 0,
+                         _("%s: Directory renamed before its status could be extracted"),
+                         quotearg_colon (data->file_name)));
+                 skip_this_one = 1;
+               }
            }
        }
 
@@ -624,8 +721,9 @@ apply_nonancestor_delayed_set_stat (char const *file_name, bool after_links)
          sb.stat.st_gid = data->gid;
          sb.atime = data->atime;
          sb.mtime = data->mtime;
-         set_stat (data->file_name, &sb, cur_info,
-                   data->invert_permissions, data->permstatus, DIRTYPE);
+         set_stat (data->file_name, &sb,
+                   -1, current_mode, current_mode_mask,
+                   DIRTYPE, data->interdir, data->atflag);
        }
 
       delayed_set_stat_head = data->next;
@@ -642,19 +740,20 @@ extract_dir (char *file_name, int typeflag)
 {
   int status;
   mode_t mode;
-  int interdir_made = 0;
+  mode_t current_mode = 0;
+  mode_t current_mode_mask = 0;
+  int atflag = 0;
+  bool interdir_made = false;
 
   /* Save 'root device' to avoid purging mount points. */
   if (one_file_system_option && root_device == 0)
     {
       struct stat st;
-      char *dir = xgetcwd ();
 
-      if (deref_stat (true, dir, &st))
-       stat_diag (dir);
+      if (fstatat (chdir_fd, ".", &st, 0) != 0)
+       stat_diag (".");
       else
        root_device = st.st_dev;
-      free (dir);
     }
 
   if (incremental_option)
@@ -663,36 +762,55 @@ extract_dir (char *file_name, int typeflag)
   else if (typeflag == GNUTYPE_DUMPDIR)
     skip_member ();
 
-  mode = current_stat_info.stat.st_mode | (we_are_root ? 0 : MODE_WXUSR);
-  if (0 < same_owner_option || current_stat_info.stat.st_mode & ~ MODE_RWX)
-    mode &= S_IRWXU;
-
-  while ((status = mkdir (file_name, mode)))
+  /* If ownership or permissions will be restored later, create the
+     directory with restrictive permissions at first, so that in the
+     meantime processes owned by other users do not inadvertently
+     create files under this directory that inherit the wrong owner,
+     group, or permissions from the directory.  If not root, though,
+     make the directory writeable and searchable at first, so that
+     files can be created under it.  */
+  mode = ((current_stat_info.stat.st_mode
+          & (0 < same_owner_option || 0 < same_permissions_option
+             ? S_IRWXU
+             : MODE_RWX))
+         | (we_are_root ? 0 : MODE_WXUSR));
+
+  for (;;)
     {
+      status = mkdir (file_name, mode);
+      if (status == 0)
+       {
+         current_mode = mode & ~ current_umask;
+         current_mode_mask = MODE_RWX;
+         atflag = AT_SYMLINK_NOFOLLOW;
+         break;
+       }
+
       if (errno == EEXIST
          && (interdir_made
              || old_files_option == DEFAULT_OLD_FILES
              || old_files_option == OVERWRITE_OLD_FILES))
        {
          struct stat st;
-         if (stat (file_name, &st) == 0)
+         if (deref_stat (file_name, &st) == 0)
            {
-             if (interdir_made)
-               {
-                 repair_delayed_set_stat (file_name, &st);
-                 return 0;
-               }
-             if (S_ISDIR (st.st_mode))
+             current_mode = st.st_mode;
+             current_mode_mask = ALL_MODE_BITS;
+
+             if (S_ISDIR (current_mode))
                {
-                 status = 0;
-                 mode = st.st_mode;
+                 if (interdir_made)
+                   {
+                     repair_delayed_set_stat (file_name, &st);
+                     return 0;
+                   }
                  break;
                }
            }
          errno = EEXIST;
        }
 
-      switch (maybe_recoverable (file_name, &interdir_made))
+      switch (maybe_recoverable (file_name, false, &interdir_made))
        {
        case RECOVER_OK:
          continue;
@@ -714,40 +832,26 @@ extract_dir (char *file_name, int typeflag)
   if (status == 0
       || old_files_option == DEFAULT_OLD_FILES
       || old_files_option == OVERWRITE_OLD_FILES)
-    {
-      if (status == 0)
-       delay_set_stat (file_name, &current_stat_info,
-                       ((mode ^ current_stat_info.stat.st_mode)
-                        & MODE_RWX & ~ current_umask),
-                       ARCHIVED_PERMSTATUS);
-      else /* For an already existing directory, invert_perms must be 0 */
-       delay_set_stat (file_name, &current_stat_info,
-                       0,
-                       UNKNOWN_PERMSTATUS);
-    }
+    delay_set_stat (file_name, &current_stat_info,
+                   current_mode, current_mode_mask,
+                   current_stat_info.stat.st_mode, atflag);
   return status;
 }
 
 
+
 static int
-open_output_file (char *file_name, int typeflag, mode_t mode)
+open_output_file (char const *file_name, int typeflag, mode_t mode,
+                 mode_t *current_mode, mode_t *current_mode_mask)
 {
   int fd;
-  int openflag = (O_WRONLY | O_BINARY | O_CREAT
-                 | (old_files_option == OVERWRITE_OLD_FILES
-                    ? O_TRUNC
+  bool overwriting_old_files = old_files_option == OVERWRITE_OLD_FILES;
+  int openflag = (O_WRONLY | O_BINARY | O_CLOEXEC | O_NOCTTY | O_NONBLOCK
+                 | O_CREAT
+                 | (overwriting_old_files
+                    ? O_TRUNC | (dereference_option ? 0 : O_NOFOLLOW)
                     : O_EXCL));
 
-#if O_CTG
-  /* Contiguous files (on the Masscomp) have to specify the size in
-     the open call that creates them.  */
-
-  if (typeflag == CONTTYPE)
-    fd = open (file_name, openflag | O_CTG, mode, current_stat_info.stat.st_size);
-  else
-    fd = open (file_name, openflag, mode);
-
-#else /* not O_CTG */
   if (typeflag == CONTTYPE)
     {
       static int conttype_diagnosed;
@@ -759,9 +863,35 @@ open_output_file (char *file_name, int typeflag, mode_t mode)
                   (0, 0, _("Extracting contiguous files as regular files")));
        }
     }
-  fd = open (file_name, openflag, mode);
 
-#endif /* not O_CTG */
+  fd = openat (chdir_fd, file_name, openflag, mode);
+  if (0 <= fd)
+    {
+      if (overwriting_old_files)
+       {
+         struct stat st;
+         if (fstat (fd, &st) != 0)
+           {
+             int e = errno;
+             close (fd);
+             errno = e;
+             return -1;
+           }
+         if (! S_ISREG (st.st_mode))
+           {
+             close (fd);
+             errno = EEXIST;
+             return -1;
+           }
+         *current_mode = st.st_mode;
+         *current_mode_mask = ALL_MODE_BITS;
+       }
+      else
+       {
+         *current_mode = mode & ~ current_umask;
+         *current_mode_mask = MODE_RWX;
+       }
+    }
 
   return fd;
 }
@@ -775,12 +905,11 @@ extract_file (char *file_name, int typeflag)
   int status;
   size_t count;
   size_t written;
-  int interdir_made = 0;
-  mode_t mode = current_stat_info.stat.st_mode & MODE_RWX & ~ current_umask;
-  mode_t invert_permissions =
-    0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
-
-  /* FIXME: deal with protection issues.  */
+  bool interdir_made = false;
+  mode_t mode = (current_stat_info.stat.st_mode & MODE_RWX
+                & ~ (0 < same_owner_option ? S_IRWXG | S_IRWXO : 0));
+  mode_t current_mode = 0;
+  mode_t current_mode_mask = 0;
 
   if (to_stdout_option)
     fd = STDOUT_FILENO;
@@ -795,24 +924,23 @@ extract_file (char *file_name, int typeflag)
     }
   else
     {
-      int recover = RECOVER_NO;
-      do
-       fd = open_output_file (file_name, typeflag, mode ^ invert_permissions);
-      while (fd < 0
-            && (recover = maybe_recoverable (file_name, &interdir_made))
-                == RECOVER_OK);
-
-      if (fd < 0)
+      while ((fd = open_output_file (file_name, typeflag, mode,
+                                    &current_mode, &current_mode_mask))
+            < 0)
        {
-         skip_member ();
-         if (recover == RECOVER_SKIP)
-           return 0;
-         open_error (file_name);
-         return 1;
+         int recover = maybe_recoverable (file_name, true, &interdir_made);
+         if (recover != RECOVER_OK)
+           {
+             skip_member ();
+             if (recover == RECOVER_SKIP)
+               return 0;
+             open_error (file_name);
+             return 1;
+           }
        }
     }
 
-  mv_begin (&current_stat_info);
+  mv_begin_read (&current_stat_info);
   if (current_stat_info.is_sparse)
     sparse_extract_file (fd, &current_stat_info, &size);
   else
@@ -860,17 +988,18 @@ extract_file (char *file_name, int typeflag)
   if (to_stdout_option)
     return 0;
 
+  if (! to_command_option)
+    set_stat (file_name, &current_stat_info, fd,
+             current_mode, current_mode_mask, typeflag, false,
+             (old_files_option == OVERWRITE_OLD_FILES
+              ? 0 : AT_SYMLINK_NOFOLLOW));
+
   status = close (fd);
   if (status < 0)
     close_error (file_name);
 
   if (to_command_option)
     sys_wait_command ();
-  else
-    set_stat (file_name, &current_stat_info, NULL, invert_permissions,
-             (old_files_option == OVERWRITE_OLD_FILES ?
-              UNKNOWN_PERMSTATUS : ARCHIVED_PERMSTATUS),
-             typeflag);
 
   return status;
 }
@@ -882,18 +1011,28 @@ extract_file (char *file_name, int typeflag)
    process.  */
 
 static int
-create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
+create_placeholder_file (char *file_name, bool is_symlink, bool *interdir_made)
 {
   int fd;
   struct stat st;
 
-  while ((fd = open (file_name, O_WRONLY | O_CREAT | O_EXCL, 0)) < 0)
-    if (! maybe_recoverable (file_name, interdir_made))
-      break;
+  while ((fd = openat (chdir_fd, file_name, O_WRONLY | O_CREAT | O_EXCL, 0)) < 0)
+    {
+      switch (maybe_recoverable (file_name, false, interdir_made))
+       {
+       case RECOVER_OK:
+         continue;
+
+       case RECOVER_SKIP:
+         return 0;
 
-  if (fd < 0)
-    open_error (file_name);
-  else if (fstat (fd, &st) != 0)
+       case RECOVER_NO:
+         open_error (file_name);
+         return -1;
+       }
+      }
+
+  if (fstat (fd, &st) != 0)
     {
       stat_error (file_name);
       close (fd);
@@ -911,13 +1050,17 @@ create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
       delayed_link_head = p;
       p->dev = st.st_dev;
       p->ino = st.st_ino;
-      p->mtime = get_stat_mtime (&st);
+      p->ctime = get_stat_ctime (&st);
       p->is_symlink = is_symlink;
       if (is_symlink)
        {
+         p->mode = current_stat_info.stat.st_mode;
          p->uid = current_stat_info.stat.st_uid;
          p->gid = current_stat_info.stat.st_gid;
+         p->atime = current_stat_info.atime;
+         p->mtime = current_stat_info.mtime;
        }
+      p->change_dir = chdir_current;
       p->sources = xmalloc (offsetof (struct string_list, string)
                            + strlen (file_name) + 1);
       p->sources->next = 0;
@@ -929,21 +1072,7 @@ create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
          && strncmp (file_name, h->file_name, h->file_name_len) == 0
          && ISSLASH (file_name[h->file_name_len])
          && (last_component (file_name) == file_name + h->file_name_len + 1))
-       {
-         do
-           {
-             h->after_links = 1;
-
-             if (stat (h->file_name, &st) != 0)
-               stat_error (h->file_name);
-             else
-               {
-                 h->dev = st.st_dev;
-                 h->ino = st.st_ino;
-               }
-           }
-         while ((h = h->next) && ! h->after_links);
-       }
+       mark_after_links (h);
 
       return 0;
     }
@@ -954,11 +1083,12 @@ create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
 static int
 extract_link (char *file_name, int typeflag)
 {
-  int interdir_made = 0;
+  bool interdir_made = false;
   char const *link_name;
+  int rc;
 
   link_name = current_stat_info.link_name;
-  
+
   if (! absolute_names_option && contains_dot_dot (link_name))
     return create_placeholder_file (file_name, false, &interdir_made);
 
@@ -966,17 +1096,19 @@ extract_link (char *file_name, int typeflag)
     {
       struct stat st1, st2;
       int e;
-      int status = link (link_name, file_name);
+      int status = linkat (chdir_fd, link_name, chdir_fd, file_name, 0);
       e = errno;
 
       if (status == 0)
        {
          struct delayed_link *ds = delayed_link_head;
-         if (ds && lstat (link_name, &st1) == 0)
+         if (ds
+             && fstatat (chdir_fd, link_name, &st1, AT_SYMLINK_NOFOLLOW) == 0)
            for (; ds; ds = ds->next)
-             if (ds->dev == st1.st_dev
+             if (ds->change_dir == chdir_current
+                 && ds->dev == st1.st_dev
                  && ds->ino == st1.st_ino
-                 && timespec_cmp (ds->mtime, get_stat_mtime (&st1)) == 0)
+                 && timespec_cmp (ds->ctime, get_stat_ctime (&st1)) == 0)
                {
                  struct string_list *p =  xmalloc (offsetof (struct string_list, string)
                                                    + strlen (file_name) + 1);
@@ -988,16 +1120,21 @@ extract_link (char *file_name, int typeflag)
          return 0;
        }
       else if ((e == EEXIST && strcmp (link_name, file_name) == 0)
-              || (lstat (link_name, &st1) == 0
-                  && lstat (file_name, &st2) == 0
+              || ((fstatat (chdir_fd, link_name, &st1, AT_SYMLINK_NOFOLLOW)
+                   == 0)
+                  && (fstatat (chdir_fd, file_name, &st2, AT_SYMLINK_NOFOLLOW)
+                      == 0)
                   && st1.st_dev == st2.st_dev
                   && st1.st_ino == st2.st_ino))
        return 0;
 
       errno = e;
     }
-  while (maybe_recoverable (file_name, &interdir_made));
+  while ((rc = maybe_recoverable (file_name, false, &interdir_made))
+        == RECOVER_OK);
 
+  if (rc == RECOVER_SKIP)
+    return 0;
   if (!(incremental_option && errno == EEXIST))
     {
       link_error (link_name, file_name);
@@ -1010,23 +1147,30 @@ static int
 extract_symlink (char *file_name, int typeflag)
 {
 #ifdef HAVE_SYMLINK
-  int status;
-  int interdir_made = 0;
+  bool interdir_made = false;
 
   if (! absolute_names_option
       && (IS_ABSOLUTE_FILE_NAME (current_stat_info.link_name)
          || contains_dot_dot (current_stat_info.link_name)))
     return create_placeholder_file (file_name, true, &interdir_made);
 
-  while ((status = symlink (current_stat_info.link_name, file_name)))
-    if (!maybe_recoverable (file_name, &interdir_made))
-      break;
+  while (symlinkat (current_stat_info.link_name, chdir_fd, file_name) != 0)
+    switch (maybe_recoverable (file_name, false, &interdir_made))
+      {
+      case RECOVER_OK:
+       continue;
 
-  if (status == 0)
-    set_stat (file_name, &current_stat_info, NULL, 0, 0, SYMTYPE);
-  else
-    symlink_error (current_stat_info.link_name, file_name);
-  return status;
+      case RECOVER_SKIP:
+       return 0;
+
+      case RECOVER_NO:
+       symlink_error (current_stat_info.link_name, file_name);
+       return -1;
+      }
+
+  set_stat (file_name, &current_stat_info, -1, 0, 0,
+           SYMTYPE, false, AT_SYMLINK_NOFOLLOW);
+  return 0;
 
 #else
   static int warned_once;
@@ -1046,23 +1190,29 @@ extract_symlink (char *file_name, int typeflag)
 static int
 extract_node (char *file_name, int typeflag)
 {
-  int status;
-  int interdir_made = 0;
-  mode_t mode = current_stat_info.stat.st_mode & ~ current_umask;
-  mode_t invert_permissions =
-    0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
+  bool interdir_made = false;
+  mode_t mode = (current_stat_info.stat.st_mode & MODE_RWX
+                & ~ (0 < same_owner_option ? S_IRWXG | S_IRWXO : 0));
 
-  do
-    status = mknod (file_name, mode ^ invert_permissions,
-                   current_stat_info.stat.st_rdev);
-  while (status && maybe_recoverable (file_name, &interdir_made));
+  while (mknodat (chdir_fd, file_name, mode, current_stat_info.stat.st_rdev)
+        != 0)
+    switch (maybe_recoverable (file_name, false, &interdir_made))
+      {
+      case RECOVER_OK:
+       continue;
 
-  if (status != 0)
-    mknod_error (file_name);
-  else
-    set_stat (file_name, &current_stat_info, NULL, invert_permissions,
-             ARCHIVED_PERMSTATUS, typeflag);
-  return status;
+      case RECOVER_SKIP:
+       return 0;
+
+      case RECOVER_NO:
+       mknod_error (file_name);
+       return -1;
+      }
+
+  set_stat (file_name, &current_stat_info, -1,
+           mode & ~ current_umask, MODE_RWX,
+           typeflag, false, AT_SYMLINK_NOFOLLOW);
+  return 0;
 }
 #endif
 
@@ -1070,22 +1220,28 @@ extract_node (char *file_name, int typeflag)
 static int
 extract_fifo (char *file_name, int typeflag)
 {
-  int status;
-  int interdir_made = 0;
-  mode_t mode = current_stat_info.stat.st_mode & ~ current_umask;
-  mode_t invert_permissions =
-    0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
+  bool interdir_made = false;
+  mode_t mode = (current_stat_info.stat.st_mode & MODE_RWX
+                & ~ (0 < same_owner_option ? S_IRWXG | S_IRWXO : 0));
 
-  while ((status = mkfifo (file_name, mode)) != 0)
-    if (!maybe_recoverable (file_name, &interdir_made))
-      break;
+  while (mkfifoat (chdir_fd, file_name, mode) != 0)
+    switch (maybe_recoverable (file_name, false, &interdir_made))
+      {
+      case RECOVER_OK:
+       continue;
 
-  if (status == 0)
-    set_stat (file_name, &current_stat_info, NULL, invert_permissions,
-             ARCHIVED_PERMSTATUS, typeflag);
-  else
-    mkfifo_error (file_name);
-  return status;
+      case RECOVER_SKIP:
+       return 0;
+
+      case RECOVER_NO:
+       mkfifo_error (file_name);
+       return -1;
+      }
+
+  set_stat (file_name, &current_stat_info, -1,
+           mode & ~ current_umask, MODE_RWX,
+           typeflag, false, AT_SYMLINK_NOFOLLOW);
+  return 0;
 }
 #endif
 
@@ -1217,7 +1373,7 @@ prepare_to_extract (char const *file_name, int typeflag, tar_extractor_t *fun)
       break;
 
     case KEEP_NEWER_FILES:
-      if (file_newer_p (file_name, &current_stat_info))
+      if (file_newer_p (file_name, 0, &current_stat_info))
        {
          WARNOPT (WARN_IGNORE_NEWER,
                   (0, 0, _("Current %s is newer or same age"),
@@ -1241,12 +1397,9 @@ extract_archive (void)
   tar_extractor_t fun;
 
   fatal_exit_hook = extract_finish;
-  
-  /* Try to disable the ability to unlink a directory.  */
-  priv_set_remove_linkdir ();
 
   set_next_block_after (current_header);
-  decode_header (current_header, &current_stat_info, &current_format, 1);
+
   if (!current_stat_info.file_name[0]
       || (interactive_option
          && !confirm ("extract", current_stat_info.file_name)))
@@ -1263,7 +1416,11 @@ extract_archive (void)
      it is an incremental archive.
      (see NOTICE in the comment to delay_set_stat above) */
   if (!delay_directory_restore_option)
-    apply_nonancestor_delayed_set_stat (current_stat_info.file_name, 0);
+    {
+      int dir = chdir_current;
+      apply_nonancestor_delayed_set_stat (current_stat_info.file_name, 0);
+      chdir_do (dir);
+    }
 
   /* Take a safety backup of a previously existing file.  */
 
@@ -1293,7 +1450,7 @@ extract_archive (void)
 
 }
 
-/* Extract the symbolic links whose final extraction were delayed.  */
+/* Extract the links whose final extraction were delayed.  */
 static void
 apply_delayed_links (void)
 {
@@ -1304,6 +1461,8 @@ apply_delayed_links (void)
       struct string_list *sources = ds->sources;
       char const *valid_source = 0;
 
+      chdir_do (ds->change_dir);
+
       for (sources = ds->sources; sources; sources = sources->next)
        {
          char const *source = sources->string;
@@ -1312,30 +1471,36 @@ apply_delayed_links (void)
          /* Make sure the placeholder file is still there.  If not,
             don't create a link, as the placeholder was probably
             removed by a later extraction.  */
-         if (lstat (source, &st) == 0
+         if (fstatat (chdir_fd, source, &st, AT_SYMLINK_NOFOLLOW) == 0
              && st.st_dev == ds->dev
              && st.st_ino == ds->ino
-             && timespec_cmp (get_stat_mtime (&st), ds->mtime) == 0)
+             && timespec_cmp (get_stat_ctime (&st), ds->ctime) == 0)
            {
              /* Unlink the placeholder, then create a hard link if possible,
                 a symbolic link otherwise.  */
-             if (unlink (source) != 0)
+             if (unlinkat (chdir_fd, source, 0) != 0)
                unlink_error (source);
-             else if (valid_source && link (valid_source, source) == 0)
+             else if (valid_source
+                      && (linkat (chdir_fd, valid_source, chdir_fd, source, 0)
+                          == 0))
                ;
              else if (!ds->is_symlink)
                {
-                 if (link (ds->target, source) != 0)
+                 if (linkat (chdir_fd, ds->target, chdir_fd, source, 0) != 0)
                    link_error (ds->target, source);
                }
-             else if (symlink (ds->target, source) != 0)
+             else if (symlinkat (ds->target, chdir_fd, source) != 0)
                symlink_error (ds->target, source);
              else
                {
                  struct tar_stat_info st1;
+                 st1.stat.st_mode = ds->mode;
                  st1.stat.st_uid = ds->uid;
                  st1.stat.st_gid = ds->gid;
-                 set_stat (source, &st1, NULL, 0, 0, SYMTYPE);
+                 st1.atime = ds->atime;
+                 st1.mtime = ds->mtime;
+                 set_stat (source, &st1, -1, 0, 0, SYMTYPE,
+                           false, AT_SYMLINK_NOFOLLOW);
                  valid_source = source;
                }
            }
@@ -1377,16 +1542,17 @@ extract_finish (void)
 bool
 rename_directory (char *src, char *dst)
 {
-  if (rename (src, dst))
+  if (renameat (chdir_fd, src, chdir_fd, dst) != 0)
     {
       int e = errno;
+      bool interdir_made;
 
       switch (e)
        {
        case ENOENT:
-         if (make_directories (dst))
+         if (make_directories (dst, &interdir_made) == 0)
            {
-             if (rename (src, dst) == 0)
+             if (renameat (chdir_fd, src, chdir_fd, dst) == 0)
                return true;
              e = errno;
            }
index dc880cd88ce32f27d00dea401d3d98309346a7b6..628ff296dc13036c7d22f3271a19b700ca1c1991 100644 (file)
@@ -43,7 +43,7 @@ enum children
 #define DIR_IS_INITED(d) ((d)->flags & DIRF_INIT)
 #define DIR_IS_NFS(d) ((d)->flags & DIRF_NFS)
 #define DIR_IS_FOUND(d) ((d)->flags & DIRF_FOUND)
-#define DIR_IS_NEW(d) ((d)->flags & DIRF_NEW)
+/* #define DIR_IS_NEW(d) ((d)->flags & DIRF_NEW) FIXME: not used */
 #define DIR_IS_RENAMED(d) ((d)->flags & DIRF_RENAMED)
 
 #define DIR_SET_FLAG(d,f) (d)->flags |= (f)
@@ -77,14 +77,14 @@ struct directory
     char *name;                        /* file name of directory */
   };
 
-struct dumpdir *
+static struct dumpdir *
 dumpdir_create0 (const char *contents, const char *cmask)
 {
   struct dumpdir *dump;
   size_t i, total, ctsize, len;
   char *p;
   const char *q;
-  
+
   for (i = 0, total = 0, ctsize = 1, q = contents; *q; total++, q += len)
     {
       len = strlen (q) + 1;
@@ -108,13 +108,13 @@ dumpdir_create0 (const char *contents, const char *cmask)
   return dump;
 }
 
-struct dumpdir *
+static struct dumpdir *
 dumpdir_create (const char *contents)
 {
   return dumpdir_create0 (contents, "YND");
 }
 
-void
+static void
 dumpdir_free (struct dumpdir *dump)
 {
   free (dump->elv);
@@ -131,7 +131,7 @@ compare_dirnames (const void *first, const void *second)
 
 /* Locate NAME in the dumpdir array DUMP.
    Return pointer to the slot in DUMP->contents, or NULL if not found */
-char *
+static char *
 dumpdir_locate (struct dumpdir *dump, const char *name)
 {
   char **ptr;
@@ -146,16 +146,16 @@ dumpdir_locate (struct dumpdir *dump, const char *name)
 struct dumpdir_iter
 {
   struct dumpdir *dump; /* Dumpdir being iterated */
-  int all;              /* Iterate over all entries, not only D/N/Y */ 
+  int all;              /* Iterate over all entries, not only D/N/Y */
   size_t next;          /* Index of the next element */
 };
 
-char *
+static char *
 dumpdir_next (struct dumpdir_iter *itr)
 {
   size_t cur = itr->next;
   char *ret = NULL;
-  
+
   if (itr->all)
     {
       ret = itr->dump->contents + cur;
@@ -172,7 +172,7 @@ dumpdir_next (struct dumpdir_iter *itr)
   return ret;
 }
 
-char *
+static char *
 dumpdir_first (struct dumpdir *dump, int all, struct dumpdir_iter **pitr)
 {
   struct dumpdir_iter *itr = xmalloc (sizeof (*itr));
@@ -258,7 +258,7 @@ make_directory (const char *name, char *caname)
   directory->dump = directory->idump = NULL;
   directory->orig = NULL;
   directory->flags = false;
-  if (namelen && ISSLASH (name[namelen - 1]))
+  if (namelen > 1 && ISSLASH (name[namelen - 1]))
     namelen--;
   directory->name = xmalloc (namelen + 1);
   memcpy (directory->name, name, namelen);
@@ -288,9 +288,9 @@ attach_directory (const char *name)
   dirtail = dir;
   return dir;
 }
-                
+
 \f
-void
+static void
 dirlist_replace_prefix (const char *pref, const char *repl)
 {
   struct directory *dp;
@@ -402,26 +402,17 @@ find_directory_meta (dev_t dev, ino_t ino)
 }
 
 void
-update_parent_directory (const char *name)
+update_parent_directory (struct tar_stat_info *parent)
 {
-  struct directory *directory;
-  char *p;
-
-  p = dir_name (name);
-  directory = find_directory (p);
+  struct directory *directory = find_directory (parent->orig_file_name);
   if (directory)
     {
       struct stat st;
-      if (deref_stat (dereference_option, p, &st) != 0)
-       {
-         if (errno != ENOENT) 
-           stat_diag (directory->name);
-         /* else: should have been already reported */
-       }
+      if (fstat (parent->fd, &st) != 0)
+       stat_diag (directory->name);
       else
        directory->mtime = get_stat_mtime (&st);
     }
-  free (p);
 }
 
 #define PD_FORCE_CHILDREN 0x10
@@ -429,12 +420,13 @@ update_parent_directory (const char *name)
 #define PD_CHILDREN(f) ((f) & 3)
 
 static struct directory *
-procdir (const char *name_buffer, struct stat *stat_data,
-        dev_t device,
+procdir (const char *name_buffer, struct tar_stat_info *st,
         int flag,
         char *entry)
 {
   struct directory *directory;
+  struct stat *stat_data = &st->stat;
+  dev_t device = st->parent ? st->parent->stat.st_dev : 0;
   bool nfs = NFS_FILE_STAT (*stat_data);
 
   if ((directory = find_directory (name_buffer)) != NULL)
@@ -457,14 +449,14 @@ procdir (const char *name_buffer, struct stat *stat_data,
          *entry = 'N';
          return directory;
        }
-      
+
       /* With NFS, the same file can have two different devices
         if an NFS directory is mounted in multiple locations,
         which is relatively common when automounting.
         To avoid spurious incremental redumping of
         directories, consider all NFS devices as equal,
         relying on the i-node to establish differences.  */
-      
+
       if (! ((!check_device_option
              || (DIR_IS_NFS (directory) && nfs)
              || directory->device_number == stat_data->st_dev)
@@ -502,14 +494,14 @@ procdir (const char *name_buffer, struct stat *stat_data,
        }
       else
        directory->children = CHANGED_CHILDREN;
-      
+
       DIR_SET_FLAG (directory, DIRF_FOUND);
     }
   else
     {
       struct directory *d = find_directory_meta (stat_data->st_dev,
                                                 stat_data->st_ino);
-      
+
       directory = note_directory (name_buffer,
                                  get_stat_mtime(stat_data),
                                  stat_data->st_dev,
@@ -553,7 +545,7 @@ procdir (const char *name_buffer, struct stat *stat_data,
   if (one_file_system_option && device != stat_data->st_dev
       /* ... except if it was explicitely given in the command line */
       && !is_individual_file (name_buffer))
-    /* FIXME: 
+    /* FIXME:
        WARNOPT (WARN_XDEV,
                 (0, 0,
                  _("%s: directory is on a different filesystem; not dumped"),
@@ -566,14 +558,14 @@ procdir (const char *name_buffer, struct stat *stat_data,
       if (directory->children == NO_CHILDREN)
        *entry = 'N';
     }
-         
+
   DIR_SET_FLAG (directory, DIRF_INIT);
 
   if (directory->children != NO_CHILDREN)
     {
       const char *tag_file_name;
 
-      switch (check_exclusion_tags (name_buffer, &tag_file_name))
+      switch (check_exclusion_tags (st, &tag_file_name))
        {
        case exclusion_tag_all:
          /* This warning can be duplicated by code in dump_file0, but only
@@ -590,13 +582,13 @@ procdir (const char *name_buffer, struct stat *stat_data,
                                 _("contents not dumped"));
          directory->children = NO_CHILDREN;
          break;
-         
+
        case exclusion_tag_under:
          exclusion_tag_warning (name_buffer, tag_file_name,
                                 _("contents not dumped"));
          directory->tagfile = tag_file_name;
          break;
-         
+
        case exclusion_tag_none:
          break;
        }
@@ -616,7 +608,7 @@ procdir (const char *name_buffer, struct stat *stat_data,
    DIRECTORY->dump is replaced with the created template. Each entry is
    prefixed with ' ' if it was present in DUMP and with 'Y' otherwise. */
 
-void
+static void
 makedumpdir (struct directory *directory, const char *dir)
 {
   size_t i,
@@ -682,40 +674,29 @@ makedumpdir (struct directory *directory, const char *dir)
   free (array);
 }
 
-/* Recursively scan the given directory DIR.
-   DEVICE is the device number where DIR resides (for --one-file-system).
-   If CMDLINE is true, the directory name was explicitly listed in the
-   command line.
-   Unless *PDIR is NULL, store there a pointer to the struct directory
-   describing DIR. */
+/* Recursively scan the directory identified by ST.  */
 struct directory *
-scan_directory (char *dir, dev_t device, bool cmdline)
+scan_directory (struct tar_stat_info *st)
 {
-  char *dirp = savedir (dir);  /* for scanning directory */
+  char const *dir = st->orig_file_name;
+  char *dirp = get_directory_entries (st);
+  dev_t device = st->stat.st_dev;
+  bool cmdline = ! st->parent;
   namebuf_t nbuf;
   char *tmp;
-  struct stat stat_data;
   struct directory *directory;
   char ch;
-  
+
   if (! dirp)
     savedir_error (dir);
 
   tmp = xstrdup (dir);
   zap_slashes (tmp);
-  
-  if (deref_stat (dereference_option, tmp, &stat_data))
-    {
-      dir_removed_diag (tmp, cmdline, stat_diag);
-      free (tmp);
-      free (dirp);
-      return NULL;
-    }
 
-  directory = procdir (tmp, &stat_data, device,
+  directory = procdir (tmp, st,
                       (cmdline ? PD_FORCE_INIT : 0),
                       &ch);
-  
+
   free (tmp);
 
   nbuf = namebuf_create (dir);
@@ -723,7 +704,7 @@ scan_directory (char *dir, dev_t device, bool cmdline)
   if (dirp && directory->children != NO_CHILDREN)
     {
       char *entry;     /* directory entry being scanned */
-      dumpdir_iter_t itr;
+      struct dumpdir_iter *itr;
 
       makedumpdir (directory, dirp);
 
@@ -739,14 +720,37 @@ scan_directory (char *dir, dev_t device, bool cmdline)
            *entry = 'N';
          else
            {
-             if (deref_stat (dereference_option, full_name, &stat_data))
+             int fd = st->fd;
+             void (*diag) (char const *) = 0;
+             struct tar_stat_info stsub;
+             tar_stat_init (&stsub);
+
+             if (fd < 0)
                {
-                 file_removed_diag (full_name, false, stat_diag);
-                 *entry = 'N';
-                 continue;
+                 errno = - fd;
+                 diag = open_diag;
+               }
+             else if (fstatat (fd, entry + 1, &stsub.stat, fstatat_flags) != 0)
+               diag = stat_diag;
+             else if (S_ISDIR (stsub.stat.st_mode))
+               {
+                 int subfd = subfile_open (st, entry + 1, open_read_flags);
+                 if (subfd < 0)
+                   diag = open_diag;
+                 else
+                   {
+                     stsub.fd = subfd;
+                     if (fstat (subfd, &stsub.stat) != 0)
+                       diag = stat_diag;
+                   }
                }
 
-             if (S_ISDIR (stat_data.st_mode))
+             if (diag)
+               {
+                 file_removed_diag (full_name, false, diag);
+                 *entry = 'N';
+               }
+             else if (S_ISDIR (stsub.stat.st_mode))
                {
                  int pd_flag = 0;
                  if (!recursion_option)
@@ -754,23 +758,24 @@ scan_directory (char *dir, dev_t device, bool cmdline)
                  else if (directory->children == ALL_CHILDREN)
                    pd_flag |= PD_FORCE_CHILDREN | ALL_CHILDREN;
                  *entry = 'D';
-                 procdir (full_name, &stat_data, device, pd_flag, entry);
-               }
 
-             else if (one_file_system_option && device != stat_data.st_dev)
+                 stsub.parent = st;
+                 procdir (full_name, &stsub, pd_flag, entry);
+                 restore_parent_fd (&stsub);
+               }
+             else if (one_file_system_option && device != stsub.stat.st_dev)
                *entry = 'N';
-
              else if (*entry == 'Y')
                /* New entry, skip further checks */;
-
              /* FIXME: if (S_ISHIDDEN (stat_data.st_mode))?? */
-
-             else if (OLDER_STAT_TIME (stat_data, m)
+             else if (OLDER_STAT_TIME (stsub.stat, m)
                       && (!after_date_option
-                          || OLDER_STAT_TIME (stat_data, c)))
+                          || OLDER_STAT_TIME (stsub.stat, c)))
                *entry = 'N';
              else
                *entry = 'Y';
+
+             tar_stat_destroy (&stsub);
            }
        }
       free (itr);
@@ -801,17 +806,11 @@ safe_directory_contents (struct directory *dir)
   return ret ? ret : "\0\0\0\0";
 }
 
-void
-name_fill_directory (struct name *name, dev_t device, bool cmdline)
-{
-  name->directory = scan_directory (name->name, device, cmdline);
-}
-
 \f
 static void
-obstack_code_rename (struct obstack *stk, char *from, char *to)
+obstack_code_rename (struct obstack *stk, char const *from, char const *to)
 {
-  char *s;
+  char const *s;
 
   s = from[0] == 0 ? from :
                      safer_name_suffix (from, false, absolute_names_option);
@@ -874,7 +873,7 @@ append_incremental_renames (struct directory *dir)
   size_t size;
   struct directory *dp;
   const char *dump;
-  
+
   if (dirhead == NULL)
     return;
 
@@ -891,7 +890,8 @@ append_incremental_renames (struct directory *dir)
   for (dp = dirhead; dp; dp = dp->next)
     store_rename (dp, &stk);
 
-  if (obstack_object_size (&stk) != size)
+  /* FIXME: Is this the right thing to do when DIR is null?  */
+  if (dir && obstack_object_size (&stk) != size)
     {
       obstack_1grow (&stk, 0);
       dumpdir_free (dir->dump);
@@ -1217,7 +1217,7 @@ read_timespec (FILE *fp, struct timespec *pval)
 
 /* Read incremental snapshot format 2 */
 static void
-read_incr_db_2 ()
+read_incr_db_2 (void)
 {
   uintmax_t u;
   struct obstack stk;
@@ -1312,7 +1312,7 @@ read_directory_file (void)
      which is necessary to recreate absolute file names. */
   name_from_list ();
   blank_name_list ();
-  
+
   if (0 < getline (&buf, &bufsize, listed_incremental_stream))
     {
       char *ebuf;
@@ -1367,7 +1367,7 @@ write_directory_file_entry (void *entry, void *data)
   if (DIR_IS_FOUND (directory))
     {
       char buf[UINTMAX_STRSIZE_BOUND];
-      char *s;
+      char const *s;
 
       s = DIR_IS_NFS (directory) ? "1" : "0";
       fwrite (s, 2, 1, fp);
@@ -1386,7 +1386,7 @@ write_directory_file_entry (void *entry, void *data)
       if (directory->dump)
        {
          const char *p;
-         dumpdir_iter_t itr;
+         struct dumpdir_iter *itr;
 
          for (p = dumpdir_first (directory->dump, 0, &itr);
               p;
@@ -1452,7 +1452,7 @@ get_gnu_dumpdir (struct tar_stat_info *stat_info)
   to = archive_dir;
 
   set_next_block_after (current_header);
-  mv_begin (stat_info);
+  mv_begin_read (stat_info);
 
   for (; size > 0; size -= copied)
     {
@@ -1668,7 +1668,7 @@ try_purge_directory (char const *directory_name)
        free (p);
       p = new_name (directory_name, cur);
 
-      if (deref_stat (false, p, &st))
+      if (deref_stat (p, &st) != 0)
        {
          if (errno != ENOENT) /* FIXME: Maybe keep a list of renamed
                                  dirs and check it here? */
@@ -1707,7 +1707,7 @@ try_purge_directory (char const *directory_name)
     }
   free (p);
   dumpdir_free (dump);
-  
+
   free (current_dir);
   return true;
 }
index 716c0b4230a3e50c07dc7ec98afbf6d6aa56381f..d15653d3b39530a2fd27caa8ec1fa0519d1e9d87 100644 (file)
@@ -35,6 +35,20 @@ size_t recent_long_name_blocks;      /* number of blocks in recent_long_name */
 size_t recent_long_link_blocks;        /* likewise, for long link */
 union block *recent_global_header; /* Recent global header block */
 
+#define GID_FROM_HEADER(where) gid_from_header (where, sizeof (where))
+#define MAJOR_FROM_HEADER(where) major_from_header (where, sizeof (where))
+#define MINOR_FROM_HEADER(where) minor_from_header (where, sizeof (where))
+#define MODE_FROM_HEADER(where, hbits) \
+  mode_from_header (where, sizeof (where), hbits)
+#define TIME_FROM_HEADER(where) time_from_header (where, sizeof (where))
+#define UID_FROM_HEADER(where) uid_from_header (where, sizeof (where))
+
+static gid_t gid_from_header (const char *buf, size_t size);
+static major_t major_from_header (const char *buf, size_t size);
+static minor_t minor_from_header (const char *buf, size_t size);
+static mode_t mode_from_header (const char *buf, size_t size, unsigned *hbits);
+static time_t time_from_header (const char *buf, size_t size);
+static uid_t uid_from_header (const char *buf, size_t size);
 static uintmax_t from_header (const char *, size_t, const char *,
                              uintmax_t, uintmax_t, bool, bool);
 
@@ -78,7 +92,7 @@ read_and (void (*do_something) (void))
       prev_status = status;
       tar_stat_destroy (&current_stat_info);
 
-      status = read_header (&current_header, &current_stat_info, 
+      status = read_header (&current_header, &current_stat_info,
                             read_header_auto);
       switch (status)
        {
@@ -90,7 +104,8 @@ read_and (void (*do_something) (void))
 
          /* Valid header.  We should decode next field (mode) first.
             Ensure incoming names are null terminated.  */
-
+         decode_header (current_header, &current_stat_info,
+                        &current_format, 1);
          if (! name_match (current_stat_info.file_name)
              || (NEWER_OPTION_INITIALIZED (newer_mtime_option)
                  /* FIXME: We get mtime now, and again later; this causes
@@ -116,8 +131,6 @@ read_and (void (*do_something) (void))
                           quotearg_colon (current_stat_info.file_name)));
                  /* Fall through.  */
                default:
-                 decode_header (current_header,
-                                &current_stat_info, &current_format, 0);
                  skip_member ();
                  continue;
                }
@@ -140,7 +153,7 @@ read_and (void (*do_something) (void))
            {
              char buf[UINTMAX_STRSIZE_BOUND];
 
-             status = read_header (&current_header, &current_stat_info, 
+             status = read_header (&current_header, &current_stat_info,
                                    read_header_auto);
              if (status == HEADER_ZERO_BLOCK)
                break;
@@ -210,8 +223,6 @@ list_archive (void)
   off_t block_ordinal = current_block_ordinal ();
 
   /* Print the header block.  */
-  
-  decode_header (current_header, &current_stat_info, &current_format, 0);
   if (verbose_option)
     print_header (&current_stat_info, current_header, block_ordinal);
 
@@ -496,18 +507,18 @@ decode_xform (char *file_name, void *data)
         links subject to filename transformation.  In the absence of another
         solution, symbolic links are exempt from component stripping and
         name suffix normalization, but subject to filename transformation
-        proper. */ 
+        proper. */
       return file_name;
-      
+
     case XFORM_LINK:
       file_name = safer_name_suffix (file_name, true, absolute_names_option);
       break;
-      
+
     case XFORM_REGFILE:
       file_name = safer_name_suffix (file_name, false, absolute_names_option);
       break;
     }
-  
+
   if (strip_name_components)
     {
       size_t prefix_len = stripped_prefix_len (file_name,
@@ -519,7 +530,7 @@ decode_xform (char *file_name, void *data)
   return file_name;
 }
 
-bool
+static bool
 transform_member_name (char **pinput, int type)
 {
   return transform_name_fp (pinput, type, decode_xform, &type);
@@ -547,7 +558,7 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
   enum archive_format format;
   unsigned hbits; /* high bits of the file mode. */
   mode_t mode = MODE_FROM_HEADER (header->header.mode, &hbits);
-  
+
   if (strcmp (header->header.magic, TMAGIC) == 0)
     {
       if (header->star_header.prefix[130] == 0
@@ -645,13 +656,17 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
        stat_info->is_dumpdir = true;
     }
 
+  if (header->header.typeflag == GNUTYPE_VOLHDR)
+    /* Name transformations don't apply to volume headers. */
+    return;
+  
   transform_member_name (&stat_info->file_name, XFORM_REGFILE);
   switch (header->header.typeflag)
     {
     case SYMTYPE:
       transform_member_name (&stat_info->link_name, XFORM_SYMLINK);
       break;
-      
+
     case LNKTYPE:
       transform_member_name (&stat_info->link_name, XFORM_LINK);
     }
@@ -877,7 +892,7 @@ from_header (char const *where0, size_t digs, char const *type,
   return -1;
 }
 
-gid_t
+static gid_t
 gid_from_header (const char *p, size_t s)
 {
   return from_header (p, s, "gid_t",
@@ -886,7 +901,7 @@ gid_from_header (const char *p, size_t s)
                      false, false);
 }
 
-major_t
+static major_t
 major_from_header (const char *p, size_t s)
 {
   return from_header (p, s, "major_t",
@@ -894,7 +909,7 @@ major_from_header (const char *p, size_t s)
                      (uintmax_t) TYPE_MAXIMUM (major_t), false, false);
 }
 
-minor_t
+static minor_t
 minor_from_header (const char *p, size_t s)
 {
   return from_header (p, s, "minor_t",
@@ -904,7 +919,7 @@ minor_from_header (const char *p, size_t s)
 
 /* Convert P to the file mode, as understood by tar.
    Store unrecognized mode bits (from 10th up) in HBITS. */
-mode_t
+static mode_t
 mode_from_header (const char *p, size_t s, unsigned *hbits)
 {
   unsigned u = from_header (p, s, "mode_t",
@@ -935,14 +950,7 @@ off_from_header (const char *p, size_t s)
                      (uintmax_t) TYPE_MAXIMUM (off_t), false, false);
 }
 
-size_t
-size_from_header (const char *p, size_t s)
-{
-  return from_header (p, s, "size_t", (uintmax_t) 0,
-                     (uintmax_t) TYPE_MAXIMUM (size_t), false, false);
-}
-
-time_t
+static time_t
 time_from_header (const char *p, size_t s)
 {
   return from_header (p, s, "time_t",
@@ -950,7 +958,7 @@ time_from_header (const char *p, size_t s)
                      (uintmax_t) TYPE_MAXIMUM (time_t), false, false);
 }
 
-uid_t
+static uid_t
 uid_from_header (const char *p, size_t s)
 {
   return from_header (p, s, "uid_t",
@@ -1146,7 +1154,7 @@ simple_print_header (struct tar_stat_info *st, union block *blk,
 
       /* Time stamp.  */
 
-      time_stamp = tartime (st->mtime, false);
+      time_stamp = tartime (st->mtime, full_time_option);
       time_stamp_len = strlen (time_stamp);
       if (datewidth < time_stamp_len)
        datewidth = time_stamp_len;
@@ -1292,8 +1300,8 @@ simple_print_header (struct tar_stat_info *st, union block *blk,
 }
 
 
-void
-print_volume_label ()
+static void
+print_volume_label (void)
 {
   struct tar_stat_info vstat;
   union block vblk;
@@ -1356,7 +1364,7 @@ skip_file (off_t size)
 {
   union block *x;
 
-  /* FIXME: Make sure mv_begin is always called before it */
+  /* FIXME: Make sure mv_begin_read is always called before it */
 
   if (seekable_archive)
     {
@@ -1391,7 +1399,7 @@ skip_member (void)
       char save_typeflag = current_header->header.typeflag;
       set_next_block_after (current_header);
 
-      mv_begin (&current_stat_info);
+      mv_begin_read (&current_stat_info);
 
       if (current_stat_info.is_sparse)
        sparse_skip_file (&current_stat_info);
@@ -1412,22 +1420,23 @@ test_archive_label ()
   if (read_header (&current_header, &current_stat_info, read_header_auto)
       == HEADER_SUCCESS)
     {
-      char *s = NULL;
-       
       decode_header (current_header,
                     &current_stat_info, &current_format, 0);
       if (current_header->header.typeflag == GNUTYPE_VOLHDR)
        assign_string (&volume_label, current_header->header.name);
 
-      if (volume_label
-         && (name_match (volume_label)
-             || (multi_volume_option
-                 && (s = drop_volume_label_suffix (volume_label))
-                 && name_match (s))))
-       if (verbose_option)
-         print_volume_label ();
-      free (s);
+      if (volume_label)
+       {
+         if (verbose_option)
+           print_volume_label ();
+         if (!name_match (volume_label) && multi_volume_option)
+           {
+             char *s = drop_volume_label_suffix (volume_label);
+             name_match (s);
+             free (s);
+           }
+       }
     }
   close_archive ();
-  names_notfound ();
+  label_notfound ();
 }
index f81111f197d53c53c4321668f13e58ca2b9c4324..cb12947ac5aa4c3276b2a59af03c52a8d9062644 100644 (file)
@@ -1,7 +1,7 @@
 /* Miscellaneous functions, not really specific to GNU tar.
 
    Copyright (C) 1988, 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-   2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
 #include <rmt.h>
 #include "common.h"
 #include <quotearg.h>
-#include <save-cwd.h>
 #include <xgetcwd.h>
 #include <unlinkdir.h>
 #include <utimens.h>
-#include <canonicalize.h>
 
-#if HAVE_STROPTS_H
-# include <stropts.h>
-#endif
-#if HAVE_SYS_FILIO_H
-# include <sys/filio.h>
+#ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
 #endif
 
 \f
@@ -47,6 +42,9 @@ assign_string (char **string, const char *value)
   *string = value ? xstrdup (value) : 0;
 }
 
+#if 0
+/* This function is currently unused; perhaps it should be removed?  */
+
 /* Allocate a copy of the string quoted as in C, and returns that.  If
    the string does not have to be quoted, it returns a null pointer.
    The allocated copy should normally be freed with free() after the
@@ -59,7 +57,7 @@ assign_string (char **string, const char *value)
    when reading directory files.  This means that we can't use
    quotearg, as quotearg is locale-dependent and is meant for human
    consumption.  */
-char *
+static char *
 quote_copy_string (const char *string)
 {
   const char *source = string;
@@ -100,6 +98,7 @@ quote_copy_string (const char *string)
     }
   return 0;
 }
+#endif
 
 /* Takes a quoted C string (like those produced by quote_copy_string)
    and turns it back into the un-quoted original.  This is done in
@@ -230,10 +229,79 @@ zap_slashes (char *name)
   return name;
 }
 
+/* Normalize FILE_NAME by removing redundant slashes and "."
+   components, including redundant trailing slashes.  Leave ".."
+   alone, as it may be significant in the presence of symlinks and on
+   platforms where "/.." != "/".  Destructive version: modifies its
+   argument. */
+static void
+normalize_filename_x (char *file_name)
+{
+  char *name = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
+  char *p;
+  char const *q;
+  char c;
+
+  /* Don't squeeze leading "//" to "/", on hosts where they're distinct.  */
+  name += (DOUBLE_SLASH_IS_DISTINCT_ROOT
+          && ISSLASH (*name) && ISSLASH (name[1]) && ! ISSLASH (name[2]));
+
+  /* Omit redundant leading "." components.  */
+  for (q = p = name; (*p = *q) == '.' && ISSLASH (q[1]); p += !*q)
+    for (q += 2; ISSLASH (*q); q++)
+      continue;
+
+  /* Copy components from Q to P, omitting redundant slashes and
+     internal "."  components.  */
+  while ((*p++ = c = *q++) != '\0')
+    if (ISSLASH (c))
+      while (ISSLASH (q[*q == '.']))
+       q += (*q == '.') + 1;
+
+  /* Omit redundant trailing "." component and slash.  */
+  if (2 < p - name)
+    {
+      p -= p[-2] == '.' && ISSLASH (p[-3]);
+      p -= 2 < p - name && ISSLASH (p[-2]);
+      p[-1] = '\0';
+    }
+}
+
+/* Normalize NAME by removing redundant slashes and "." components,
+   including redundant trailing slashes.  Return a normalized
+   newly-allocated copy.  */
+
 char *
 normalize_filename (const char *name)
 {
-  return zap_slashes (canonicalize_filename_mode (name, CAN_MISSING));
+  char *copy = NULL;
+
+  if (IS_RELATIVE_FILE_NAME (name))
+    {
+      /* Set COPY to the absolute file name if possible.
+
+         FIXME: There should be no need to get the absolute file name.
+         getcwd is slow, it might fail, and it does not necessarily
+         return a canonical name even when it succeeds.  Perhaps we
+         can use dev+ino pairs instead of names?  */
+      copy = xgetcwd ();
+      if (copy)
+        {
+          size_t copylen = strlen (copy);
+          bool need_separator = ! (DOUBLE_SLASH_IS_DISTINCT_ROOT
+                                   && copylen == 2 && ISSLASH (copy[1]));
+          copy = xrealloc (copy, copylen + need_separator + strlen (name) + 1);
+          copy[copylen] = DIRECTORY_SEPARATOR;
+          strcpy (copy + copylen + need_separator, name);
+        }
+      else
+        WARN ((0, errno, _("Cannot get working directory")));
+    }
+
+  if (! copy)
+    copy = xstrdup (name);
+  normalize_filename_x (copy);
+  return copy;
 }
 
 \f
@@ -301,7 +369,7 @@ code_timespec (struct timespec t, char sbuf[TIMESPEC_STRSIZE_BOUND])
   /* ignore invalid values of ns */
   if (BILLION <= ns || ns < 0)
     ns = 0;
-  
+
   if (negative && ns != 0)
     {
       s++;
@@ -322,7 +390,7 @@ static char *before_backup_name;
 static char *after_backup_name;
 
 /* Return 1 if FILE_NAME is obviously "." or "/".  */
-static bool
+bool
 must_be_dot_or_slash (char const *file_name)
 {
   file_name += FILE_SYSTEM_PREFIX_LEN (file_name);
@@ -363,7 +431,7 @@ safer_rmdir (const char *file_name)
       return -1;
     }
 
-  return rmdir (file_name);
+  return unlinkat (chdir_fd, file_name, AT_REMOVEDIR);
 }
 
 /* Remove FILE_NAME, returning 1 on success.  If FILE_NAME is a directory,
@@ -383,7 +451,7 @@ remove_any_file (const char *file_name, enum remove_option option)
 
   if (try_unlink_first)
     {
-      if (unlink (file_name) == 0)
+      if (unlinkat (chdir_fd, file_name, 0) == 0)
        return 1;
 
       /* POSIX 1003.1-2001 requires EPERM when attempting to unlink a
@@ -399,7 +467,7 @@ remove_any_file (const char *file_name, enum remove_option option)
   switch (errno)
     {
     case ENOTDIR:
-      return !try_unlink_first && unlink (file_name) == 0;
+      return !try_unlink_first && unlinkat (chdir_fd, file_name, 0) == 0;
 
     case 0:
     case EEXIST:
@@ -476,7 +544,7 @@ maybe_backup_file (const char *file_name, bool this_is_the_archive)
   if (this_is_the_archive && _remdev (file_name))
     return true;
 
-  if (stat (file_name, &file_stat))
+  if (deref_stat (file_name, &file_stat) != 0)
     {
       if (errno == ENOENT)
        return true;
@@ -496,7 +564,8 @@ maybe_backup_file (const char *file_name, bool this_is_the_archive)
   if (! after_backup_name)
     xalloc_die ();
 
-  if (rename (before_backup_name, after_backup_name) == 0)
+  if (renameat (chdir_fd, before_backup_name, chdir_fd, after_backup_name)
+      == 0)
     {
       if (verbose_option)
        fprintf (stdlis, _("Renaming %s to %s\n"),
@@ -523,7 +592,8 @@ undo_last_backup (void)
 {
   if (after_backup_name)
     {
-      if (rename (after_backup_name, before_backup_name) != 0)
+      if (renameat (chdir_fd, after_backup_name, chdir_fd, before_backup_name)
+         != 0)
        {
          int e = errno;
          ERROR ((0, e, _("%s: Cannot rename to %s"),
@@ -538,39 +608,36 @@ undo_last_backup (void)
     }
 }
 
-/* Depending on DEREF, apply either stat or lstat to (NAME, BUF).  */
+/* Apply either stat or lstat to (NAME, BUF), depending on the
+   presence of the --dereference option.  NAME is relative to the
+   most-recent argument to chdir_do.  */
 int
-deref_stat (bool deref, char const *name, struct stat *buf)
+deref_stat (char const *name, struct stat *buf)
 {
-  return deref ? stat (name, buf) : lstat (name, buf);
+  return fstatat (chdir_fd, name, buf, fstatat_flags);
 }
 
-/* Set FD's (i.e., FILE's) access time to TIMESPEC[0].  If that's not
-   possible to do by itself, set its access and data modification
-   times to TIMESPEC[0] and TIMESPEC[1], respectively.  */
+/* Set FD's (i.e., assuming the working directory is PARENTFD, FILE's)
+   access time to ATIME.  */
 int
-set_file_atime (int fd, char const *file, struct timespec const timespec[2])
+set_file_atime (int fd, int parentfd, char const *file, struct timespec atime)
 {
-#ifdef _FIOSATIME
-  if (0 <= fd)
-    {
-      struct timeval timeval;
-      timeval.tv_sec = timespec[0].tv_sec;
-      timeval.tv_usec = timespec[0].tv_nsec / 1000;
-      if (ioctl (fd, _FIOSATIME, &timeval) == 0)
-       return 0;
-    }
-#endif
-
-  return gl_futimens (fd, file, timespec);
+  struct timespec ts[2];
+  ts[0] = atime;
+  ts[1].tv_nsec = UTIME_OMIT;
+  return fdutimensat (fd, parentfd, file, ts, fstatat_flags);
 }
 
 /* A description of a working directory.  */
 struct wd
 {
+  /* The directory's name.  */
   char const *name;
-  int saved;
-  struct saved_cwd saved_cwd;
+
+  /* If nonzero, the file descriptor of the directory, or AT_FDCWD if
+     the working directory.  If zero, the directory needs to be opened
+     to be used.  */
+  int fd;
 };
 
 /* A vector of chdir targets.  wd[0] is the initial working directory.  */
@@ -582,6 +649,19 @@ static size_t wd_count;
 /* The allocated size of the vector.  */
 static size_t wd_alloc;
 
+/* The maximum number of chdir targets with open directories.
+   Don't make it too large, as many operating systems have a small
+   limit on the number of open file descriptors.  Also, the current
+   implementation does not scale well.  */
+enum { CHDIR_CACHE_SIZE = 16 };
+
+/* Indexes into WD of chdir targets with open file descriptors, sorted
+   most-recently used first.  Zero indexes are unused.  */
+static int wdcache[CHDIR_CACHE_SIZE];
+
+/* Number of nonzero entries in WDCACHE.  */
+static size_t wdcache_count;
+
 int
 chdir_count ()
 {
@@ -608,7 +688,7 @@ chdir_arg (char const *dir)
       if (! wd_count)
        {
          wd[wd_count].name = ".";
-         wd[wd_count].saved = 0;
+         wd[wd_count].fd = AT_FDCWD;
          wd_count++;
        }
     }
@@ -625,64 +705,76 @@ chdir_arg (char const *dir)
     }
 
   wd[wd_count].name = dir;
-  wd[wd_count].saved = 0;
+  wd[wd_count].fd = 0;
   return wd_count++;
 }
 
-/* Change to directory I.  If I is 0, change to the initial working
-   directory; otherwise, I must be a value returned by chdir_arg.  */
+/* Index of current directory.  */
+int chdir_current;
+
+/* Value suitable for use as the first argument to openat, and in
+   similar locations for fstatat, etc.  This is an open file
+   descriptor, or AT_FDCWD if the working directory is current.  It is
+   valid until the next invocation of chdir_do.  */
+int chdir_fd = AT_FDCWD;
+
+/* Change to directory I, in a virtual way.  This does not actually
+   invoke chdir; it merely sets chdir_fd to an int suitable as the
+   first argument for openat, etc.  If I is 0, change to the initial
+   working directory; otherwise, I must be a value returned by
+   chdir_arg.  */
 void
 chdir_do (int i)
 {
-  static int previous;
-
-  if (previous != i)
+  if (chdir_current != i)
     {
-      struct wd *prev = &wd[previous];
       struct wd *curr = &wd[i];
+      int fd = curr->fd;
 
-      if (! prev->saved)
+      if (! fd)
        {
-         int err = 0;
-         prev->saved = 1;
-         if (save_cwd (&prev->saved_cwd) != 0)
-           err = errno;
-         else if (0 <= prev->saved_cwd.desc)
+         if (! IS_ABSOLUTE_FILE_NAME (curr->name))
+           chdir_do (i - 1);
+         fd = openat (chdir_fd, curr->name,
+                      open_searchdir_flags & ~ O_NOFOLLOW);
+         if (fd < 0)
+           open_fatal (curr->name);
+
+         curr->fd = fd;
+
+         /* Add I to the cache, tossing out the lowest-ranking entry if the
+            cache is full.  */
+         if (wdcache_count < CHDIR_CACHE_SIZE)
+           wdcache[wdcache_count++] = i;
+         else
            {
-             /* Make sure we still have at least one descriptor available.  */
-             int fd1 = prev->saved_cwd.desc;
-             int fd2 = dup (fd1);
-             if (0 <= fd2)
-               close (fd2);
-             else if (errno == EMFILE)
-               {
-                 /* Force restore_cwd to use chdir_long.  */
-                 close (fd1);
-                 prev->saved_cwd.desc = -1;
-                 prev->saved_cwd.name = xgetcwd ();
-               }
-             else
-               err = errno;
+             struct wd *stale = &wd[wdcache[CHDIR_CACHE_SIZE - 1]];
+             if (close (stale->fd) != 0)
+               close_diag (stale->name);
+             stale->fd = 0;
+             wdcache[CHDIR_CACHE_SIZE - 1] = i;
            }
-
-         if (err)
-           FATAL_ERROR ((0, err, _("Cannot save working directory")));
        }
 
-      if (curr->saved)
+      if (0 < fd)
        {
-         if (restore_cwd (&curr->saved_cwd))
-           FATAL_ERROR ((0, 0, _("Cannot change working directory")));
-       }
-      else
-       {
-         if (i && ! ISSLASH (curr->name[0]))
-           chdir_do (i - 1);
-         if (chdir (curr->name) != 0)
-           chdir_fatal (curr->name);
+         /* Move the i value to the front of the cache.  This is
+            O(CHDIR_CACHE_SIZE), but the cache is small.  */
+         size_t ci;
+         int prev = wdcache[0];
+         for (ci = 1; prev != i; ci++)
+           {
+             int curr = wdcache[ci];
+             wdcache[ci] = prev;
+             if (curr == i)
+               break;
+             prev = curr;
+           }
+         wdcache[0] = i;
        }
 
-      previous = i;
+      chdir_current = i;
+      chdir_fd = fd;
     }
 }
 \f
@@ -759,7 +851,7 @@ file_removed_diag (const char *name, bool top_level,
               (0, 0, _("%s: File removed before we read it"),
                quotearg_colon (name)));
       set_exit_status (TAREXIT_DIFFERS);
-    }      
+    }
   else
     diagfn (name);
 }
@@ -869,6 +961,3 @@ namebuf_name (namebuf_t buf, const char *name)
   strcpy (buf->buffer + buf->dir_length, name);
   return buf->buffer;
 }
-
-
-  
index 1146020b2458f5a07fa5c534ea1511e596f3b703..6e214bfa71e5d0c7854618288ecd8f504078359b 100644 (file)
 \f
 /* User and group names.  */
 
-struct group *getgrnam ();
-struct passwd *getpwnam ();
-#if ! HAVE_DECL_GETPWUID
-struct passwd *getpwuid ();
-#endif
-#if ! HAVE_DECL_GETGRGID
-struct group *getgrgid ();
-#endif
-
 /* Make sure you link with the proper libraries if you are running the
    Yellow Peril (thanks for the good laugh, Ian J.!), or, euh... NIS.
    This code should also be modified for non-UNIX systems to do something
@@ -179,7 +170,7 @@ gname_to_gid (char const *gname, gid_t *gidp)
 }
 
 \f
-struct name *
+static struct name *
 make_name (const char *file_name)
 {
   struct name *p = xzalloc (sizeof (*p));
@@ -190,7 +181,7 @@ make_name (const char *file_name)
   return p;
 }
 
-void
+static void
 free_name (struct name *p)
 {
   if (p)
@@ -207,7 +198,7 @@ free_name (struct name *p)
 static struct name *namelist;  /* first name in list, if any */
 static struct name *nametail;  /* end of name list */
 
-/* File name arguments are processed in two stages: first a 
+/* File name arguments are processed in two stages: first a
    name_array (see below) is filled, then the names from it
    are moved into the namelist.
 
@@ -215,7 +206,7 @@ static struct name *nametail;       /* end of name list */
    which is meant to help process large archives on machines with
    limited memory.  With this option on, namelist contains at most one
    entry, which diminishes the memory consumption.
-   
+
    However, I very much doubt if we still need this -- Sergey */
 
 /* A name_array element contains entries of three types: */
@@ -230,24 +221,25 @@ struct name_elt        /* A name_array element. */
   union
   {
     const char *name;  /* File or directory name */
-    int matching_flags;/* fnmatch options if type == NELT_FMASK */ 
+    int matching_flags;/* fnmatch options if type == NELT_FMASK */
   } v;
 };
 
 static struct name_elt *name_array;  /* store an array of names */
-static size_t allocated_names;  /* how big is the array? */
-static size_t names;            /* how many entries does it have? */
-static size_t name_index;       /* how many of the entries have we scanned? */
+static size_t allocated_entries; /* how big is the array? */
+static size_t entries;          /* how many entries does it have? */
+static size_t scanned;          /* how many of the entries have we scanned? */
+size_t name_count;              /* how many of the entries are names? */
 
 /* Check the size of name_array, reallocating it as necessary.  */
 static void
-check_name_alloc ()
+check_name_alloc (void)
 {
-  if (names == allocated_names)
+  if (entries == allocated_entries)
     {
-      if (allocated_names == 0)
-       allocated_names = 10; /* Set initial allocation */
-      name_array = x2nrealloc (name_array, &allocated_names,
+      if (allocated_entries == 0)
+       allocated_entries = 10; /* Set initial allocation */
+      name_array = x2nrealloc (name_array, &allocated_entries,
                               sizeof (name_array[0]));
     }
 }
@@ -260,17 +252,18 @@ name_add_name (const char *name, int matching_flags)
   struct name_elt *ep;
 
   check_name_alloc ();
-  ep = &name_array[names++];
+  ep = &name_array[entries++];
   if (prev_flags != matching_flags)
     {
       ep->type = NELT_FMASK;
       ep->v.matching_flags = matching_flags;
       prev_flags = matching_flags;
       check_name_alloc ();
-      ep = &name_array[names++];
+      ep = &name_array[entries++];
     }
   ep->type = NELT_NAME;
   ep->v.name = name;
+  name_count++;
 }
 
 /* Add to name_array a chdir request for the directory NAME */
@@ -279,10 +272,10 @@ name_add_dir (const char *name)
 {
   struct name_elt *ep;
   check_name_alloc ();
-  ep = &name_array[names++];
+  ep = &name_array[entries++];
   ep->type = NELT_CHDIR;
   ep->v.name = name;
-}  
+}
 
 \f
 /* Names from external name file.  */
@@ -313,28 +306,28 @@ static int matching_flags; /* exclude_fnmatch options */
 
    If CHANGE_DIRS is true, treat any entries of type NELT_CHDIR as
    the request to change to the given directory.
-   
+
    Entries of type NELT_FMASK cause updates of the matching_flags
    value. */
-struct name_elt *
+static struct name_elt *
 name_next_elt (int change_dirs)
 {
   static struct name_elt entry;
   const char *source;
   char *cursor;
 
-  while (name_index != names)
+  while (scanned != entries)
     {
       struct name_elt *ep;
       size_t source_len;
-      
-      ep = &name_array[name_index++];
+
+      ep = &name_array[scanned++];
       if (ep->type == NELT_FMASK)
        {
          matching_flags = ep->v.matching_flags;
          continue;
        }
-      
+
       source = ep->v.name;
       source_len = strlen (source);
       if (name_buffer_length < source_len)
@@ -421,7 +414,7 @@ name_gather (void)
          buffer->directory = NULL;
          buffer->parent = NULL;
          buffer->cmdline = true;
-         
+
          namelist = nametail = buffer;
        }
       else if (change_dir)
@@ -519,7 +512,7 @@ name_match (const char *file_name)
 
       if (!cursor)
        return true;
-      
+
       if (cursor->name[0] == 0)
        {
          chdir_do (cursor->change_dir);
@@ -589,7 +582,7 @@ all_names_found (struct tar_stat_info *p)
   return true;
 }
 
-static void
+static int
 regex_usage_warning (const char *name)
 {
   static int warned_once = 0;
@@ -603,6 +596,7 @@ regex_usage_warning (const char *name)
             _("Use --wildcards to enable pattern matching,"
               " or --no-wildcards to suppress this warning")));
     }
+  return warned_once;
 }
 
 /* Print the names of things in the namelist that were not matched.  */
@@ -615,12 +609,11 @@ names_notfound (void)
     if (!WASFOUND (cursor) && cursor->name[0])
       {
        regex_usage_warning (cursor->name);
-       if (cursor->found_count == 0)
-         ERROR ((0, 0, _("%s: Not found in archive"),
-                 quotearg_colon (cursor->name)));
-       else
-         ERROR ((0, 0, _("%s: Required occurrence not found in archive"),
-                 quotearg_colon (cursor->name)));  
+       ERROR ((0, 0,
+               (cursor->found_count == 0) ?
+                    _("%s: Not found in archive") :
+                    _("%s: Required occurrence not found in archive"),
+               quotearg_colon (cursor->name)));
       }
 
   /* Don't bother freeing the name list; we're about to exit.  */
@@ -639,13 +632,49 @@ names_notfound (void)
        }
     }
 }
+
+void
+label_notfound (void)
+{
+  struct name const *cursor;
+
+  if (!namelist)
+    return;
+
+  for (cursor = namelist; cursor; cursor = cursor->next)
+    if (WASFOUND (cursor))
+      return;
+
+  if (verbose_option)
+    error (0, 0, _("Archive label mismatch"));
+  set_exit_status (TAREXIT_DIFFERS);
+
+  for (cursor = namelist; cursor; cursor = cursor->next)
+    {
+      if (regex_usage_warning (cursor->name))
+       break;
+    }
+
+  /* Don't bother freeing the name list; we're about to exit.  */
+  namelist = NULL;
+  nametail = NULL;
+
+  if (same_order_option)
+    {
+      const char *name;
+
+      while ((name = name_next (1)) != NULL
+            && regex_usage_warning (name) == 0)
+       ;
+    }
+}
 \f
 /* Sorting name lists.  */
 
 /* Sort *singly* linked LIST of names, of given LENGTH, using COMPARE
    to order names.  Return the sorted list.  Note that after calling
    this function, the `prev' links in list elements are messed up.
-   
+
    Apart from the type `struct name' and the definition of SUCCESSOR,
    this is a generic list-sorting function, but it's too painful to
    make it both generic and portable
@@ -752,17 +781,15 @@ compare_names (struct name const *n1, struct name const *n2)
 }
 
 \f
-/* Add all the dirs under NAME, which names a directory, to the namelist.
-   If any of the files is a directory, recurse on the subdirectory.
-   DEVICE is the device not to leave, if the -l option is specified.
-   CMDLINE is true, if the NAME appeared on the command line. */
+/* Add all the dirs under ST to the namelist NAME, descending the
+   directory hierarchy recursively.  */
 
 static void
-add_hierarchy_to_namelist (struct name *name, dev_t device, bool cmdline)
+add_hierarchy_to_namelist (struct tar_stat_info *st, struct name *name)
 {
   const char *buffer;
-  
-  name_fill_directory (name, device, cmdline);
+
+  name->directory = scan_directory (st);
   buffer = directory_contents (name->directory);
   if (buffer)
     {
@@ -790,6 +817,8 @@ add_hierarchy_to_namelist (struct name *name, dev_t device, bool cmdline)
          if (*string == 'D')
            {
              struct name *np;
+             struct tar_stat_info subdir;
+             int subfd;
 
              if (allocated_length <= name_length + string_length)
                {
@@ -810,7 +839,38 @@ add_hierarchy_to_namelist (struct name *name, dev_t device, bool cmdline)
              else
                child_tail->sibling = np;
              child_tail = np;
-             add_hierarchy_to_namelist (np, device, false);
+
+             tar_stat_init (&subdir);
+             subdir.parent = st;
+             if (st->fd < 0)
+               {
+                 subfd = -1;
+                 errno = - st->fd;
+               }
+             else
+               subfd = subfile_open (st, string + 1,
+                                     open_read_flags | O_DIRECTORY);
+             if (subfd < 0)
+               open_diag (namebuf);
+             else
+               {
+                 subdir.fd = subfd;
+                 if (fstat (subfd, &subdir.stat) != 0)
+                   stat_diag (namebuf);
+                 else if (! (O_DIRECTORY || S_ISDIR (subdir.stat.st_mode)))
+                   {
+                     errno = ENOTDIR;
+                     open_diag (namebuf);
+                   }
+                 else
+                   {
+                     subdir.orig_file_name = xstrdup (namebuf);
+                     add_hierarchy_to_namelist (&subdir, np);
+                     restore_parent_fd (&subdir);
+                   }
+               }
+
+             tar_stat_destroy (&subdir);
            }
        }
 
@@ -846,7 +906,7 @@ rebase_child_list (struct name *child, struct name *parent)
   size_t old_prefix_len = child->parent->length;
   size_t new_prefix_len = parent->length;
   char *new_prefix = parent->name;
-  
+
   for (; child; child = child->sibling)
     {
       size_t size = child->length - old_prefix_len + new_prefix_len;
@@ -858,7 +918,7 @@ rebase_child_list (struct name *child, struct name *parent)
       child->length = size;
 
       rebase_directory (child->directory,
-                       child->parent->name, old_prefix_len, 
+                       child->parent->name, old_prefix_len,
                        new_prefix, new_prefix_len);
     }
 }
@@ -871,11 +931,10 @@ void
 collect_and_sort_names (void)
 {
   struct name *name;
-  struct name *next_name, *prev_name;
+  struct name *next_name, *prev_name = NULL;
   int num_names;
-  struct stat statbuf;
   Hash_table *nametab;
-  
+
   name_gather ();
 
   if (!namelist)
@@ -903,10 +962,12 @@ collect_and_sort_names (void)
 
       read_directory_file ();
     }
-  
+
   num_names = 0;
   for (name = namelist; name; name = name->next, num_names++)
     {
+      struct tar_stat_info st;
+
       if (name->found_count || name->directory)
        continue;
       if (name->matching_flags & EXCLUDE_WILDCARDS)
@@ -918,16 +979,34 @@ collect_and_sort_names (void)
       if (name->name[0] == 0)
        continue;
 
-      if (deref_stat (dereference_option, name->name, &statbuf) != 0)
+      tar_stat_init (&st);
+
+      if (deref_stat (name->name, &st.stat) != 0)
        {
          stat_diag (name->name);
          continue;
        }
-      if (S_ISDIR (statbuf.st_mode))
+      if (S_ISDIR (st.stat.st_mode))
        {
-         name->found_count++;
-         add_hierarchy_to_namelist (name, statbuf.st_dev, true);
+         int dir_fd = openat (chdir_fd, name->name,
+                              open_read_flags | O_DIRECTORY);
+         if (dir_fd < 0)
+           open_diag (name->name);
+         else
+           {
+             st.fd = dir_fd;
+             if (fstat (dir_fd, &st.stat) != 0)
+               stat_diag (name->name);
+             else if (O_DIRECTORY || S_ISDIR (st.stat.st_mode))
+               {
+                 st.orig_file_name = xstrdup (name->name);
+                 name->found_count++;
+                 add_hierarchy_to_namelist (&st, name);
+               }
+           }
        }
+
+      tar_stat_destroy (&st);
     }
 
   namelist = merge_sort (namelist, num_names, compare_names);
@@ -950,6 +1029,7 @@ collect_and_sort_names (void)
                {
                  if (p->child)
                    rebase_child_list (p->child, name);
+                 hash_delete (nametab, name);
                  /* FIXME: remove_directory (p->caname); ? */
                  remname (p);
                  free_name (p);
@@ -1078,12 +1158,12 @@ static void
 register_individual_file (char const *name)
 {
   struct stat st;
-  
-  if (deref_stat (dereference_option, name, &st) != 0)
+
+  if (deref_stat (name, &st) != 0)
     return; /* Will be complained about later */
   if (S_ISDIR (st.st_mode))
     return;
-  
+
   hash_string_insert (&individual_file_table, name);
 }
 
index 9fde5080d5304a32253fd67d72e1a99a0c69bf56..9680b6052244cbb0904d5fedf9ba671995cbd1da 100644 (file)
@@ -1,6 +1,7 @@
 /* Functions for dealing with sparse files
 
-   Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010 Free Software
+   Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
@@ -216,43 +217,45 @@ sparse_scan_file (struct tar_sparse_file *file)
   struct tar_stat_info *st = file->stat_info;
   int fd = file->fd;
   char buffer[BLOCKSIZE];
-  size_t count;
+  size_t count = 0;
   off_t offset = 0;
   struct sp_array sp = {0, 0};
 
-  if (!lseek_or_error (file, 0))
-    return false;
-
   st->archive_file_size = 0;
-  
-  if (!tar_sparse_scan (file, scan_begin, NULL))
-    return false;
 
-  while ((count = safe_read (fd, buffer, sizeof buffer)) != 0
-        && count != SAFE_READ_ERROR)
+  if (ST_NBLOCKS (st->stat) == 0)
+    offset = st->stat.st_size;
+  else
     {
-      /* Analyze the block.  */
-      if (zero_block_p (buffer, count))
+      if (!tar_sparse_scan (file, scan_begin, NULL))
+       return false;
+
+      while ((count = safe_read (fd, buffer, sizeof buffer)) != 0
+            && count != SAFE_READ_ERROR)
        {
-         if (sp.numbytes)
+         /* Analyze the block.  */
+         if (zero_block_p (buffer, count))
+           {
+             if (sp.numbytes)
+               {
+                 sparse_add_map (st, &sp);
+                 sp.numbytes = 0;
+                 if (!tar_sparse_scan (file, scan_block, NULL))
+                   return false;
+               }
+           }
+         else
            {
-             sparse_add_map (st, &sp);
-             sp.numbytes = 0;
-             if (!tar_sparse_scan (file, scan_block, NULL))
+             if (sp.numbytes == 0)
+               sp.offset = offset;
+             sp.numbytes += count;
+             st->archive_file_size += count;
+             if (!tar_sparse_scan (file, scan_block, buffer))
                return false;
            }
-       }
-      else
-       {
-         if (sp.numbytes == 0)
-           sp.offset = offset;
-         sp.numbytes += count;
-         st->archive_file_size += count;
-         if (!tar_sparse_scan (file, scan_block, buffer))
-           return false;
-       }
 
-      offset += count;
+         offset += count;
+       }
     }
 
   if (sp.numbytes == 0)
@@ -324,7 +327,6 @@ sparse_dump_region (struct tar_sparse_file *file, size_t i)
       memset (blk->buffer + bytes_read, 0, BLOCKSIZE - bytes_read);
       bytes_left -= bytes_read;
       file->dumped_size += bytes_read;
-      mv_size_left (file->stat_info->archive_file_size - file->dumped_size);
       set_next_block_after (blk);
     }
 
@@ -334,7 +336,7 @@ sparse_dump_region (struct tar_sparse_file *file, size_t i)
 static bool
 sparse_extract_region (struct tar_sparse_file *file, size_t i)
 {
-  size_t write_size;
+  off_t write_size;
 
   if (!lseek_or_error (file, file->stat_info->sparse_map[i].offset))
     return false;
@@ -398,10 +400,11 @@ sparse_dump_file (int fd, struct tar_stat_info *st)
        {
          size_t i;
 
-         mv_begin (file.stat_info);
+         mv_begin_write (file.stat_info->file_name,
+                         file.stat_info->stat.st_size,
+                         file.stat_info->archive_file_size - file.dumped_size);
          for (i = 0; rc && i < file.stat_info->sparse_map_avail; i++)
            rc = tar_sparse_dump_region (&file, i);
-         mv_end ();
        }
     }
 
@@ -508,13 +511,13 @@ check_sparse_region (struct tar_sparse_file *file, off_t beg, off_t end)
 static bool
 check_data_region (struct tar_sparse_file *file, size_t i)
 {
-  size_t size_left;
+  off_t size_left;
 
   if (!lseek_or_error (file, file->stat_info->sparse_map[i].offset))
     return false;
   size_left = file->stat_info->sparse_map[i].numbytes;
   mv_size_left (file->stat_info->archive_file_size - file->dumped_size);
-      
+
   while (size_left > 0)
     {
       size_t bytes_read;
@@ -564,9 +567,9 @@ sparse_diff_file (int fd, struct tar_stat_info *st)
   file.stat_info = st;
   file.fd = fd;
   file.seekable = true; /* File *must* be seekable for compare to work */
-  
+
   rc = tar_sparse_decode_header (&file);
-  mv_begin (st);
+  mv_begin_read (st);
   for (i = 0; rc && i < file.stat_info->sparse_map_avail; i++)
     {
       rc = check_sparse_region (&file,
@@ -579,7 +582,7 @@ sparse_diff_file (int fd, struct tar_stat_info *st)
   if (!rc)
     skip_file (file.stat_info->archive_file_size - file.dumped_size);
   mv_end ();
-  
+
   tar_sparse_done (&file);
   return rc;
 }
@@ -625,8 +628,9 @@ oldgnu_add_sparse (struct tar_sparse_file *file, struct sparse *s)
   if (s->numbytes[0] == '\0')
     return add_finish;
   sp.offset = OFF_FROM_HEADER (s->offset);
-  sp.numbytes = SIZE_FROM_HEADER (s->numbytes);
+  sp.numbytes = OFF_FROM_HEADER (s->numbytes);
   if (sp.offset < 0
+      || sp.offset + sp.numbytes < 0
       || file->stat_info->stat.st_size < sp.offset + sp.numbytes
       || file->stat_info->archive_file_size < 0)
     return add_fail;
@@ -695,8 +699,8 @@ oldgnu_store_sparse_info (struct tar_sparse_file *file, size_t *pindex,
     {
       OFF_TO_CHARS (file->stat_info->sparse_map[*pindex].offset,
                    sp->offset);
-      SIZE_TO_CHARS (file->stat_info->sparse_map[*pindex].numbytes,
-                    sp->numbytes);
+      OFF_TO_CHARS (file->stat_info->sparse_map[*pindex].numbytes,
+                   sp->numbytes);
     }
 }
 
@@ -851,13 +855,13 @@ static struct tar_sparse_optab const star_optab = {
    instances of GNU.sparse.offset/GNU.sparse.numbytes variables, whereas
    POSIX requires the latest occurrence of the variable to override all
    previous occurrences.
-   
+
    To avoid this incompatibility two following versions were introduced.
 
    * 0.1
 
    Used by tar 1.15.2 -- 1.15.91 (alpha releases).
-   
+
    The sparse file map is stored in
    x header:
 
@@ -875,18 +879,18 @@ static struct tar_sparse_optab const star_optab = {
    Starting from this version, the exact sparse format version is specified
    explicitely in the header using the following variables:
 
-   GNU.sparse.major     Major version 
+   GNU.sparse.major     Major version
    GNU.sparse.minor     Minor version
 
    X header keeps the following variables:
-   
+
    GNU.sparse.name      Real file name of the sparse file
    GNU.sparse.realsize  Real size of the stored file (corresponds to the old
                         GNU.sparse.size variable)
 
    The name field of the ustar header is constructed using the pattern
    "%d/GNUSparseFile.%p/%f".
-   
+
    The sparse map itself is stored in the file data block, preceding the actual
    file data. It consists of a series of octal numbers of arbitrary length,
    delimited by newlines. The map is padded with nulls to the nearest block
@@ -924,11 +928,11 @@ pax_dump_header_0 (struct tar_sparse_file *file)
   char nbuf[UINTMAX_STRSIZE_BOUND];
   struct sp_array *map = file->stat_info->sparse_map;
   char *save_file_name = NULL;
-  
+
   /* Store the real file size */
   xheader_store ("GNU.sparse.size", file->stat_info, NULL);
   xheader_store ("GNU.sparse.numblocks", file->stat_info, NULL);
-  
+
   if (xheader_keyword_deleted_p ("GNU.sparse.map")
       || tar_sparse_minor == 0)
     {
@@ -991,7 +995,7 @@ pax_dump_header_1 (struct tar_sparse_file *file)
 #define COPY_STRING(b,dst,src) do                \
  {                                               \
    char *endp = b->buffer + BLOCKSIZE;           \
-   char *srcp = src;                             \
+   char const *srcp = src;                       \
    while (*srcp)                                 \
      {                                           \
        if (dst == endp)                          \
@@ -1003,7 +1007,7 @@ pax_dump_header_1 (struct tar_sparse_file *file)
         }                                       \
        *dst++ = *srcp++;                         \
      }                                           \
-   } while (0)                       
+   } while (0)
 
   /* Compute stored file size */
   p = umaxtostr (file->stat_info->sparse_map_avail, nbuf);
@@ -1018,13 +1022,13 @@ pax_dump_header_1 (struct tar_sparse_file *file)
   size = (size + BLOCKSIZE - 1) / BLOCKSIZE;
   file->stat_info->archive_file_size += size * BLOCKSIZE;
   file->dumped_size += size * BLOCKSIZE;
-  
+
   /* Store sparse file identification */
   xheader_store ("GNU.sparse.major", file->stat_info, NULL);
   xheader_store ("GNU.sparse.minor", file->stat_info, NULL);
   xheader_store ("GNU.sparse.name", file->stat_info, NULL);
   xheader_store ("GNU.sparse.realsize", file->stat_info, NULL);
-  
+
   file->stat_info->file_name = xheader_format_name (file->stat_info,
                                            "%d/GNUSparseFile.%p/%f", 0);
 
@@ -1072,12 +1076,12 @@ decode_num (uintmax_t *num, char const *arg, uintmax_t maxval)
 
   if (!ISDIGIT (*arg))
     return false;
-  
+
   u = strtoumax (arg, &arg_lim, 10);
 
   if (! (u <= maxval && errno != ERANGE) || *arg_lim)
     return false;
-  
+
   *num = u;
   return true;
 }
@@ -1117,7 +1121,7 @@ pax_decode_header (struct tar_sparse_file *file)
      }                                                             \
    while (*dst++ != '\n');                                         \
    dst[-1] = 0;                                                    \
- } while (0)                       
+ } while (0)
 
       set_next_block_after (current_header);
       file->dumped_size += BLOCKSIZE;
@@ -1126,7 +1130,7 @@ pax_decode_header (struct tar_sparse_file *file)
       COPY_BUF (blk,nbuf,p);
       if (!decode_num (&u, nbuf, TYPE_MAXIMUM (size_t)))
        {
-         ERROR ((0, 0, _("%s: malformed sparse archive member"), 
+         ERROR ((0, 0, _("%s: malformed sparse archive member"),
                  file->stat_info->orig_file_name));
          return false;
        }
@@ -1137,19 +1141,19 @@ pax_decode_header (struct tar_sparse_file *file)
       for (i = 0; i < file->stat_info->sparse_map_size; i++)
        {
          struct sp_array sp;
-         
+
          COPY_BUF (blk,nbuf,p);
          if (!decode_num (&u, nbuf, TYPE_MAXIMUM (off_t)))
            {
-             ERROR ((0, 0, _("%s: malformed sparse archive member"), 
+             ERROR ((0, 0, _("%s: malformed sparse archive member"),
                      file->stat_info->orig_file_name));
              return false;
            }
          sp.offset = u;
          COPY_BUF (blk,nbuf,p);
-         if (!decode_num (&u, nbuf, TYPE_MAXIMUM (size_t)))
+         if (!decode_num (&u, nbuf, TYPE_MAXIMUM (off_t)))
            {
-             ERROR ((0, 0, _("%s: malformed sparse archive member"), 
+             ERROR ((0, 0, _("%s: malformed sparse archive member"),
                      file->stat_info->orig_file_name));
              return false;
            }
@@ -1158,7 +1162,7 @@ pax_decode_header (struct tar_sparse_file *file)
        }
       set_next_block_after (blk);
     }
-  
+
   return true;
 }
 
@@ -1168,7 +1172,7 @@ static struct tar_sparse_optab const pax_optab = {
   pax_sparse_member_p,
   pax_dump_header,
   NULL,
-  pax_decode_header,  
+  pax_decode_header,
   NULL,  /* No scan_block function */
   sparse_dump_region,
   sparse_extract_region,
index 23868c914f8577edb9081c99bcc3275753f1e87b..046cf2bb6b2db1abf5cf3b239426c3cc93bd08d2 100644 (file)
@@ -27,7 +27,7 @@ struct compression_suffix
 };
 
 static struct compression_suffix compression_suffixes[] = {
-#define __CAT2__(a,b) a ## b  
+#define __CAT2__(a,b) a ## b
 #define S(s,p) #s, sizeof (#s) - 1, __CAT2__(p,_PROGRAM)
   { S(gz,   GZIP) },
   { S(tgz,  GZIP) },
@@ -54,7 +54,7 @@ static const char *
 find_compression_program (const char *name, const char *defprog)
 {
   char *suf = strrchr (name, '.');
-    
+
   if (suf)
     {
       int i;
@@ -74,10 +74,9 @@ find_compression_program (const char *name, const char *defprog)
 }
 
 void
-set_comression_program_by_suffix (const char *name, const char *defprog)
+set_compression_program_by_suffix (const char *name, const char *defprog)
 {
   const char *program = find_compression_program (name, defprog);
   if (program)
     use_compress_program_option = program;
 }
-
index d646822c4a6ccc65ae0ad098b1b1f47956db6dd4..a11afd75078f12a2900b80de7e16202e982cd55c 100644 (file)
@@ -1,7 +1,7 @@
 /* System-dependent calls for tar.
 
    Copyright (C) 2003, 2004, 2005, 2006, 2007,
-   2008 Free Software Foundation, Inc.
+   2008, 2010 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
@@ -20,6 +20,7 @@
 #include <system.h>
 
 #include "common.h"
+#include <priv-set.h>
 #include <rmt.h>
 #include <signal.h>
 
@@ -192,6 +193,7 @@ sys_spawn_shell (void)
   child = xfork ();
   if (child == 0)
     {
+      priv_set_restore_linkdir ();
       execlp (shell, "-sh", "-i", (char *) 0);
       exec_fatal (shell);
     }
@@ -283,15 +285,15 @@ xdup2 (int from, int into)
     }
 }
 
-void wait_for_grandchild (pid_t pid) __attribute__ ((__noreturn__));
+static void wait_for_grandchild (pid_t pid) __attribute__ ((__noreturn__));
 
 /* Propagate any failure of the grandchild back to the parent.  */
-void
+static void
 wait_for_grandchild (pid_t pid)
 {
   int wait_status;
   int exit_code = 0;
-  
+
   while (waitpid (pid, &wait_status, 0) == -1)
     if (errno != EINTR)
       {
@@ -303,7 +305,7 @@ wait_for_grandchild (pid_t pid)
     raise (WTERMSIG (wait_status));
   else if (WEXITSTATUS (wait_status) != 0)
     exit_code = WEXITSTATUS (wait_status);
-  
+
   exit (exit_code);
 }
 
@@ -332,7 +334,7 @@ sys_child_open_for_compress (void)
 
   set_program_name (_("tar (child)"));
   signal (SIGPIPE, SIG_DFL);
-  
+
   xdup2 (parent_pipe[PREAD], STDIN_FILENO);
   xclose (parent_pipe[PWRITE]);
 
@@ -362,6 +364,7 @@ sys_child_open_for_compress (void)
            }
          xdup2 (archive, STDOUT_FILENO);
        }
+      priv_set_restore_linkdir ();
       execlp (use_compress_program_option, use_compress_program_option, NULL);
       exec_fatal (use_compress_program_option);
     }
@@ -379,6 +382,7 @@ sys_child_open_for_compress (void)
 
       xdup2 (child_pipe[PWRITE], STDOUT_FILENO);
       xclose (child_pipe[PREAD]);
+      priv_set_restore_linkdir ();
       execlp (use_compress_program_option, use_compress_program_option,
              (char *) 0);
       exec_fatal (use_compress_program_option);
@@ -476,7 +480,7 @@ sys_child_open_for_uncompress (void)
 
   set_program_name (_("tar (child)"));
   signal (SIGPIPE, SIG_DFL);
-  
+
   xdup2 (parent_pipe[PWRITE], STDOUT_FILENO);
   xclose (parent_pipe[PREAD]);
 
@@ -496,6 +500,7 @@ sys_child_open_for_uncompress (void)
       if (archive < 0)
        open_fatal (archive_name_array[0]);
       xdup2 (archive, STDIN_FILENO);
+      priv_set_restore_linkdir ();
       execlp (use_compress_program_option, use_compress_program_option,
              "-d", (char *) 0);
       exec_fatal (use_compress_program_option);
@@ -514,6 +519,7 @@ sys_child_open_for_uncompress (void)
 
       xdup2 (child_pipe[PREAD], STDIN_FILENO);
       xclose (child_pipe[PWRITE]);
+      priv_set_restore_linkdir ();
       execlp (use_compress_program_option, use_compress_program_option,
              "-d", (char *) 0);
       exec_fatal (use_compress_program_option);
@@ -575,7 +581,7 @@ sys_child_open_for_uncompress (void)
 \f
 
 static void
-dec_to_env (char *envar, uintmax_t num)
+dec_to_env (char const *envar, uintmax_t num)
 {
   char buf[UINTMAX_STRSIZE_BOUND];
   char *numstr;
@@ -586,7 +592,7 @@ dec_to_env (char *envar, uintmax_t num)
 }
 
 static void
-time_to_env (char *envar, struct timespec t)
+time_to_env (char const *envar, struct timespec t)
 {
   char buf[TIMESPEC_STRSIZE_BOUND];
   if (setenv (envar, code_timespec (t, buf), 1) != 0)
@@ -594,7 +600,7 @@ time_to_env (char *envar, struct timespec t)
 }
 
 static void
-oct_to_env (char *envar, unsigned long num)
+oct_to_env (char const *envar, unsigned long num)
 {
   char buf[1+1+(sizeof(unsigned long)*CHAR_BIT+2)/3];
 
@@ -604,7 +610,7 @@ oct_to_env (char *envar, unsigned long num)
 }
 
 static void
-str_to_env (char *envar, char const *str)
+str_to_env (char const *envar, char const *str)
 {
   if (str)
     {
@@ -616,7 +622,7 @@ str_to_env (char *envar, char const *str)
 }
 
 static void
-chr_to_env (char *envar, char c)
+chr_to_env (char const *envar, char c)
 {
   char buf[2];
   buf[0] = c;
@@ -702,6 +708,7 @@ sys_exec_command (char *file_name, int typechar, struct tar_stat_info *st)
   argv[2] = to_command_option;
   argv[3] = NULL;
 
+  priv_set_restore_linkdir ();
   execv ("/bin/sh", argv);
 
   exec_fatal (file_name);
@@ -750,7 +757,7 @@ sys_exec_info_script (const char **archive_name, int volume_number)
   char uintbuf[UINTMAX_STRSIZE_BOUND];
   int p[2];
   static RETSIGTYPE (*saved_handler) (int sig);
-  
+
   xpipe (p);
   saved_handler = signal (SIGPIPE, SIG_IGN);
 
@@ -783,7 +790,7 @@ sys_exec_info_script (const char **archive_name, int volume_number)
          }
 
       signal (SIGPIPE, saved_handler);
-      
+
       if (WIFEXITED (status))
        {
          if (WEXITSTATUS (status) == 0 && rc > 0)
@@ -813,9 +820,10 @@ sys_exec_info_script (const char **archive_name, int volume_number)
 
   argv[0] = "/bin/sh";
   argv[1] = "-c";
-  argv[2] = (char*) info_script_option;
+  argv[2] = (char *) info_script_option;
   argv[3] = NULL;
 
+  priv_set_restore_linkdir ();
   execv (argv[0], argv);
 
   exec_fatal (info_script_option);
@@ -860,9 +868,10 @@ sys_exec_checkpoint_script (const char *script_name,
                                 archive_format : current_format), 1);
   argv[0] = "/bin/sh";
   argv[1] = "-c";
-  argv[2] = (char*) script_name;
+  argv[2] = (char *) script_name;
   argv[3] = NULL;
 
+  priv_set_restore_linkdir ();
   execv (argv[0], argv);
 
   exec_fatal (script_name);
index da124196ad48b5f74a209e0ae2fff475e2da480f..928cfddd44a86220ab444844cac61c10da6495aa 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -43,7 +43,7 @@
 #include <closeout.h>
 #include <configmake.h>
 #include <exitfail.h>
-#include <getdate.h>
+#include <parse-datetime.h>
 #include <rmt.h>
 #include <rmt-command.h>
 #include <prepargs.h>
@@ -74,7 +74,7 @@
 static const char *stdin_used_by;
 
 /* Doesn't return if stdin already requested.  */
-void
+static void
 request_stdin (const char *option)
 {
   if (stdin_used_by)
@@ -220,12 +220,12 @@ subcommand_string (enum subcommand c)
   abort ();
 }
 
-void
-tar_list_quoting_styles (struct obstack *stk, char *prefix)
+static void
+tar_list_quoting_styles (struct obstack *stk, char const *prefix)
 {
   int i;
   size_t prefixlen = strlen (prefix);
-  
+
   for (i = 0; quoting_style_args[i]; i++)
     {
       obstack_grow (stk, prefix, prefixlen);
@@ -235,7 +235,7 @@ tar_list_quoting_styles (struct obstack *stk, char *prefix)
     }
 }
 
-void
+static void
 tar_set_quoting_style (char *arg)
 {
   int i;
@@ -274,6 +274,7 @@ enum
   EXCLUDE_TAG_ALL_OPTION,
   EXCLUDE_VCS_OPTION,
   FORCE_LOCAL_OPTION,
+  FULL_TIME_OPTION,
   GROUP_OPTION,
   IGNORE_CASE_OPTION,
   IGNORE_COMMAND_ERROR_OPTION,
@@ -337,7 +338,7 @@ enum
   UNQUOTE_OPTION,
   UTC_OPTION,
   VOLNO_FILE_OPTION,
-  WARNING_OPTION, 
+  WARNING_OPTION,
   WILDCARDS_MATCH_SLASH_OPTION,
   WILDCARDS_OPTION
 };
@@ -630,7 +631,7 @@ static struct argp_option options[] = {
   {"lzop", LZOP_OPTION, 0, 0, NULL, GRID+1 },
   {"xz", 'J', 0, 0, NULL, GRID+1 },
 #undef GRID
-  
+
 #define GRID 100
   {NULL, 0, NULL, 0,
    N_("Local file selection:"), GRID },
@@ -752,7 +753,9 @@ static struct argp_option options[] = {
       "Allowed signals are: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 and SIGUSR2; "
       "the names without SIG prefix are also accepted"), GRID+1 },
   {"utc", UTC_OPTION, 0, 0,
-   N_("print file modification dates in UTC"), GRID+1 },
+   N_("print file modification times in UTC"), GRID+1 },
+  {"full-time", FULL_TIME_OPTION, 0, 0,
+   N_("print file time to its full resolution"), GRID+1 },
   {"index-file", INDEX_FILE_OPTION, N_("FILE"), 0,
    N_("send verbose output to FILE"), GRID+1 },
   {"block-number", 'R', 0, 0,
@@ -888,7 +891,7 @@ static char const * const backup_file_table[] = {
   NULL
 };
 
-void
+static void
 add_exclude_array (char const * const * fv)
 {
   int i;
@@ -907,8 +910,8 @@ format_default_settings (void)
            " --rsh-command=%s"
 #endif
            ,
-           archive_format_string (DEFAULT_ARCHIVE_FORMAT), 
-           DEFAULT_ARCHIVE, DEFAULT_BLOCKING,              
+           archive_format_string (DEFAULT_ARCHIVE_FORMAT),
+           DEFAULT_ARCHIVE, DEFAULT_BLOCKING,
            quoting_style_args[DEFAULT_QUOTING_STYLE],
            DEFAULT_RMT_COMMAND
 #ifdef REMOTE_SHELL
@@ -925,7 +928,7 @@ set_subcommand_option (enum subcommand subcommand)
       && subcommand_option != subcommand)
     USAGE_ERROR ((0, 0,
                  _("You may not specify more than one `-Acdtrux' or `--test-label' option")));
-  
+
   subcommand_option = subcommand;
 }
 
@@ -935,7 +938,7 @@ set_use_compress_program_option (const char *string)
   if (use_compress_program_option
       && strcmp (use_compress_program_option, string) != 0)
     USAGE_ERROR ((0, 0, _("Conflicting compression options")));
-  
+
   use_compress_program_option = string;
 }
 \f
@@ -963,14 +966,14 @@ stat_on_signal (int signo)
 #endif
 }
 
-void
+static void
 set_stat_signal (const char *name)
 {
   static struct sigtab
   {
-    char *name;
+    char const *name;
     int signo;
-  } sigtab[] = {
+  } const sigtab[] = {
     { "SIGUSR1", SIGUSR1 },
     { "USR1", SIGUSR1 },
     { "SIGUSR2", SIGUSR2 },
@@ -982,7 +985,7 @@ set_stat_signal (const char *name)
     { "SIGQUIT", SIGQUIT },
     { "QUIT", SIGQUIT }
   };
-  struct sigtab *p;
+  struct sigtab const *p;
 
   for (p = sigtab; p < sigtab + sizeof (sigtab) / sizeof (sigtab[0]); p++)
     if (strcmp (p->name, name) == 0)
@@ -1011,7 +1014,7 @@ get_date_or_file (struct tar_args *args, const char *option,
       || *str == '.')
     {
       struct stat st;
-      if (deref_stat (dereference_option, str, &st) != 0)
+      if (stat (str, &st) != 0)
        {
          stat_error (str);
          USAGE_ERROR ((0, 0, _("Date sample file not found")));
@@ -1020,7 +1023,7 @@ get_date_or_file (struct tar_args *args, const char *option,
     }
   else
     {
-      if (! get_date (ts, str, NULL))
+      if (! parse_datetime (ts, str, NULL))
        {
          WARN ((0, 0, _("Substituting %s for unknown date format %s"),
                 tartime (*ts, false), quote (str)));
@@ -1093,7 +1096,7 @@ read_name_from_file (FILE *fp, struct obstack *stk, int term)
       obstack_1grow (stk, c);
       counter++;
     }
-  
+
   if (counter == 0 && c != EOF)
     return file_list_skip;
 
@@ -1164,7 +1167,7 @@ update_argv (const char *filename, struct argp_state *state)
   bool is_stdin = false;
   enum read_file_list_state read_state;
   int term = filename_terminator;
-  
+
   if (!strcmp (filename, "-"))
     {
       is_stdin = true;
@@ -1177,7 +1180,7 @@ update_argv (const char *filename, struct argp_state *state)
       if ((fp = fopen (filename, "r")) == NULL)
        open_fatal (filename);
     }
-  
+
   while ((read_state = read_name_from_file (fp, &argv_stk, term))
         != file_list_end)
     {
@@ -1186,18 +1189,18 @@ update_argv (const char *filename, struct argp_state *state)
        case file_list_success:
          count++;
          break;
-         
+
        case file_list_end: /* won't happen, just to pacify gcc */
          break;
-         
+
        case file_list_zero:
          {
            size_t size;
-           
+
            WARNOPT (WARN_FILENAME_WITH_NULS,
                     (0, 0, N_("%s: file name read contains nul character"),
                      quotearg_colon (filename)));
-           
+
            /* Prepare new stack contents */
            size = obstack_object_size (&argv_stk);
            p = obstack_finish (&argv_stk);
@@ -1212,34 +1215,34 @@ update_argv (const char *filename, struct argp_state *state)
            term = 0;
            break;
          }
-         
+
        case file_list_skip:
          break;
        }
     }
-  
+
   if (!is_stdin)
     fclose (fp);
-  
+
   if (count == 0)
     return;
-  
+
   start = obstack_finish (&argv_stk);
-  
+
   if (term == 0)
     for (p = start; *p; p += strlen (p) + 1)
       if (p[0] == '-')
        count++;
-  
+
   new_argc = state->argc + count;
   new_argv = xmalloc (sizeof (state->argv[0]) * (new_argc + 1));
   memcpy (new_argv, state->argv, sizeof (state->argv[0]) * (state->argc + 1));
   state->argv = new_argv;
   memmove (&state->argv[state->next + count], &state->argv[state->next],
           (state->argc - state->next + 1) * sizeof (state->argv[0]));
-  
+
   state->argc = new_argc;
-  
+
   for (i = state->next, p = start; *p; p += strlen (p) + 1, i++)
     {
       if (term == 0 && p[0] == '-')
@@ -1260,15 +1263,15 @@ tar_help_filter (int key, const char *text, void *input)
     default:
       s = (char*) text;
       break;
-      
+
     case 'j':
       s = xasprintf (_("filter the archive through %s"), BZIP2_PROGRAM);
       break;
-      
+
     case 'z':
       s = xasprintf (_("filter the archive through %s"), GZIP_PROGRAM);
       break;
-      
+
     case 'Z':
       s = xasprintf (_("filter the archive through %s"), COMPRESS_PROGRAM);
       break;
@@ -1276,29 +1279,33 @@ tar_help_filter (int key, const char *text, void *input)
     case LZIP_OPTION:
       s = xasprintf (_("filter the archive through %s"), LZIP_PROGRAM);
       break;
-      
+
     case LZMA_OPTION:
       s = xasprintf (_("filter the archive through %s"), LZMA_PROGRAM);
       break;
-      
+
     case 'J':
       s = xasprintf (_("filter the archive through %s"), XZ_PROGRAM);
       break;
-      
+
     case ARGP_KEY_HELP_EXTRA:
-      obstack_init (&stk);
-      s = _("Valid arguments for the --quoting-style option are:");
-      obstack_grow (&stk, s, strlen (s));
-      obstack_grow (&stk, "\n\n", 2);
-      tar_list_quoting_styles (&stk, "  ");
-      s = _("\n*This* tar defaults to:\n");
-      obstack_grow (&stk, s, strlen (s));
-      s = format_default_settings ();
-      obstack_grow (&stk, s, strlen (s));
-      obstack_1grow (&stk, '\n');
-      obstack_1grow (&stk, 0);
-      s = xstrdup (obstack_finish (&stk));
-      obstack_free (&stk, NULL);
+      {
+       const char *tstr;
+
+       obstack_init (&stk);
+       tstr = _("Valid arguments for the --quoting-style option are:");
+       obstack_grow (&stk, tstr, strlen (tstr));
+       obstack_grow (&stk, "\n\n", 2);
+       tar_list_quoting_styles (&stk, "  ");
+       tstr = _("\n*This* tar defaults to:\n");
+       obstack_grow (&stk, tstr, strlen (tstr));
+       s = format_default_settings ();
+       obstack_grow (&stk, s, strlen (s));
+       obstack_1grow (&stk, '\n');
+       obstack_1grow (&stk, 0);
+       s = xstrdup (obstack_finish (&stk));
+       obstack_free (&stk, NULL);
+      }
     }
   return s;
 }
@@ -1308,7 +1315,7 @@ expand_pax_option (struct tar_args *targs, const char *arg)
 {
   struct obstack stk;
   char *res;
-  
+
   obstack_init (&stk);
   while (*arg)
     {
@@ -1357,6 +1364,8 @@ expand_pax_option (struct tar_args *targs, const char *arg)
 }
 
 \f
+#define TAR_SIZE_SUFFIXES "bBcGgkKMmPTtw"
+
 static error_t
 parse_opt (int key, char *arg, struct argp_state *state)
 {
@@ -1369,19 +1378,19 @@ parse_opt (int key, char *arg, struct argp_state *state)
       name_add_name (arg, MAKE_INCL_OPTIONS (args));
       args->input_files = true;
       break;
-      
+
     case 'A':
       set_subcommand_option (CAT_SUBCOMMAND);
       break;
-      
+
     case 'a':
       args->compress_autodetect = true;
       break;
-      
+
     case NO_AUTO_COMPRESS_OPTION:
       args->compress_autodetect = false;
       break;
-      
+
     case 'b':
       {
        uintmax_t u;
@@ -1393,116 +1402,125 @@ parse_opt (int key, char *arg, struct argp_state *state)
                        _("Invalid blocking factor")));
       }
       break;
-      
+
     case 'B':
       /* Try to reblock input records.  For reading 4.2BSD pipes.  */
-      
+
       /* It would surely make sense to exchange -B and -R, but it seems
         that -B has been used for a long while in Sun tar and most
         BSD-derived systems.  This is a consequence of the block/record
         terminology confusion.  */
-      
+
       read_full_records_option = true;
       break;
-      
+
     case 'c':
       set_subcommand_option (CREATE_SUBCOMMAND);
       break;
-      
+
     case 'C':
       name_add_dir (arg);
       break;
-      
+
     case 'd':
       set_subcommand_option (DIFF_SUBCOMMAND);
       break;
-      
+
     case 'f':
       if (archive_names == allocated_archive_names)
        archive_name_array = x2nrealloc (archive_name_array,
                                         &allocated_archive_names,
                                         sizeof (archive_name_array[0]));
-      
+
       archive_name_array[archive_names++] = arg;
       break;
-      
+
     case 'F':
       /* Since -F is only useful with -M, make it implied.  Run this
         script at the end of each tape.  */
-      
+
       info_script_option = arg;
       multi_volume_option = true;
       break;
-      
+
+    case FULL_TIME_OPTION:
+      full_time_option = true;
+      break;
+
     case 'g':
       listed_incremental_option = arg;
       after_date_option = true;
       /* Fall through.  */
-      
+
     case 'G':
       /* We are making an incremental dump (FIXME: are we?); save
         directories at the beginning of the archive, and include in each
         directory its contents.  */
-      
+
       incremental_option = true;
       break;
-      
+
     case 'h':
       /* Follow symbolic links.  */
       dereference_option = true;
       break;
-      
+
     case HARD_DEREFERENCE_OPTION:
       hard_dereference_option = true;
       break;
-      
+
     case 'i':
       /* Ignore zero blocks (eofs).  This can't be the default,
         because Unix tar writes two blocks of zeros, then pads out
         the record with garbage.  */
-      
+
       ignore_zeros_option = true;
       break;
-      
+
     case 'j':
       set_use_compress_program_option (BZIP2_PROGRAM);
       break;
-      
+
     case 'J':
       set_use_compress_program_option (XZ_PROGRAM);
       break;
-      
+
     case 'k':
       /* Don't replace existing files.  */
       old_files_option = KEEP_OLD_FILES;
       break;
-      
+
     case 'K':
       starting_file_option = true;
       addname (arg, 0, true, NULL);
       break;
-      
+
     case ONE_FILE_SYSTEM_OPTION:
       /* When dumping directories, don't dump files/subdirectories
         that are on other filesystems. */
       one_file_system_option = true;
       break;
-      
+
     case 'l':
       check_links_option = 1;
       break;
-      
+
     case 'L':
       {
        uintmax_t u;
-       if (xstrtoumax (arg, 0, 10, &u, "") != LONGINT_OK)
+       char *p;
+
+       if (xstrtoumax (arg, &p, 10, &u, TAR_SIZE_SUFFIXES) != LONGINT_OK)
          USAGE_ERROR ((0, 0, "%s: %s", quotearg_colon (arg),
                        _("Invalid tape length")));
-       tape_length_option = 1024 * (tarlong) u;
+       if (p > arg && !strchr (TAR_SIZE_SUFFIXES, p[-1]))
+         tape_length_option = 1024 * (tarlong) u;
+       else
+         tape_length_option = (tarlong) u;
        multi_volume_option = true;
       }
       break;
-      
+
     case LEVEL_OPTION:
       {
        char *p;
@@ -1511,47 +1529,47 @@ parse_opt (int key, char *arg, struct argp_state *state)
          USAGE_ERROR ((0, 0, _("Invalid incremental level value")));
       }
       break;
-      
+
     case LZIP_OPTION:
       set_use_compress_program_option (LZIP_PROGRAM);
       break;
-      
+
     case LZMA_OPTION:
       set_use_compress_program_option (LZMA_PROGRAM);
       break;
-      
+
     case LZOP_OPTION:
       set_use_compress_program_option (LZOP_PROGRAM);
       break;
-      
+
     case 'm':
       touch_option = true;
       break;
-      
+
     case 'M':
       /* Make multivolume archive: when we can't write any more into
         the archive, re-open it, and continue writing.  */
-      
+
       multi_volume_option = true;
       break;
-      
+
     case MTIME_OPTION:
       get_date_or_file (args, "--mtime", arg, &mtime_option);
       set_mtime_option = true;
       break;
-      
+
     case 'n':
       seek_option = 1;
       break;
-      
+
     case NO_SEEK_OPTION:
       seek_option = 0;
       break;
-      
+
     case 'N':
       after_date_option = true;
       /* Fall through.  */
-      
+
     case NEWER_MTIME_OPTION:
       if (NEWER_OPTION_INITIALIZED (newer_mtime_option))
        USAGE_ERROR ((0, 0, _("More than one threshold date")));
@@ -1559,48 +1577,48 @@ parse_opt (int key, char *arg, struct argp_state *state)
                        key == NEWER_MTIME_OPTION ? "--newer-mtime"
                        : "--after-date", arg, &newer_mtime_option);
       break;
-      
+
     case 'o':
       args->o_option = true;
       break;
-      
+
     case 'O':
       to_stdout_option = true;
       break;
-      
+
     case 'p':
       same_permissions_option = true;
       break;
-      
+
     case 'P':
       absolute_names_option = true;
       break;
-      
+
     case 'r':
       set_subcommand_option (APPEND_SUBCOMMAND);
       break;
-      
+
     case 'R':
       /* Print block numbers for debugging bad tar archives.  */
-      
+
       /* It would surely make sense to exchange -B and -R, but it seems
         that -B has been used for a long while in Sun tar and most
         BSD-derived systems.  This is a consequence of the block/record
         terminology confusion.  */
-      
+
       block_number_option = true;
       break;
-      
+
     case 's':
       /* Names to extract are sorted.  */
-      
+
       same_order_option = true;
       break;
-      
+
     case 'S':
       sparse_option = true;
       break;
-      
+
     case SPARSE_VERSION_OPTION:
       sparse_option = true;
       {
@@ -1616,16 +1634,16 @@ parse_opt (int key, char *arg, struct argp_state *state)
          }
       }
       break;
-      
+
     case 't':
       set_subcommand_option (LIST_SUBCOMMAND);
       verbose_option++;
       break;
-      
+
     case TEST_LABEL_OPTION:
       set_subcommand_option (TEST_LABEL_SUBCOMMAND);
       break;
-      
+
     case 'T':
       update_argv (arg, state);
       /* Indicate we've been given -T option. This is for backward
@@ -1633,40 +1651,40 @@ parse_opt (int key, char *arg, struct argp_state *state)
         succeed */
       files_from_option = true;
       break;
-      
+
     case 'u':
       set_subcommand_option (UPDATE_SUBCOMMAND);
       break;
-      
+
     case 'U':
       old_files_option = UNLINK_FIRST_OLD_FILES;
       break;
-      
+
     case UTC_OPTION:
       utc_option = true;
       break;
-      
+
     case 'v':
       verbose_option++;
       warning_option |= WARN_VERBOSE_WARNINGS;
       break;
-      
+
     case 'V':
       volume_label_option = arg;
       break;
-      
+
     case 'w':
       interactive_option = true;
       break;
-      
+
     case 'W':
       verify_option = true;
       break;
-      
+
     case 'x':
       set_subcommand_option (EXTRACT_SUBCOMMAND);
       break;
-      
+
     case 'X':
       if (add_exclude_file (add_exclude, excluded, arg,
                            MAKE_EXCL_OPTIONS (args), '\n')
@@ -1676,19 +1694,19 @@ parse_opt (int key, char *arg, struct argp_state *state)
          FATAL_ERROR ((0, e, "%s", quotearg_colon (arg)));
        }
       break;
-      
+
     case 'z':
       set_use_compress_program_option (GZIP_PROGRAM);
       break;
-      
+
     case 'Z':
       set_use_compress_program_option (COMPRESS_PROGRAM);
       break;
-      
+
     case ANCHORED_OPTION:
       args->matching_flags |= EXCLUDE_ANCHORED;
       break;
-      
+
     case ATIME_PRESERVE_OPTION:
       atime_preserve_option =
        (arg
@@ -1700,20 +1718,20 @@ parse_opt (int key, char *arg, struct argp_state *state)
                      _("--atime-preserve='system' is not supported"
                        " on this platform")));
       break;
-      
+
     case CHECK_DEVICE_OPTION:
       check_device_option = true;
       break;
-      
+
     case NO_CHECK_DEVICE_OPTION:
       check_device_option = false;
       break;
-      
+
     case CHECKPOINT_OPTION:
       if (arg)
        {
          char *p;
-         
+
          if (*arg == '.')
            {
              checkpoint_compile_action (".");
@@ -1727,96 +1745,96 @@ parse_opt (int key, char *arg, struct argp_state *state)
       else
        checkpoint_option = DEFAULT_CHECKPOINT;
       break;
-      
+
     case CHECKPOINT_ACTION_OPTION:
       checkpoint_compile_action (arg);
       break;
-      
+
     case BACKUP_OPTION:
       backup_option = true;
       if (arg)
        args->version_control_string = arg;
       break;
-      
+
     case DELAY_DIRECTORY_RESTORE_OPTION:
       delay_directory_restore_option = true;
       break;
-      
+
     case NO_DELAY_DIRECTORY_RESTORE_OPTION:
       delay_directory_restore_option = false;
       break;
-      
+
     case DELETE_OPTION:
       set_subcommand_option (DELETE_SUBCOMMAND);
       break;
-      
+
     case EXCLUDE_BACKUPS_OPTION:
       add_exclude_array (backup_file_table);
       break;
-      
+
     case EXCLUDE_OPTION:
       add_exclude (excluded, arg, MAKE_EXCL_OPTIONS (args));
       break;
-      
+
     case EXCLUDE_CACHES_OPTION:
       add_exclusion_tag ("CACHEDIR.TAG", exclusion_tag_contents,
                         cachedir_file_p);
       break;
-      
+
     case EXCLUDE_CACHES_UNDER_OPTION:
       add_exclusion_tag ("CACHEDIR.TAG", exclusion_tag_under,
                         cachedir_file_p);
       break;
-      
+
     case EXCLUDE_CACHES_ALL_OPTION:
       add_exclusion_tag ("CACHEDIR.TAG", exclusion_tag_all,
                         cachedir_file_p);
       break;
-      
+
     case EXCLUDE_TAG_OPTION:
       add_exclusion_tag (arg, exclusion_tag_contents, NULL);
       break;
-      
+
     case EXCLUDE_TAG_UNDER_OPTION:
       add_exclusion_tag (arg, exclusion_tag_under, NULL);
       break;
-      
+
     case EXCLUDE_TAG_ALL_OPTION:
       add_exclusion_tag (arg, exclusion_tag_all, NULL);
       break;
-      
+
     case EXCLUDE_VCS_OPTION:
       add_exclude_array (vcs_file_table);
       break;
-      
+
     case FORCE_LOCAL_OPTION:
       force_local_option = true;
       break;
-      
+
     case 'H':
       set_archive_format (arg);
       break;
-      
+
     case INDEX_FILE_OPTION:
       index_file_name = arg;
       break;
-      
+
     case IGNORE_CASE_OPTION:
       args->matching_flags |= FNM_CASEFOLD;
       break;
-      
+
     case IGNORE_COMMAND_ERROR_OPTION:
       ignore_command_error_option = true;
       break;
-      
+
     case IGNORE_FAILED_READ_OPTION:
       ignore_failed_read_option = true;
       break;
-      
+
     case KEEP_NEWER_FILES_OPTION:
       old_files_option = KEEP_NEWER_FILES;
       break;
-      
+
     case GROUP_OPTION:
       if (! (strlen (arg) < GNAME_FIELD_SIZE
             && gname_to_gid (arg, &group_option)))
@@ -1830,7 +1848,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
                          _("Invalid group")));
        }
       break;
-      
+
     case MODE_OPTION:
       mode_option = mode_compile (arg);
       if (!mode_option)
@@ -1838,49 +1856,49 @@ parse_opt (int key, char *arg, struct argp_state *state)
       initial_umask = umask (0);
       umask (initial_umask);
       break;
-      
+
     case NO_ANCHORED_OPTION:
       args->include_anchored = 0; /* Clear the default for comman line args */
       args->matching_flags &= ~ EXCLUDE_ANCHORED;
       break;
-      
+
     case NO_IGNORE_CASE_OPTION:
       args->matching_flags &= ~ FNM_CASEFOLD;
       break;
-      
+
     case NO_IGNORE_COMMAND_ERROR_OPTION:
       ignore_command_error_option = false;
       break;
-      
+
     case NO_OVERWRITE_DIR_OPTION:
       old_files_option = NO_OVERWRITE_DIR_OLD_FILES;
       break;
-      
+
     case NO_QUOTE_CHARS_OPTION:
       for (;*arg; arg++)
        set_char_quoting (NULL, *arg, 0);
       break;
-      
+
     case NO_WILDCARDS_OPTION:
       args->wildcards = disable_wildcards;
       break;
-      
+
     case NO_WILDCARDS_MATCH_SLASH_OPTION:
       args->matching_flags |= FNM_FILE_NAME;
       break;
-      
+
     case NULL_OPTION:
       filename_terminator = '\0';
       break;
-      
+
     case NO_NULL_OPTION:
       filename_terminator = '\n';
       break;
-      
+
     case NUMERIC_OWNER_OPTION:
       numeric_owner_option = true;
       break;
-      
+
     case OCCURRENCE_OPTION:
       if (!arg)
        occurrence_option = 1;
@@ -1894,15 +1912,15 @@ parse_opt (int key, char *arg, struct argp_state *state)
                          _("Invalid number")));
        }
       break;
-      
+
     case OVERWRITE_DIR_OPTION:
       old_files_option = DEFAULT_OLD_FILES;
       break;
-      
+
     case OVERWRITE_OPTION:
       old_files_option = OVERWRITE_OLD_FILES;
       break;
-      
+
     case OWNER_OPTION:
       if (! (strlen (arg) < UNAME_FIELD_SIZE
             && uname_to_uid (arg, &owner_option)))
@@ -1916,16 +1934,16 @@ parse_opt (int key, char *arg, struct argp_state *state)
                          _("Invalid owner")));
        }
       break;
-      
+
     case QUOTE_CHARS_OPTION:
       for (;*arg; arg++)
        set_char_quoting (NULL, *arg, 1);
       break;
-      
+
     case QUOTING_STYLE_OPTION:
       tar_set_quoting_style (arg);
       break;
-      
+
     case PAX_OPTION:
       {
        char *tmp = expand_pax_option (args, arg);
@@ -1934,11 +1952,11 @@ parse_opt (int key, char *arg, struct argp_state *state)
        free (tmp);
       }
       break;
-      
+
     case POSIX_OPTION:
       set_archive_format ("posix");
       break;
-      
+
     case PRESERVE_OPTION:
       /* FIXME: What it is good for? */
       same_permissions_option = true;
@@ -1946,11 +1964,12 @@ parse_opt (int key, char *arg, struct argp_state *state)
       WARN ((0, 0, _("The --preserve option is deprecated, "
                     "use --preserve-permissions --preserve-order instead")));
       break;
-      
+
     case RECORD_SIZE_OPTION:
       {
        uintmax_t u;
-       if (! (xstrtoumax (arg, 0, 10, &u, "") == LONGINT_OK
+
+       if (! (xstrtoumax (arg, NULL, 10, &u, TAR_SIZE_SUFFIXES) == LONGINT_OK
               && u == (size_t) u))
          USAGE_ERROR ((0, 0, "%s: %s", quotearg_colon (arg),
                        _("Invalid record size")));
@@ -1961,27 +1980,27 @@ parse_opt (int key, char *arg, struct argp_state *state)
        blocking_factor = record_size / BLOCKSIZE;
       }
       break;
-      
+
     case RECURSIVE_UNLINK_OPTION:
       recursive_unlink_option = true;
       break;
-      
+
     case REMOVE_FILES_OPTION:
       remove_files_option = true;
       break;
-      
+
     case RESTRICT_OPTION:
       restrict_option = true;
       break;
-      
+
     case RMT_COMMAND_OPTION:
       rmt_command = arg;
       break;
-      
+
     case RSH_COMMAND_OPTION:
       rsh_command_option = arg;
       break;
-      
+
     case SHOW_DEFAULTS_OPTION:
       {
        char *s = format_default_settings ();
@@ -1990,7 +2009,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
        free (s);
        exit (0);
       }
-      
+
     case STRIP_COMPONENTS_OPTION:
       {
        uintmax_t u;
@@ -2079,7 +2098,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
     case WARNING_OPTION:
       set_warning_option (arg);
       break;
-      
+
     case '0':
     case '1':
     case '2':
@@ -2197,7 +2216,7 @@ decode_options (int argc, char **argv)
   struct tar_args args;
 
   argp_version_setup ("tar", tar_authors);
-  
+
   /* Set some default option values.  */
   args.textual_date = NULL;
   args.wildcards = default_wildcards;
@@ -2209,7 +2228,7 @@ decode_options (int argc, char **argv)
   args.version_control_string = 0;
   args.input_files = false;
   args.compress_autodetect = false;
-  
+
   subcommand_option = UNKNOWN_SUBCOMMAND;
   archive_format = DEFAULT_FORMAT;
   blocking_factor = DEFAULT_BLOCKING;
@@ -2230,7 +2249,7 @@ decode_options (int argc, char **argv)
   incremental_level = -1;
 
   seek_option = -1;
-  
+
   /* Convert old-style tar call by exploding option element and rearranging
      options accordingly.  */
 
@@ -2385,7 +2404,7 @@ decode_options (int argc, char **argv)
   if (incremental_level != -1 && !listed_incremental_option)
     WARN ((0, 0,
           _("--level is meaningless without --listed-incremental")));
-  
+
   if (volume_label_option)
     {
       if (archive_format == GNU_FORMAT || archive_format == OLDGNU_FORMAT)
@@ -2446,6 +2465,18 @@ decode_options (int argc, char **argv)
   if (recursive_unlink_option)
     old_files_option = UNLINK_FIRST_OLD_FILES;
 
+  /* Flags for accessing files to be read from or copied into.  POSIX says
+     O_NONBLOCK has unspecified effect on most types of files, but in
+     practice it never harms and sometimes helps.  */
+  {
+    int base_open_flags =
+      (O_BINARY | O_CLOEXEC | O_NOCTTY | O_NONBLOCK
+       | (dereference_option ? 0 : O_NOFOLLOW)
+       | (atime_preserve_option == system_atime_preserve ? O_NOATIME : 0));
+    open_read_flags = O_RDONLY | base_open_flags;
+    open_searchdir_flags = O_SEARCH | O_DIRECTORY | base_open_flags;
+  }
+  fstatat_flags = dereference_option ? 0 : AT_SYMLINK_NOFOLLOW;
 
   if (subcommand_option == TEST_LABEL_SUBCOMMAND)
     {
@@ -2463,7 +2494,7 @@ decode_options (int argc, char **argv)
   if (same_order_option && listed_incremental_option)
     USAGE_ERROR ((0, 0, _("--preserve-order is not compatible with "
                          "--listed-incremental")));
-  
+
   /* Forbid using -c with no input files whatsoever.  Check that `-f -',
      explicit or implied, is used correctly.  */
 
@@ -2475,8 +2506,8 @@ decode_options (int argc, char **argv)
                      _("Cowardly refusing to create an empty archive")));
       if (args.compress_autodetect && archive_names
          && strcmp (archive_name_array[0], "-"))
-       set_comression_program_by_suffix (archive_name_array[0],
-                                         use_compress_program_option);
+       set_compression_program_by_suffix (archive_name_array[0],
+                                          use_compress_program_option);
       break;
 
     case EXTRACT_SUBCOMMAND:
@@ -2531,7 +2562,7 @@ decode_options (int argc, char **argv)
     }
 
   checkpoint_finish_compile ();
-  
+
   report_textual_dates (&args);
 }
 
@@ -2566,14 +2597,12 @@ main (int argc, char **argv)
 
   obstack_init (&argv_stk);
 
-  /* Ensure default behavior for some signals */
-  signal (SIGPIPE, SIG_IGN);
   /* System V fork+wait does not work if SIGCHLD is ignored.  */
   signal (SIGCHLD, SIG_DFL);
 
   /* Try to disable the ability to unlink a directory.  */
   priv_set_remove_linkdir ();
-  
+
   /* Decode options.  */
 
   decode_options (argc, argv);
@@ -2659,9 +2688,31 @@ tar_stat_init (struct tar_stat_info *st)
   memset (st, 0, sizeof (*st));
 }
 
+/* Close the stream or file descriptor associated with ST, and remove
+   all traces of it from ST.  Return true if successful, false (with a
+   diagnostic) otherwise.  */
+bool
+tar_stat_close (struct tar_stat_info *st)
+{
+  int status = (st->dirstream ? closedir (st->dirstream)
+               : 0 < st->fd ? close (st->fd)
+               : 0);
+  st->dirstream = 0;
+  st->fd = 0;
+
+  if (status == 0)
+    return true;
+  else
+    {
+      close_diag (st->orig_file_name);
+      return false;
+    }
+}
+
 void
 tar_stat_destroy (struct tar_stat_info *st)
 {
+  tar_stat_close (st);
   free (st->orig_file_name);
   free (st->file_name);
   free (st->link_name);
index 7f72f3ef723e54ec0fa84b4bc2530660cfb92cfc..ce9850c968533db8b49ddc0b9f78e81c6333cabc 100644 (file)
--- a/src/tar.h
+++ b/src/tar.h
@@ -265,7 +265,7 @@ enum archive_format
 struct sp_array
 {
   off_t offset;
-  size_t numbytes;
+  off_t numbytes;
 };
 
 struct xheader
@@ -311,12 +311,32 @@ struct tar_stat_info
 
   /* Extended headers */
   struct xheader xhdr;
-  
+
   /* For dumpdirs */
   bool is_dumpdir;          /* Is the member a dumpdir? */
   bool skipped;             /* The member contents is already read
                               (for GNUTYPE_DUMPDIR) */
   char *dumpdir;            /* Contents of the dump directory */
+
+  /* Parent directory, if creating an archive.  This is null if the
+     file is at the top level.  */
+  struct tar_stat_info *parent;
+
+  /* Directory stream.  If this is not null, it is in control of FD,
+     and should be closed instead of FD.  */
+  DIR *dirstream;
+
+  /* File descriptor, if creating an archive, and if a directory or a
+     regular file or a contiguous file.
+
+     It is zero if no file descriptor is available, either because it
+     was never needed or because it was open and then closed to
+     conserve on file descriptors.  (Standard input is never used
+     here, so zero cannot be a valid file descriptor.)
+
+     It is negative if it could not be reopened after it was closed.
+     Negate it to find out what errno was when the reopen failed.  */
+  int fd;
 };
 
 union block
index 03c06f6496e6715a7a176ae1af120433bf60fed1..c35133fa2578953bc5e21bf5cff9f56f877b8cc9 100644 (file)
@@ -1,4 +1,4 @@
-/* This file is part of GNU tar. 
+/* This file is part of GNU tar.
    Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@ enum replace_segm_type
 
 enum case_ctl_type
   {
-    ctl_stop,       /* Stop case conversion */ 
-    ctl_upcase_next,/* Turn the next character to uppercase */ 
+    ctl_stop,       /* Stop case conversion */
+    ctl_upcase_next,/* Turn the next character to uppercase */
     ctl_locase_next,/* Turn the next character to lowercase */
     ctl_upcase,     /* Turn the replacement to uppercase until ctl_stop */
     ctl_locase      /* Turn the replacement to lowercase until ctl_stop */
@@ -51,9 +51,9 @@ struct replace_segm
     {
       char *ptr;
       size_t size;
-    } literal;                /* type == segm_literal */   
+    } literal;                /* type == segm_literal */
     size_t ref;               /* type == segm_backref */
-    enum case_ctl_type ctl;   /* type == segm_case_ctl */ 
+    enum case_ctl_type ctl;   /* type == segm_case_ctl */
   } v;
 };
 
@@ -75,7 +75,7 @@ int transform_flags = XFORM_ALL;
 static struct transform *transform_head, *transform_tail;
 
 static struct transform *
-new_transform ()
+new_transform (void)
 {
   struct transform *p = xzalloc (sizeof *p);
   if (transform_tail)
@@ -146,7 +146,7 @@ parse_xform_flags (int *pflags, int c)
     case 'R':
       *pflags &= ~XFORM_REGFILE;
       break;
-       
+
     case 'h':
       *pflags |= XFORM_LINK;
       break;
@@ -154,7 +154,7 @@ parse_xform_flags (int *pflags, int c)
     case 'H':
       *pflags &= ~XFORM_LINK;
       break;
-       
+
     case 's':
       *pflags |= XFORM_SYMLINK;
       break;
@@ -204,10 +204,10 @@ parse_transform_expr (const char *expr)
                              *expr));
            }
          return expr;
-       }         
+       }
       USAGE_ERROR ((0, 0, _("Invalid transform expression")));
     }
-  
+
   delim = expr[1];
 
   /* Scan regular expression */
@@ -258,14 +258,14 @@ parse_transform_expr (const char *expr)
 
   if (*p == ';')
     p++;
-  
+
   /* Extract and compile regex */
   str = xmalloc (i - 1);
   memcpy (str, expr + 2, i - 2);
   str[i - 2] = 0;
 
   rc = regcomp (&tf->regex, str, cflags);
-  
+
   if (rc)
     {
       char errbuf[512];
@@ -275,7 +275,7 @@ parse_transform_expr (const char *expr)
 
   if (str[0] == '^' || str[strlen (str) - 1] == '$')
     tf->transform_type = transform_first;
-  
+
   free (str);
 
   /* Extract and compile replacement expr */
@@ -289,7 +289,7 @@ parse_transform_expr (const char *expr)
       if (*cur == '\\')
        {
          size_t n;
-         
+
          add_literal_segment (tf, beg, cur);
          switch (*++cur)
            {
@@ -310,32 +310,32 @@ parse_transform_expr (const char *expr)
              add_char_segment (tf, '\a');
              cur++;
              break;
-             
+
            case 'b':
              add_char_segment (tf, '\b');
              cur++;
              break;
-             
+
            case 'f':
              add_char_segment (tf, '\f');
              cur++;
              break;
-             
+
            case 'n':
              add_char_segment (tf, '\n');
              cur++;
              break;
-             
+
            case 'r':
              add_char_segment (tf, '\r');
              cur++;
              break;
-             
+
            case 't':
              add_char_segment (tf, '\t');
              cur++;
              break;
-             
+
            case 'v':
              add_char_segment (tf, '\v');
              cur++;
@@ -345,39 +345,39 @@ parse_transform_expr (const char *expr)
              add_char_segment (tf, '&');
              cur++;
              break;
-             
+
            case 'L':
              /* Turn the replacement to lowercase until a `\U' or `\E'
                 is found, */
              add_case_ctl_segment (tf, ctl_locase);
              cur++;
              break;
+
            case 'l':
              /* Turn the next character to lowercase, */
              add_case_ctl_segment (tf, ctl_locase_next);
              cur++;
              break;
-             
+
            case 'U':
              /* Turn the replacement to uppercase until a `\L' or `\E'
                 is found, */
              add_case_ctl_segment (tf, ctl_upcase);
              cur++;
              break;
-             
+
            case 'u':
              /* Turn the next character to uppercase, */
              add_case_ctl_segment (tf, ctl_upcase_next);
              cur++;
              break;
-             
+
            case 'E':
              /* Stop case conversion started by `\L' or `\U'. */
              add_case_ctl_segment (tf, ctl_stop);
              cur++;
              break;
-  
+
            default:
              /* Try to be nice */
              {
@@ -420,7 +420,7 @@ run_case_conv (enum case_ctl_type case_ctl, char *ptr, size_t size)
   static char *case_ctl_buffer;
   static size_t case_ctl_bufsize;
   char *p;
-  
+
   if (case_ctl_bufsize < size)
     {
       case_ctl_bufsize = size;
@@ -432,16 +432,16 @@ run_case_conv (enum case_ctl_type case_ctl, char *ptr, size_t size)
     case ctl_upcase_next:
       case_ctl_buffer[0] = toupper ((unsigned char) case_ctl_buffer[0]);
       break;
-      
+
     case ctl_locase_next:
       case_ctl_buffer[0] = tolower ((unsigned char) case_ctl_buffer[0]);
       break;
-      
+
     case ctl_upcase:
       for (p = case_ctl_buffer; p < case_ctl_buffer + size; p++)
        *p = toupper ((unsigned char) *p);
       break;
-      
+
     case ctl_locase:
       for (p = case_ctl_buffer; p < case_ctl_buffer + size; p++)
        *p = tolower ((unsigned char) *p);
@@ -457,7 +457,7 @@ run_case_conv (enum case_ctl_type case_ctl, char *ptr, size_t size)
 static struct obstack stk;
 static bool stk_init;
 
-void
+static void
 _single_transform_name_to_obstack (struct transform *tf, char *input)
 {
   regmatch_t *rmp;
@@ -465,7 +465,7 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
   size_t nmatches = 0;
   enum case_ctl_type case_ctl = ctl_stop,  /* Current case conversion op */
                      save_ctl = ctl_stop;  /* Saved case_ctl for \u and \l */
-  
+
   /* Reset case conversion after a single-char operation */
 #define CASE_CTL_RESET()  if (case_ctl == ctl_upcase_next     \
                              || case_ctl == ctl_locase_next) \
@@ -473,20 +473,20 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
                               case_ctl = save_ctl;            \
                               save_ctl = ctl_stop;            \
                            }
-  
+
   rmp = xmalloc ((tf->regex.re_nsub + 1) * sizeof (*rmp));
 
   while (*input)
     {
       size_t disp;
       char *ptr;
-      
+
       rc = regexec (&tf->regex, input, tf->regex.re_nsub + 1, rmp, 0);
-      
+
       if (rc == 0)
        {
          struct replace_segm *segm;
-         
+
          disp = rmp[0].rm_eo;
 
          if (rmp[0].rm_so)
@@ -516,7 +516,7 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
                    }
                  obstack_grow (&stk, ptr, segm->v.literal.size);
                  break;
-             
+
                case segm_backref:    /* Back-reference segment */
                  if (rmp[segm->v.ref].rm_so != -1
                      && rmp[segm->v.ref].rm_eo != -1)
@@ -529,7 +529,7 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
                          ptr = run_case_conv (case_ctl, ptr, size);
                          CASE_CTL_RESET();
                        }
-                     
+
                      obstack_grow (&stk, ptr, size);
                    }
                  break;
@@ -549,7 +549,7 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
                          break;
                        }
                      /*FALL THROUGH*/
-                     
+
                    case ctl_upcase:
                    case ctl_locase:
                    case ctl_stop:
@@ -577,18 +577,18 @@ _single_transform_name_to_obstack (struct transform *tf, char *input)
   free (rmp);
 }
 
-bool
+static bool
 _transform_name_to_obstack (int flags, char *input, char **output)
 {
   struct transform *tf;
   bool alloced = false;
-  
+
   if (!stk_init)
     {
       obstack_init (&stk);
       stk_init = true;
     }
-  
+
   for (tf = transform_head; tf; tf = tf->next)
     {
       if (tf->flags & flags)
@@ -601,7 +601,7 @@ _transform_name_to_obstack (int flags, char *input, char **output)
   *output = input;
   return alloced;
 }
-  
+
 bool
 transform_name_fp (char **pinput, int flags,
                   char *(*fun)(char *, void *), void *dat)
index 2af6f9957b2887eea74b9fe0b394207d60937e32..b2816368569c85140f972fdc45bcb5664021c5d4 100644 (file)
@@ -1,4 +1,4 @@
-/* This file is part of GNU tar. 
+/* This file is part of GNU tar.
    Copyright (C) 2009 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
@@ -42,7 +42,7 @@ static struct deferred_unlink *dunlink_avail;
 size_t deferred_unlink_delay = 0;
 
 static struct deferred_unlink *
-dunlink_alloc ()
+dunlink_alloc (void)
 {
   struct deferred_unlink *p;
   if (dunlink_avail)
@@ -77,7 +77,7 @@ flush_deferred_unlinks (bool force)
        {
          if (p->is_dir)
            {
-             if (rmdir (p->file_name) != 0)
+             if (unlinkat (chdir_fd, p->file_name, AT_REMOVEDIR) != 0)
                {
                  switch (errno)
                    {
@@ -101,7 +101,7 @@ flush_deferred_unlinks (bool force)
            }
          else
            {
-             if (unlink (p->file_name) != 0 && errno != ENOENT)
+             if (unlinkat (chdir_fd, p->file_name, 0) != 0 && errno != ENOENT)
                unlink_error (p->file_name);
            }
          dunlink_reclaim (p);
@@ -116,7 +116,7 @@ flush_deferred_unlinks (bool force)
        {
          prev = p;
          p = next;
-       }         
+       }
     }
   if (!dunlink_head)
     dunlink_tail = NULL;
@@ -142,13 +142,13 @@ queue_deferred_unlink (const char *name, bool is_dir)
   if (dunlink_head
       && records_written > dunlink_head->records_written + deferred_unlink_delay)
     flush_deferred_unlinks (false);
-  
+
   p = dunlink_alloc ();
   p->next = NULL;
   p->file_name = normalize_filename (name);
   p->is_dir = is_dir;
   p->records_written = records_written;
-  
+
   if (dunlink_tail)
     dunlink_tail->next = p;
   else
index b0151759d9b0430b34086d013a29efae722d99ce..69fa5924b1b64e921e69492333142959926ff39b 100644 (file)
@@ -47,7 +47,7 @@ char *output_start;
 static void
 append_file (char *file_name)
 {
-  int handle = open (file_name, O_RDONLY | O_BINARY);
+  int handle = openat (chdir_fd, file_name, O_RDONLY | O_BINARY);
   struct stat stat_data;
 
   if (handle < 0)
@@ -114,8 +114,8 @@ update_archive (void)
 
   while (!found_end)
     {
-      enum read_header status = read_header (&current_header, 
-                                             &current_stat_info, 
+      enum read_header status = read_header (&current_header,
+                                             &current_stat_info,
                                              read_header_auto);
 
       switch (status)
@@ -138,28 +138,37 @@ update_archive (void)
                struct stat s;
 
                chdir_do (name->change_dir);
-               if (deref_stat (dereference_option,
-                               current_stat_info.file_name, &s) == 0)
+               if (deref_stat (current_stat_info.file_name, &s) == 0)
                  {
                    if (S_ISDIR (s.st_mode))
                      {
                        char *p, *dirp;
-                       dirp = savedir (name->name);
-                       if (!dirp)
+                       DIR *stream;
+                       int fd = openat (chdir_fd, name->name,
+                                        open_read_flags | O_DIRECTORY);
+                       if (fd < 0)
+                         open_error (name->name);
+                       else if (! ((stream = fdopendir (fd))
+                                   && (dirp = streamsavedir (stream))))
                          savedir_error (name->name);
                        else
                          {
                            namebuf_t nbuf = namebuf_create (name->name);
-                           
+
                            for (p = dirp; *p; p += strlen (p) + 1)
                              addname (namebuf_name (nbuf, p),
                                       0, false, NULL);
-                           
+
                            namebuf_free (nbuf);
                            free (dirp);
-                           
+
                            remname (name);
                          }
+
+                       if (stream
+                           ? closedir (stream) != 0
+                           : 0 <= fd && close (fd) != 0)
+                         savedir_error (name->name);
                      }
                    else if (tar_timespec_cmp (get_stat_mtime (&s),
                                               current_stat_info.mtime)
@@ -167,7 +176,7 @@ update_archive (void)
                      remname (name);
                  }
              }
-           
+
            skip_member ();
            break;
          }
@@ -224,11 +233,12 @@ update_archive (void)
        if (subcommand_option == CAT_SUBCOMMAND)
          append_file (file_name);
        else
-         dump_file (file_name, 1, (dev_t) 0);
+         dump_file (0, file_name, file_name);
       }
   }
 
   write_eot ();
   close_archive ();
+  finish_deferred_unlinks ();
   names_notfound ();
 }
index a9cbccb72e287bb3d9dd30bee76226835e5e692c..4374a88c870a28c35e96e22cf8410628b20979a1 100644 (file)
@@ -76,7 +76,7 @@ set_warning_option (const char *arg)
 {
   int negate = 0;
   int option;
-  
+
   if (strcmp (arg, "none") == 0)
     {
       warning_option = 0;
@@ -88,11 +88,10 @@ set_warning_option (const char *arg)
       arg += 3;
     }
 
-  option = XARGMATCH ("--warning", arg, 
+  option = XARGMATCH ("--warning", arg,
                      warning_args, warning_types);
   if (negate)
     warning_option &= ~option;
   else
     warning_option |= option;
 }
-  
index b5c9869c91dcb7b092b7544b437df9e5d9f3031b..2284e97b1c56b5c1920106e44bb70e9333bf498b 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "common.h"
 
+static void xheader_init (struct xheader *xhdr);
 static bool xheader_protected_pattern_p (char const *pattern);
 static bool xheader_protected_keyword_p (char const *keyword);
 static void xheader_set_single_keyword (char *) __attribute__ ((noreturn));
@@ -452,7 +453,7 @@ xheader_write_global (struct xheader *xhdr)
   if (xhdr->stk)
     {
       char *name;
-      
+
       xheader_finish (xhdr);
       xheader_write (XGLTYPE, name = xheader_ghdr_name (), time (NULL), xhdr);
       free (name);
@@ -661,7 +662,7 @@ xheader_decode_global (struct xheader *xhdr)
     }
 }
 
-void
+static void
 xheader_init (struct xheader *xhdr)
 {
   if (!xhdr->stk)
@@ -708,7 +709,7 @@ xheader_read (struct xheader *xhdr, union block *p, size_t size)
 
       if (!p)
        FATAL_ERROR ((0, 0, _("Unexpected EOF in archive")));
-      
+
       memcpy (&xhdr->buffer[j], p->buffer, len);
       set_next_block_after (p);
 
@@ -1307,7 +1308,7 @@ sparse_numbytes_decoder (struct tar_stat_info *st,
                         size_t size __attribute__((unused)))
 {
   uintmax_t u;
-  if (decode_num (&u, arg, SIZE_MAX, keyword))
+  if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), keyword))
     {
       if (st->sparse_map_avail < st->sparse_map_size)
        st->sparse_map[st->sparse_map_avail++].numbytes = u;
@@ -1355,7 +1356,7 @@ sparse_map_decoder (struct tar_stat_info *st,
          e.numbytes = u;
          if (!(u == e.numbytes && errno != ERANGE))
            {
-             out_of_range_header (keyword, arg, 0, TYPE_MAXIMUM (size_t));
+             out_of_range_header (keyword, arg, 0, TYPE_MAXIMUM (off_t));
              return;
            }
          if (st->sparse_map_avail < st->sparse_map_size)
index e9b753c50a17a0507ff43bf06897f37a6823c357..d29563a897afb997f26f8a2e1cf71c4512d36f32 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for GNU tar regression tests.
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2003, 2004, 2005, 
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2003, 2004, 2005,
 # 2006, 2007, 2009 Free Software Foundation, Inc.
 
 # François Pinard <pinard@iro.umontreal.ca>, 1988.
@@ -66,6 +66,7 @@ TESTSUITE_AT = \
  exclude03.at\
  exclude04.at\
  exclude05.at\
+ exclude06.at\
  extrac01.at\
  extrac02.at\
  extrac03.at\
@@ -74,6 +75,13 @@ TESTSUITE_AT = \
  extrac06.at\
  extrac07.at\
  extrac08.at\
+ extrac09.at\
+ extrac10.at\
+ extrac11.at\
+ extrac12.at\
+ extrac13.at\
+ extrac14.at\
+ extrac15.at\
  filerem01.at\
  filerem02.at\
  gzip.at\
@@ -89,11 +97,16 @@ TESTSUITE_AT = \
  ignfail.at\
  label01.at\
  label02.at\
+ label03.at\
+ label04.at\
+ label05.at\
  link01.at\
  link02.at\
  link03.at\
+ link04.at\
  listed01.at\
  listed02.at\
+ listed03.at\
  long01.at\
  longv7.at\
  lustar01.at\
@@ -106,6 +119,7 @@ TESTSUITE_AT = \
  multiv05.at\
  multiv06.at\
  multiv07.at\
+ multiv08.at\
  old.at\
  options.at\
  options02.at\
@@ -118,11 +132,13 @@ TESTSUITE_AT = \
  rename05.at\
  remfiles01.at\
  remfiles02.at\
+ remfiles03.at\
  same-order01.at\
  same-order02.at\
  shortfile.at\
  shortupd.at\
  shortrec.at\
+ sigpipe.at\
  sparse01.at\
  sparse02.at\
  sparse03.at\
@@ -140,6 +156,7 @@ TESTSUITE_AT = \
  verbose.at\
  version.at\
  xform-h.at\
+ xform01.at\
  star/gtarfail.at\
  star/gtarfail2.at\
  star/multi-fail.at\
@@ -184,4 +201,4 @@ genfile_SOURCES = genfile.c argcv.c argcv.h
 localedir = $(datadir)/locale
 INCLUDES = -I$(top_srcdir)/gnu -I../gnu -I$(top_srcdir)/gnu -I$(top_srcdir)/lib
 AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
-LDADD = ../gnu/libgnu.a $(LIBINTL) $(LIB_CLOCK_GETTIME)
+LDADD = ../gnu/libgnu.a $(LIBINTL) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)
index 5def22e0640f853ab6e16666612afa5f7f15e5b4..f8c803043cfae3003c7fc44a0042f4d3f6b3791b 100644 (file)
@@ -17,7 +17,7 @@
 
 # Makefile for GNU tar regression tests.
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2003, 2004, 2005, 
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2003, 2004, 2005,
 # 2006, 2007, 2009 Free Software Foundation, Inc.
 
 # François Pinard <pinard@iro.umontreal.ca>, 1988.
@@ -48,11 +48,11 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argmatch.m4 \
-       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/backupfile.m4 \
-       $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/btowc.m4 \
-       $(top_srcdir)/m4/canonicalize.m4 \
+       $(top_srcdir)/m4/argp.m4 $(top_srcdir)/m4/asm-underscore.m4 \
+       $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/bison.m4 \
+       $(top_srcdir)/m4/btowc.m4 $(top_srcdir)/m4/canonicalize.m4 \
        $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/chown.m4 \
-       $(top_srcdir)/m4/clock_time.m4 \
+       $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/cloexec.m4 \
        $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
        $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
        $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/dirent-safer.m4 \
@@ -65,17 +65,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fclose.m4 \
        $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/fcntl.m4 \
        $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fdopendir.m4 \
-       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/float_h.m4 \
-       $(top_srcdir)/m4/fnmatch.m4 $(top_srcdir)/m4/fpending.m4 \
-       $(top_srcdir)/m4/fseeko.m4 $(top_srcdir)/m4/ftruncate.m4 \
+       $(top_srcdir)/m4/fileblocks.m4 $(top_srcdir)/m4/filenamecat.m4 \
+       $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
+       $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fseeko.m4 \
+       $(top_srcdir)/m4/futimens.m4 \
        $(top_srcdir)/m4/getcwd-abort-bug.m4 \
        $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
-       $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
-       $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
-       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
-       $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
-       $(top_srcdir)/m4/gnulib-common.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+       $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/hash.m4 \
        $(top_srcdir)/m4/human.m4 $(top_srcdir)/m4/iconv.m4 \
        $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
@@ -85,54 +85,61 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/langinfo_h.m4 $(top_srcdir)/m4/lchown.m4 \
        $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
        $(top_srcdir)/m4/lib-prefix.m4 \
-       $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
-       $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
-       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
-       $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
-       $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/mbchar.m4 \
-       $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
-       $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbsrtowcs.m4 \
-       $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/memchr.m4 \
-       $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
-       $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkdtemp.m4 \
+       $(top_srcdir)/m4/libunistring-base.m4 \
+       $(top_srcdir)/m4/link-follow.m4 $(top_srcdir)/m4/link.m4 \
+       $(top_srcdir)/m4/linkat.m4 $(top_srcdir)/m4/localcharset.m4 \
+       $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \
+       $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/longlong.m4 \
+       $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+       $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+       $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+       $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+       $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+       $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
+       $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/mkdir.m4 \
+       $(top_srcdir)/m4/mkdtemp.m4 $(top_srcdir)/m4/mkfifo.m4 \
+       $(top_srcdir)/m4/mkfifoat.m4 $(top_srcdir)/m4/mknod.m4 \
        $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/mmap-anon.m4 \
        $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/modechange.m4 \
        $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/nl_langinfo.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
-       $(top_srcdir)/m4/paxutils.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/priv-set.m4 \
-       $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \
-       $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/rawmemchr.m4 \
-       $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
-       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rmdir.m4 \
+       $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/parse-datetime.m4 \
+       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/paxutils.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
+       $(top_srcdir)/m4/priv-set.m4 $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+       $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \
+       $(top_srcdir)/m4/readlinkat.m4 $(top_srcdir)/m4/realloc.m4 \
+       $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
+       $(top_srcdir)/m4/renameat.m4 $(top_srcdir)/m4/rmdir.m4 \
        $(top_srcdir)/m4/rmt.m4 $(top_srcdir)/m4/rpmatch.m4 \
        $(top_srcdir)/m4/rtapelib.m4 $(top_srcdir)/m4/safe-read.m4 \
-       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
-       $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
-       $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/size_max.m4 \
-       $(top_srcdir)/m4/sleep.m4 $(top_srcdir)/m4/snprintf.m4 \
-       $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-time.m4 \
-       $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
-       $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
-       $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
-       $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
-       $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \
-       $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strdup.m4 \
-       $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \
-       $(top_srcdir)/m4/strings_h.m4 $(top_srcdir)/m4/strndup.m4 \
-       $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtoimax.m4 \
-       $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoll.m4 \
-       $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strtoull.m4 \
-       $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
-       $(top_srcdir)/m4/sys_time_h.m4 $(top_srcdir)/m4/sysexits.m4 \
-       $(top_srcdir)/m4/system.m4 $(top_srcdir)/m4/tempname.m4 \
-       $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
-       $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
-       $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \
-       $(top_srcdir)/m4/unlink.m4 $(top_srcdir)/m4/unlinkdir.m4 \
-       $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/utimbuf.m4 \
-       $(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
+       $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/save-cwd.m4 \
+       $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/setenv.m4 \
+       $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
+       $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/ssize_t.m4 \
+       $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
+       $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+       $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+       $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
+       $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/stpcpy.m4 \
+       $(top_srcdir)/m4/strcase.m4 $(top_srcdir)/m4/strchrnul.m4 \
+       $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+       $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
+       $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
+       $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+       $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+       $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+       $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/symlinkat.m4 \
+       $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+       $(top_srcdir)/m4/sysexits.m4 $(top_srcdir)/m4/system.m4 \
+       $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+       $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+       $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+       $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink.m4 \
+       $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+       $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
+       $(top_srcdir)/m4/utimensat.m4 $(top_srcdir)/m4/utimes.m4 \
        $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
        $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/vsnprintf.m4 \
        $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
@@ -186,6 +193,7 @@ ALLOCA_H = @ALLOCA_H@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOM4TE = @AUTOM4TE@
@@ -283,6 +291,7 @@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
 GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
 GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
 GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
 GNULIB_IMAXABS = @GNULIB_IMAXABS@
 GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
 GNULIB_LCHMOD = @GNULIB_LCHMOD@
@@ -338,10 +347,12 @@ GNULIB_POPEN = @GNULIB_POPEN@
 GNULIB_PREAD = @GNULIB_PREAD@
 GNULIB_PRINTF = @GNULIB_PRINTF@
 GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
 GNULIB_PUTC = @GNULIB_PUTC@
 GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
 GNULIB_PUTENV = @GNULIB_PUTENV@
 GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
 GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
 GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
 GNULIB_READLINK = @GNULIB_READLINK@
@@ -366,6 +377,7 @@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
 GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
 GNULIB_STRDUP = @GNULIB_STRDUP@
 GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
 GNULIB_STRNDUP = @GNULIB_STRNDUP@
 GNULIB_STRNLEN = @GNULIB_STRNLEN@
 GNULIB_STRPBRK = @GNULIB_STRPBRK@
@@ -382,11 +394,16 @@ GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
 GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
 GNULIB_SYMLINK = @GNULIB_SYMLINK@
 GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
 GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
 GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
 GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
 GNULIB_UNLINK = @GNULIB_UNLINK@
 GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
 GNULIB_UNSETENV = @GNULIB_UNSETENV@
 GNULIB_USLEEP = @GNULIB_USLEEP@
 GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@
@@ -404,20 +421,23 @@ GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
 GNULIB_WCTOB = @GNULIB_WCTOB@
 GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
 GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
 GREP = @GREP@
 HAVE_ALPHASORT = @HAVE_ALPHASORT@
 HAVE_ATOLL = @HAVE_ATOLL@
 HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CALLOC_POSIX = @HAVE_CALLOC_POSIX@
 HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
 HAVE_CHOWN = @HAVE_CHOWN@
 HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
 HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@
 HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
 HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
 HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
 HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
 HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
 HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
 HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
 HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
@@ -425,7 +445,6 @@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
 HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
 HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
 HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
 HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
 HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
 HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
@@ -441,12 +460,15 @@ HAVE_DUP2 = @HAVE_DUP2@
 HAVE_DUP3 = @HAVE_DUP3@
 HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
 HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
 HAVE_FCHMODAT = @HAVE_FCHMODAT@
 HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
 HAVE_FCNTL = @HAVE_FCNTL@
 HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
+HAVE_FSEEKO = @HAVE_FSEEKO@
 HAVE_FSTATAT = @HAVE_FSTATAT@
 HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
 HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
 HAVE_FUTIMENS = @HAVE_FUTIMENS@
 HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
@@ -458,25 +480,29 @@ HAVE_GETOPT_H = @HAVE_GETOPT_H@
 HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
 HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
 HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
-HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_GRANTPT = @HAVE_GRANTPT@
 HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWBLANK = @HAVE_ISWBLANK@
 HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
 HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
 HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
 HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
+HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
+HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
 HAVE_LCHMOD = @HAVE_LCHMOD@
 HAVE_LCHOWN = @HAVE_LCHOWN@
 HAVE_LINK = @HAVE_LINK@
 HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_LOCALTIME_R = @HAVE_LOCALTIME_R@
 HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
 HAVE_LSTAT = @HAVE_LSTAT@
-HAVE_MALLOC_POSIX = @HAVE_MALLOC_POSIX@
 HAVE_MBRLEN = @HAVE_MBRLEN@
 HAVE_MBRTOWC = @HAVE_MBRTOWC@
 HAVE_MBSINIT = @HAVE_MBSINIT@
 HAVE_MBSLEN = @HAVE_MBSLEN@
 HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
 HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MEMCHR = @HAVE_MEMCHR@
 HAVE_MEMPCPY = @HAVE_MEMPCPY@
 HAVE_MKDIRAT = @HAVE_MKDIRAT@
 HAVE_MKDTEMP = @HAVE_MKDTEMP@
@@ -486,18 +512,21 @@ HAVE_MKNOD = @HAVE_MKNOD@
 HAVE_MKNODAT = @HAVE_MKNODAT@
 HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
 HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
 HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
 HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
 HAVE_OPENAT = @HAVE_OPENAT@
 HAVE_OS_H = @HAVE_OS_H@
 HAVE_PIPE2 = @HAVE_PIPE2@
 HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PWRITE = @HAVE_PWRITE@
 HAVE_RANDOM_H = @HAVE_RANDOM_H@
 HAVE_RANDOM_R = @HAVE_RANDOM_R@
 HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
 HAVE_READLINK = @HAVE_READLINK@
 HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALLOC_POSIX = @HAVE_REALLOC_POSIX@
 HAVE_REALPATH = @HAVE_REALPATH@
 HAVE_RENAMEAT = @HAVE_RENAMEAT@
 HAVE_RPMATCH = @HAVE_RPMATCH@
@@ -514,6 +543,7 @@ HAVE_STRCASECMP = @HAVE_STRCASECMP@
 HAVE_STRCASESTR = @HAVE_STRCASESTR@
 HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
 HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRPTIME = @HAVE_STRPTIME@
 HAVE_STRSEP = @HAVE_STRSEP@
 HAVE_STRTOD = @HAVE_STRTOD@
 HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -530,8 +560,11 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
 HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
 HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
 HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
 HAVE_UNISTD_H = @HAVE_UNISTD_H@
 HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
 HAVE_UNSETENV = @HAVE_UNSETENV@
 HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
 HAVE_USLEEP = @HAVE_USLEEP@
@@ -546,6 +579,7 @@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
 HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
 HAVE_WINT_T = @HAVE_WINT_T@
 HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
 INCLUDE_NEXT = @INCLUDE_NEXT@
 INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
 INSTALL = @INSTALL@
@@ -564,6 +598,8 @@ LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@
+LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@
 LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
 LIB_SETSOCKOPT = @LIB_SETSOCKOPT@
 LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
@@ -630,21 +666,24 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
 PRIPTR_PREFIX = @PRIPTR_PREFIX@
 PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
 PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
 PU_RMT_PROG = @PU_RMT_PROG@
 RANLIB = @RANLIB@
 REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CALLOC = @REPLACE_CALLOC@
 REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
 REPLACE_CHOWN = @REPLACE_CHOWN@
 REPLACE_CLOSE = @REPLACE_CLOSE@
 REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_DIRFD = @REPLACE_DIRFD@
 REPLACE_DPRINTF = @REPLACE_DPRINTF@
 REPLACE_DUP = @REPLACE_DUP@
 REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHDIR = @REPLACE_FCHDIR@
 REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
 REPLACE_FCLOSE = @REPLACE_FCLOSE@
 REPLACE_FCNTL = @REPLACE_FCNTL@
@@ -667,6 +706,7 @@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
 REPLACE_GETLINE = @REPLACE_GETLINE@
 REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
 REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
 REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
 REPLACE_LCHOWN = @REPLACE_LCHOWN@
 REPLACE_LINK = @REPLACE_LINK@
@@ -674,6 +714,7 @@ REPLACE_LINKAT = @REPLACE_LINKAT@
 REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
 REPLACE_LSEEK = @REPLACE_LSEEK@
 REPLACE_LSTAT = @REPLACE_LSTAT@
+REPLACE_MALLOC = @REPLACE_MALLOC@
 REPLACE_MBRLEN = @REPLACE_MBRLEN@
 REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
 REPLACE_MBSINIT = @REPLACE_MBSINIT@
@@ -699,7 +740,9 @@ REPLACE_POPEN = @REPLACE_POPEN@
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
 REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_REALLOC = @REPLACE_REALLOC@
 REPLACE_REALPATH = @REPLACE_REALPATH@
 REPLACE_REMOVE = @REPLACE_REMOVE@
 REPLACE_RENAME = @REPLACE_RENAME@
@@ -711,17 +754,21 @@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
 REPLACE_SPRINTF = @REPLACE_SPRINTF@
 REPLACE_STAT = @REPLACE_STAT@
 REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
 REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
 REPLACE_STRDUP = @REPLACE_STRDUP@
 REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
 REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
 REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
 REPLACE_STRSTR = @REPLACE_STRSTR@
 REPLACE_STRTOD = @REPLACE_STRTOD@
 REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
 REPLACE_SYMLINK = @REPLACE_SYMLINK@
 REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
 REPLACE_UNLINK = @REPLACE_UNLINK@
 REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
 REPLACE_UNSETENV = @REPLACE_UNSETENV@
@@ -791,6 +838,7 @@ gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
 gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -845,6 +893,7 @@ TESTSUITE_AT = \
  exclude03.at\
  exclude04.at\
  exclude05.at\
+ exclude06.at\
  extrac01.at\
  extrac02.at\
  extrac03.at\
@@ -853,6 +902,13 @@ TESTSUITE_AT = \
  extrac06.at\
  extrac07.at\
  extrac08.at\
+ extrac09.at\
+ extrac10.at\
+ extrac11.at\
+ extrac12.at\
+ extrac13.at\
+ extrac14.at\
+ extrac15.at\
  filerem01.at\
  filerem02.at\
  gzip.at\
@@ -868,11 +924,16 @@ TESTSUITE_AT = \
  ignfail.at\
  label01.at\
  label02.at\
+ label03.at\
+ label04.at\
+ label05.at\
  link01.at\
  link02.at\
  link03.at\
+ link04.at\
  listed01.at\
  listed02.at\
+ listed03.at\
  long01.at\
  longv7.at\
  lustar01.at\
@@ -885,6 +946,7 @@ TESTSUITE_AT = \
  multiv05.at\
  multiv06.at\
  multiv07.at\
+ multiv08.at\
  old.at\
  options.at\
  options02.at\
@@ -897,11 +959,13 @@ TESTSUITE_AT = \
  rename05.at\
  remfiles01.at\
  remfiles02.at\
+ remfiles03.at\
  same-order01.at\
  same-order02.at\
  shortfile.at\
  shortupd.at\
  shortrec.at\
+ sigpipe.at\
  sparse01.at\
  sparse02.at\
  sparse03.at\
@@ -919,6 +983,7 @@ TESTSUITE_AT = \
  verbose.at\
  version.at\
  xform-h.at\
+ xform01.at\
  star/gtarfail.at\
  star/gtarfail2.at\
  star/multi-fail.at\
@@ -931,7 +996,7 @@ AUTOTEST = $(AUTOM4TE) --language=autotest
 genfile_SOURCES = genfile.c argcv.c argcv.h
 INCLUDES = -I$(top_srcdir)/gnu -I../gnu -I$(top_srcdir)/gnu -I$(top_srcdir)/lib
 AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
-LDADD = ../gnu/libgnu.a $(LIBINTL) $(LIB_CLOCK_GETTIME)
+LDADD = ../gnu/libgnu.a $(LIBINTL) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS)
 all: all-am
 
 .SUFFIXES:
index 18348e181173f4d26c00952cbf7819926f2c26bf..2dc2108f55c3b4dfa12a1485b7b0fd57d41367df 100644 (file)
 # When decoding a header tar was assigning 0 to oldgnu_header.isextended,
 # which destroyed name prefix. When updating archive, modified prefix
 # could have been written to disk thus producing invalid archive member.
-# Reported by Adye, TJ (Tim), <T.J.Adye@rl.ac.uk> 
+# Reported by Adye, TJ (Tim), <T.J.Adye@rl.ac.uk>
 # References:
 #  <7231C15EAC2F164CA6DC326D97493C8B36C25D@exchange35.fed.cclrc.ac.uk>
 #  http://lists.gnu.org/archive/html/bug-tar/2005-02/msg00032.html
+
 AT_SETUP([appending files with long names])
 AT_KEYWORDS([append append01])
 
@@ -45,4 +45,3 @@ PREFIX/file2
 [],[],[],[oldgnu, ustar, posix, gnu])
 
 AT_CLEANUP
-
index 7b8e07d3b527bd7c5e3e89bb2a997370d5ae8f0d..869f8a56899b9d432f81134da05a2f3891ea8129 100644 (file)
@@ -20,7 +20,7 @@
 
 # Using tar 1.15.x the following equivalent command sets:
 #
-#   1. tar cf archive file1 file2 
+#   1. tar cf archive file1 file2
 # and
 #   2. tar cfT archive /dev/null
 #      tar rf archive file1
@@ -62,7 +62,7 @@ genfile --file file2
 MTIME="--mtime=@0"
 
 # For PAX archives, we need to make sure extended header names are
-# reproducible and that their contents won't change with time 
+# reproducible and that their contents won't change with time
 if test $[]TEST_TAR_FORMAT = posix; then
   TAR_OPTIONS="$TAR_OPTIONS --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=mtime,delete=atime,delete=ctime"
 fi
index 5eaaab68f4b24ef8714fdf4274be86eb0fb3d0ab..12591e326a4055eb3f9eb983ee638b99893bcc6d 100644 (file)
@@ -16,17 +16,17 @@ fi
 STAR_DATA_URL=ftp://ftp.berlios.de/pub/star/testscripts
 if test -z "$STAR_TESTSCRIPTS"; then
   STAR_TESTSCRIPTS=$TEST_DATA_DIR
-fi  
+fi
 
 # tarball_prereq file sum dir url
 tarball_prereq() {
-  if test -d "$3"; then        
+  if test -d "$3"; then
     if test -r $3/$1; then
       :
     elif test -n "$FULL_TEST"; then
       wget -q --directory-prefix=$3 $4/$1
     fi
-  fi  
+  fi
   echo "$2  $3/$1" | md5sum --status --check - >/dev/null 2>&1
 }
 
@@ -34,4 +34,3 @@ decho() {
   echo $*
   echo >&2 $*
 }
-
index 538dd3d9fc8141844e6e0d36b1da353f25561c7c..83d1bea00b92c0981d7270eee5e22cb0404a9cb9 100644 (file)
@@ -37,7 +37,7 @@ AT_TAR_CHECK([
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ],
 [0],
 [dir1/
@@ -46,4 +46,4 @@ Renaming `dir1/file1' to `dir1/file1~'
 dir2/
 ])
 
-AT_CLEANUP
\ No newline at end of file
+AT_CLEANUP
index 9b806c020b8d6841aec4cd2752dbdf6aeff33ce1..1ba86b3bd9f6272e12431d15f18abb9b9ffb85f1 100644 (file)
@@ -51,9 +51,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ],
 [0],
index cd56a20c34585aff9d1933f41399e47a9e03b7aa..f2d01413751f70e8e2bb57e3f2517c98edc49fcf 100644 (file)
@@ -29,7 +29,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ],
 [0],
index d2823b78e6e9e6da5de4355bce7681929d8f8150..70fa3a94a0347217120bb1ff5d1f823dfce14825 100644 (file)
@@ -31,8 +31,8 @@ for i in 1 2 3 4 5 6 7 8 9
 do touch $prefix$i
 done
 tar -cf archive ./$prefix* &&
- tar --delete -f archive ./${prefix}5 && 
- tar -tf archive 
+ tar --delete -f archive ./${prefix}5 &&
+ tar -tf archive
 ],
 [0],
 [./PREFIX[]1
index 689aa110225fa51c47a747570a5ea213df79e4d2..7fe92a46d0bc76e9ffd6688d2b0b76c1f83b22c8 100644 (file)
@@ -36,7 +36,7 @@ mkdir dir/rock
 echo "Signature: 8a477f597d28d172789f06886806bc55" > dir/rock/CACHEDIR.TAG
 echo "test" > dir/rock/file
 
-for option in exclude-caches exclude-caches-under exclude-caches-all 
+for option in exclude-caches exclude-caches-under exclude-caches-all
 do
   echo OPTION $option
   tar -cf archive.tar --$option -v dir 2>err | sort
@@ -45,7 +45,7 @@ do
   tar tf archive.tar | sort
 done
 
-for option in exclude-tag exclude-tag-under exclude-tag-all 
+for option in exclude-tag exclude-tag-under exclude-tag-all
 do
   echo OPTION $option
   tar -cf archive.tar --${option}=tagfile -v dir 2>err | sort
diff --git a/tests/exclude06.at b/tests/exclude06.at
new file mode 100644 (file)
index 0000000..b1c0da7
--- /dev/null
@@ -0,0 +1,47 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Tar 1.23 would fail to exclude names longer that 100 characters from
+# pax format archives.
+#
+# Reported-by: Matthew Peterson <mrpeterson2@gmail.com>
+# References: <AANLkTin0teb1dcl0HCNquHxvN4HQnJmP6aK7CJCqy0sd@mail.gmail.com>
+#             http://lists.gnu.org/archive/html/help-tar/2010-06/msg00000.html
+
+AT_SETUP([exclude: long files in pax archives])
+AT_KEYWORDS([exclude exclude06])
+
+m4_define([test_base_dir],[one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen])
+
+AT_TAR_CHECK([
+AT_TAR_MKHIER(test_base_dir)
+genfile --length 20 -f test_base_dir[/1.txt]
+genfile --length 20 -f test_base_dir[/1.c]
+
+tar cf archive.tar test_base_dir
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+],
+[0],
+[[out/]test_base_dir[/1.c]
+],
+[],
+[],
+[],
+[pax])
+
+AT_CLEANUP
index 5b1a2de2856027ab9f73cb55c92f56d24e2e43e0..c84c63a52aae5c0de7092267eadd886088019f21 100644 (file)
@@ -27,7 +27,7 @@ AT_TAR_CHECK([
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ])
 
 AT_CLEANUP
index 9566b5ee7d1d53dead40d67afae3d8d6c08bd388..ad01752a52f78bf230f6b9292cd1bcff1746ddd0 100644 (file)
@@ -27,7 +27,7 @@ AT_TAR_CHECK([
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive],
+tar -xPvf archive --warning=no-timestamp],
 [0],
 [directory/../directory/
 separator
index 49a199e7c188ab47375ce3f7839479cd97b3a618..05cb6587b790feae842782d50f6b9b4e04a9fb32 100644 (file)
@@ -36,7 +36,7 @@ tar -cf archive ./file1 directory
 tar -tf archive \
   --exclude='./*1' \
   --exclude='d*/*1' \
-  --exclude='d*/s*/*2' | sort 
+  --exclude='d*/s*/*2' | sort
 ],
 [0],
 [directory/
index 82c2ed3517e590f15ed54f61ba696455e1eeb955..5401001ca6d936c031c58a2aa6b38d559fc5795b 100644 (file)
 AT_SETUP([extracting selected members from pax])
 AT_KEYWORDS([extract extract05])
 
-AT_DATA([list], 
+AT_DATA([list],
 [jeden
 cztery
 ])
 
 AT_TAR_CHECK([
-genfile --sparse --file sparsefile 0 ABCD 1M EFGH 2000K IJKL || AT_SKIP_TEST 
+genfile --sparse --file sparsefile 0 ABCD 1M EFGH 2000K IJKL || AT_SKIP_TEST
 genfile --length 118 --file jeden
 genfile --length 223 --file dwa
 genfile --length 517 --file trzy
@@ -47,7 +47,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 ],
index 9f3fdb97207f8b8279a87a0b8c6e67000efee5f4..35cb221f36feaf04c3568f91ec39373fc97268a2 100644 (file)
@@ -23,7 +23,7 @@
 # permissions than your umask.  In this case, the permissions of the
 # existing directory will toggle between the version which complies with
 # your umask (which would be correct, without -p) and the version from the
-# tarfile. 
+# tarfile.
 #
 # Reported by: Ian Jackson <iwj@ubuntu.com>
 #
@@ -41,7 +41,7 @@ umask 022
 # Make sure user's umask is honored, even if we are superuser
 TAR_OPTIONS="$TAR_OPTIONS --no-same-permissions"
 
-# Create a directory 
+# Create a directory
 mkdir directory
 chmod 777 directory
 genfile --stat=mode:777 directory
@@ -54,10 +54,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
index 1c45e9758191f34ee12cb337d4ce734815be3ad0..d993dc36be0004a946d7cfb97bbeb9601a01e6a5 100644 (file)
@@ -28,13 +28,15 @@ AT_SETUP([extracting symlinks to a read-only dir])
 AT_KEYWORDS([extract extract07 read-only symlink])
 
 AT_TAR_CHECK([
+AT_UNPRIVILEGED_PREREQ
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -52,8 +54,6 @@ Extract
 dir/
 dir/foo
 ],
-[],[],[ustar]) # Testing one format is enough
+[],[],[],[ustar]) # Testing one format is enough
 
 AT_CLEANUP
-
-
index 6ca33bddebe51471b0194c878cc1620938047e19..432aa0b8e4c62f0708d943ac29a089169db3093c 100644 (file)
@@ -40,7 +40,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ],
 [0],
@@ -49,4 +49,4 @@ dir/file
 755
 ])
 
-AT_CLEANUP
\ No newline at end of file
+AT_CLEANUP
diff --git a/tests/extrac09.at b/tests/extrac09.at
new file mode 100644 (file)
index 0000000..8241c30
--- /dev/null
@@ -0,0 +1,48 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This checks for the --listed-incremental bug reported by J Chapman Flack at
+# http://lists.gnu.org/archive/html/bug-tar/2010-06/msg00000.html
+
+AT_SETUP([no need to save dir with unreadable . and ..])
+AT_KEYWORDS([extract extrac09])
+
+AT_TAR_CHECK([
+AT_UNPRIVILEGED_PREREQ
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=$?
+chmod a+r . ..
+cmp f extract/f || status=$?
+exit $status
+],
+[0],
+[f
+],
+[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/extrac10.at b/tests/extrac10.at
new file mode 100644 (file)
index 0000000..5a53f64
--- /dev/null
@@ -0,0 +1,44 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# written by Paul Eggert
+
+# Check that delayed setting of directory metadata does not collide
+# with the -C option.  When setting a directory's permissions, time
+# stamps, etc., tar should apply the -C option that was in effect when
+# the directory was extracted, not the -C option that happens to be in
+# effect when the metadata are later set.
+
+AT_SETUP([-C and delayed setting of metadata])
+AT_KEYWORDS([extract extrac10])
+
+AT_TAR_CHECK([
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+],
+[0],
+[],
+[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/extrac11.at b/tests/extrac11.at
new file mode 100644 (file)
index 0000000..9456695
--- /dev/null
@@ -0,0 +1,77 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# written by Paul Eggert
+
+# Check that 'tar' works even in a file-descriptor-limited environment.
+
+AT_SETUP([scarce file descriptors])
+AT_KEYWORDS([extract extrac11])
+
+AT_TAR_CHECK([
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir $dirs dest1 dest2 dest3 || exit
+for dir in $dirs; do
+  for file in X Y Z; do
+    echo $file >$dir/$file || exit
+    files="$files $file"
+  done
+done
+
+# Check that "ulimit" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   AT_SKIP_TEST
+
+# Another test that "ulimit" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   AT_SKIP_TEST
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+],
+[0],[],[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/extrac12.at b/tests/extrac12.at
new file mode 100644 (file)
index 0000000..4c5962e
--- /dev/null
@@ -0,0 +1,39 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# written by Paul Eggert
+
+# Check that 'tar' extracts permissions on the working directory last.
+
+AT_SETUP([extract dot permissions])
+AT_KEYWORDS([extract extrac12])
+
+AT_TAR_CHECK([
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+],
+[0],[],[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/extrac13.at b/tests/extrac13.at
new file mode 100644 (file)
index 0000000..2abed72
--- /dev/null
@@ -0,0 +1,53 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# written by Paul Eggert
+
+# Check that 'tar' normally does follow symbolic links when extracting,
+# unless --dereference is specified.
+
+AT_SETUP([extract over symlinks])
+AT_KEYWORDS([extract extrac13])
+
+AT_TAR_CHECK([
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+],
+[0],[],[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/extrac14.at b/tests/extrac14.at
new file mode 100644 (file)
index 0000000..b98c395
--- /dev/null
@@ -0,0 +1,36 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# written by Paul Eggert
+
+# Check that 'tar -x -C FOO' follows FOO if FOO is a symbolic link.
+
+AT_SETUP([extract -C symlink])
+AT_KEYWORDS([extract extrac14])
+
+AT_TAR_CHECK([
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+],
+[0],[],[],[],[],[gnu])
+
+AT_CLEANUP
diff --git a/tests/extrac15.at b/tests/extrac15.at
new file mode 100644 (file)
index 0000000..bf8d1cf
--- /dev/null
@@ -0,0 +1,44 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# written by Paul Eggert
+
+# Check diagnostic of 'tar -x a/b/c' when b cannot be created.
+
+AT_SETUP([extract parent mkdir failure])
+AT_KEYWORDS([extract extrac15])
+
+AT_TAR_CHECK([
+AT_UNPRIVILEGED_PREREQ
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+],
+[0],[],[tar: a/b: Cannot mkdir: Permission denied
+tar: a/b/c: Cannot open: No such file or directory
+tar: Exiting with failure status due to previous errors
+],[],[],[gnu])
+
+AT_CLEANUP
index 70f47bf0e816d83055af39749014c92d2b7707e8..a2561d73c6752fbaf58afd8fa2fb7f9d20b5bfb1 100644 (file)
@@ -26,7 +26,7 @@
 # instead.
 #
 # Reported by: Solar Designer <solar@openwall.com>
-# 
+#
 # References: <20090228235820.GA13362@openwall.com>
 #             http://lists.gnu.org/archive/html/bug-tar/2009-03/msg00000.html
 #
@@ -98,4 +98,3 @@ tar: dir/file1: File removed before we read it
 
 
 AT_CLEANUP
-
index 8d7005a35a1b822bf0fca451719e51f7c29dee53..ed444ad7dc9239dea4d809eb7a34ea7c3af2c9c0 100644 (file)
@@ -39,12 +39,11 @@ genfile --run --checkpoint=3 --exec 'rm -rf dir2' -- \
 ],
 [2],
 [ignore],
-[tar: dir2: Cannot stat: No such file or directory
-tar: dir2/file1: File removed before we read it
-tar: Exiting with failure status due to previous errors
-],[],[],[gnu, posix])
+[ignore],[],[],[gnu, posix])
+
+# Ignore stdout and stderr because their contents depend on
+# the file system implementation.
 
 # Timing information: see filerem01.at
 
 AT_CLEANUP
-
index 7ebeddfd269ff17e46c772f49969f3deb31b3ff4..8541be6c4d8e692b3f790989f7259f452fd977c9 100644 (file)
@@ -28,8 +28,7 @@
 #include <argmatch.h>
 #include <argp.h>
 #include <argcv.h>
-#include <getdate.h>
-#include <utimens.h>
+#include <parse-datetime.h>
 #include <inttostr.h>
 #include <fcntl.h>
 #include <sys/stat.h>
@@ -364,7 +363,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
       break;
 
     case OPT_DATE:
-      if (!get_date (&touch_time, arg, NULL))
+      if (! parse_datetime (&touch_time, arg, NULL))
        argp_error (state, _("Unknown date format"));
       break;
 
@@ -582,13 +581,13 @@ print_stat (const char *name)
        printf ("%lu", (unsigned long) st.st_ino);
       else if (strncmp (p, "mode", 4) == 0)
        {
-         mode_t mask = ~0;
+         unsigned val = st.st_mode;
 
          if (ispunct ((unsigned char) p[4]))
            {
              char *q;
 
-             mask = strtoul (p + 5, &q, 8);
+             val &= strtoul (p + 5, &q, 8);
              if (*q)
                {
                  printf ("\n");
@@ -600,7 +599,7 @@ print_stat (const char *name)
              printf ("\n");
              error (EXIT_FAILURE, 0, _("Unknown field `%s'"), p);
            }
-         printf ("%0o", st.st_mode & mask);
+         printf ("%0o", val);
        }
       else if (strcmp (p, "nlink") == 0)
        printf ("%lu", (unsigned long) st.st_nlink);
@@ -656,7 +655,7 @@ exec_checkpoint (struct action *p)
        struct timespec ts[2];
 
        ts[0] = ts[1] = p->ts;
-       if (utimens (p->name, ts) != 0)
+       if (utimensat (AT_FDCWD, p->name, ts, 0) != 0)
          {
            error (0, errno, _("cannot set time on `%s'"), p->name);
            break;
@@ -699,7 +698,7 @@ exec_checkpoint (struct action *p)
       if (unlink (p->name))
        error (0, errno, _("cannot unlink `%s'"), p->name);
       break;
-      
+
     default:
       abort ();
     }
@@ -855,7 +854,7 @@ main (int argc, char **argv)
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
 
-  get_date (&touch_time, "now", NULL);
+  parse_datetime (&touch_time, "now", NULL);
 
   /* Decode command options.  */
 
index 38d353877a4b21a6453b5d91f9f8aa895a63b7bb..908b6ed20e0a58e86df07a4cc4cac7d930217ae2 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autom4te to create testsuite. -*- Autotest -*-
 
 # Test suite for GNU tar.
-# Copyright (C) 2004, 2007, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2007, 2009, 2010 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,13 +27,14 @@ unset TAR_OPTIONS
 
 AT_CHECK([
 AT_GZIP_PREREQ
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=$?
+sed -n '/^tar:/p' err >&2
+exit $RC
 ],
 [2],
 [],
-[
-gzip: stdin: unexpected end of file
-tar: Child returned status 1
+[tar: Child returned status 1
 tar: Error is not recoverable: exiting now
 ],
 [],[])
index 8f0be144fcd3d5590025488cff51d0a9413c7bad..fad8d3e4c08dc57360333ae93e35a43408e78576 100644 (file)
@@ -37,9 +37,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ],
 [0],
 [directory/
@@ -51,5 +51,3 @@ tar: Deleting `directory/bar'
 [],[],[],[gnu, oldgnu, posix])
 
 AT_CLEANUP
-
-
index c054253a13e2cfb38e1e382f20667ee8d7a241f6..38b78a537ad0bf99951420f9366856290a4f9ab6 100644 (file)
@@ -23,9 +23,9 @@
 # if the archive has normal member ordering, i.e. each directory
 # member is immediately followed by members located under that directory.
 # This is not true for incremental archives, where directory members
-# precede the non-directory ones. Due to this, GNU tar up to version 1.15.2  
+# precede the non-directory ones. Due to this, GNU tar up to version 1.15.2
 # failed to correctly restore directory timestamps from an incremental
-# archive if this directory contained some files in it. 
+# archive if this directory contained some files in it.
 #
 # References: <200511291228.47081.karaman@dssgmbh.de>
 
index 673191ec98513bfb32ad1c699124021e1e936886..287e1ee185e31276b80cf4fddd38339335f4779c 100644 (file)
@@ -45,17 +45,17 @@ tar -cf archive.2 -g db directory
 mv directory orig
 
 echo Listing of archive.1
-tar -tf archive.1 | sort 
+tar -tf archive.1 | sort
 echo Listing of archive.2
-tar -tf archive.2 | sort 
+tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
-find directory | sort 
+tar -xf archive.2 -g db --warning=no-timestamp
+find directory | sort
 ],
 [0],
 [Listing of archive.1
@@ -78,4 +78,3 @@ directory/z
 AT_CLEANUP
 
 # End of incr03.at
-
index 7efd3f2eff4cf157783037ee435d16d8edf3f418..d63a260c63c6662fd381fb95ccd66ab64ecd325e 100644 (file)
@@ -75,5 +75,3 @@ sub/b/file4
 ],[],[],[],[gnu, oldgnu, posix])
 
 AT_CLEANUP
-
-
index 3aa5ce71b4abad65279f42462906e9def9609cff..7d1246fe443e54349a7688332339e64b34e60600 100644 (file)
@@ -25,7 +25,7 @@ genfile --length 0 --file foo
 genfile --length 12288 --file bar
 genfile --length 12288 --file baz
 tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar 
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
 ],
 [0],
 [Test Volume 1
diff --git a/tests/label03.at b/tests/label03.at
new file mode 100644 (file)
index 0000000..81b0992
--- /dev/null
@@ -0,0 +1,87 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Description: Test the functionality of the --test-label option.
+# In versions up to 1.23 it did not match the documentation. This
+# test case follows the examples from "9.7 Including a Label in the Archive".
+# References: <15929_1268069389_4B95340D_15929_35_1_D621E31C29598A43AF7B4BBD30CCDDFD0838294A@fr0-mailmb04.res.airbus.corp>
+#
+
+AT_SETUP([test-label option])
+AT_KEYWORDS([label label03 test-label])
+
+AT_TAR_CHECK([
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+],
+[0],
+[# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+],
+[# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+],[],[],[gnu,oldgnu,posix])
+
+AT_CLEANUP
diff --git a/tests/label04.at b/tests/label04.at
new file mode 100644 (file)
index 0000000..fc3aa26
--- /dev/null
@@ -0,0 +1,51 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Description: Test the functionality of the --label option used in
+# conjunction with an operation, other than create. It was broken
+# in versions up to 1.23.
+# References: <15929_1268069389_4B95340D_15929_35_1_D621E31C29598A43AF7B4BBD30CCDDFD0838294A@fr0-mailmb04.res.airbus.corp>
+#
+
+AT_SETUP([label with non-create option])
+AT_KEYWORDS([label label04])
+
+AT_TAR_CHECK([
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
+],
+[0],
+[# Create volume
+# Update: wrong label
+2
+# Update: right label
+],
+[# Create volume
+# Update: wrong label
+tar: Volume `New volume' does not match `My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+],[],[],[gnu,oldgnu,posix])
+
+AT_CLEANUP
diff --git a/tests/label05.at b/tests/label05.at
new file mode 100644 (file)
index 0000000..5b968a1
--- /dev/null
@@ -0,0 +1,48 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Description: See label04.  This testcase uses an unlabeled archive
+# volume.
+
+AT_SETUP([label with non-create option])
+AT_KEYWORDS([label label05])
+
+AT_TAR_CHECK([
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+],
+[0],
+[# Create volume
+# Update: wrong label
+2
+# Update: right label
+],
+[# Create volume
+# Update: wrong label
+tar: Archive not labeled to match `My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+],[],[],[gnu,oldgnu,posix])
+
+AT_CLEANUP
index 5faf42e0a2e050af1d2c2da99a46eb32d7db19b7..e5f7d5588805513ae7241b2ae405c4db575cbaed 100644 (file)
@@ -44,7 +44,7 @@ ln directory/test1/test.txt directory/test2/test.txt || AT_SKIP_TEST
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ],
index 756d48fa8c07e0c4d64ac3aa32953fd4f1906411..320a86e444b4b84cdfe4852fb7ab31f973a9cad6 100644 (file)
@@ -34,9 +34,9 @@ AT_KEYWORDS([hardlinks link02])
 
 AT_TAR_CHECK([
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[[2-4]] link to //p'
 ],
@@ -49,4 +49,3 @@ file1
 AT_CLEANUP
 
 # End of link02.at
-
index af5b97c5b988f2ab092626b917d2293d5e4dff19..30272bf1171122cdc783bf08e00fb91fb469e87c 100644 (file)
@@ -26,9 +26,9 @@ AT_KEYWORDS([hardlinks link03])
 
 m4_define([create_files],[
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 ])
 
 AT_TAR_CHECK([
@@ -52,5 +52,3 @@ file1
 ])
 
 AT_CLEANUP
-
-
diff --git a/tests/link04.at b/tests/link04.at
new file mode 100644 (file)
index 0000000..2c6045e
--- /dev/null
@@ -0,0 +1,64 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# written by Paul Eggert
+
+# Make sure that tar -c correctly handles the case where a file is
+# encountered multiple times, even though it has a link count of 1.
+# This can occur when "tar -c FOO FOO" is used; it can also occur when
+# "tar -ch FOO" is used, if FOO contains symbolic links that point to
+# the same file.
+
+AT_SETUP([link count is 1 but multiple occurrences])
+AT_KEYWORDS([hardlinks link04])
+
+AT_TAR_CHECK([
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || AT_SKIP_TEST
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[[0-9]] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[[0-9]] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+],
+[0],
+[dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
+])
+
+AT_CLEANUP
index 5884f8cfc0bed34fba1ff170a98bfae96d4cf604..cb5b841db8b4eae994602827eeaf318cb924d9c5 100644 (file)
@@ -60,4 +60,3 @@ directory/file2
 [],[],[],[gnu, oldgnu])
 
 AT_CLEANUP
-
index 2f1f0704eef979496f3b15c3932a8567b0363a24..94a339cdf9ee0548b48126f1395cdd2e1a20bd82 100644 (file)
@@ -19,9 +19,9 @@
 # 02110-1301, USA.
 
 # Check if listed-incremental backups work for files moved from one directory
-# to another. 
+# to another.
 # Based on a script by Martin Simmons <ZYHYLCRMZPRP@spammotel.com>
-# References: 
+# References:
 #  <20040626230315.163AA1D148@cpc5-cmbg1-6-0-cust208.cmbg.cable.ntl.com>
 #  http://lists.gnu.org/archive/html/bug-tar/2004-06/msg00028.html
 
@@ -69,7 +69,7 @@ sleep 1
 echo Creating incremental archive
 echo >&2 "Creating incremental archive"
 cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1 
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
 
 sleep 1
 
@@ -81,7 +81,7 @@ echo Extracting incremental archive
 # This command should produce three messages about deletion
 # of the existing files, that may appear in any order. Piping
 # to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null 
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
 
 echo Final files:
 find tart -print | sort 2>/dev/null
diff --git a/tests/listed03.at b/tests/listed03.at
new file mode 100644 (file)
index 0000000..f3feda7
--- /dev/null
@@ -0,0 +1,47 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This checks for the --listed-incremental bug reported by J Chapman Flack at
+# http://lists.gnu.org/archive/html/bug-tar/2010-06/msg00000.html
+
+AT_SETUP([incremental dump when the parent directory is unreadable])
+AT_KEYWORDS([listed incremental listed03])
+
+AT_TAR_CHECK([
+AT_UNPRIVILEGED_PREREQ
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
+
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=$?
+chmod a+r ..
+exit $status
+],
+[0],
+[a/
+a/file
+],
+[tar: a: Directory is new
+],[],[],[gnu])
+
+AT_CLEANUP
index d01195e98b2714ebe5f060bc2dabc99e208591dd..f57be11883d892e44eee01f5d2eb08cd4eb0bc8a 100644 (file)
@@ -18,7 +18,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301, USA.
 
-# In GNU format, when extracting or listing a file member with a name 
+# In GNU format, when extracting or listing a file member with a name
 # whose length is divisible by block size (512) tar used to read an
 # extra block of data. In consequence the following file was not extracted.
 # Reported by Josef Bauer
@@ -46,4 +46,3 @@ endfile
 [],[],[],[gnu,oldgnu])
 
 AT_CLEANUP
-
index 9f03744406189adb5f80dc26e888c6ed3bbb5aaf..a17d66358ddb247a7920fdbd4a2fd7cf38044bae 100644 (file)
@@ -45,4 +45,3 @@ tar: Exiting with failure status due to previous errors
 [],[],[v7])
 
 AT_CLEANUP
-
index 2b3955884a26ba48d2d7186681a86e0a6a7324c8..2b03b324fce526705da09bef06be1d29669cbe4c 100644 (file)
@@ -51,7 +51,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -61,5 +61,3 @@ cmp file2 extract-dir-pipe/file2
 [],[],[],[],[gnu, oldgnu, pax])
 
 AT_CLEANUP
-
-
index 88eb92a2238e6921a3d614ac7f6c6beadf33323c..0c321e2c0b1921f96fe2fdf7df1dc34162314d2a 100644 (file)
@@ -21,8 +21,8 @@
 # Previous versions of tar were not able to skip a member straddling
 # the multivolume archive boundary. Reported by Mads Martin Joergensen
 # <mmj@suse.de>
-# 
-# References: <20040402144254.GC4409@suse.de> 
+#
+# References: <20040402144254.GC4409@suse.de>
 # http://lists.gnu.org/archive/html/bug-tar/2004-04/msg00002.html
 
 AT_SETUP([skipping a straddling member])
@@ -38,7 +38,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ],
 [0],
 [separator
index 27d0a28a7f5eb708d23a46c8eda9d4b0c5f6d5c2..e013c190c8e098a4eb750b4ae2a36be891aad5a2 100644 (file)
@@ -25,7 +25,7 @@
 # References: <20040809214854.GB32706@suse.de>
 # http://lists.gnu.org/archive/html/bug-tar/2004-08/msg00012.html
 # <200604270859.47241.Juergen.Vollmer@informatik-vollmer.de>
-# 
+#
 
 AT_SETUP([MV archive & long filenames])
 AT_KEYWORDS([multivolume multiv multiv03])
@@ -59,7 +59,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ],
 [0],
@@ -68,4 +68,3 @@ cmp $BFILE bfile
 [],[],[gnu, oldgnu])
 
 AT_CLEANUP
-
index 2e5b74c7f8c316397bc69ad4b3fd637bb7931317..9d963c7ec593bf2033457368805bd03ee2a3b1b1 100644 (file)
@@ -40,7 +40,7 @@ tar -c -M -L 502 -f a.tar -f b.tar -f c.tar m4_foreach([f],[FILELIST],f )
 echo separator
 mkdir bak
 mv m4_foreach([f],[FILELIST],f )bak
-tar -vxM -f a.tar -f c.tar -f b.tar -f c.tar 
+tar -vxM -f a.tar -f c.tar -f b.tar -f c.tar
 m4_foreach([f],
   [FILELIST],
   [echo Diffing f
@@ -62,6 +62,3 @@ m4_foreach([file],
 ],[],[], [gnu])
 
 AT_CLEANUP
-
-
-
index 966529952ffd5f8fc3d3afed85d04f85cb6f1f3d..97cefbf4eb1e606a5f898a5b32e9a6cdeedcb0d9 100644 (file)
@@ -49,4 +49,3 @@ Testing archive
 [gnu, pax])
 
 AT_CLEANUP
-
index ff965d6c1aea1ec59650a7e5aeb8eb7605953f27..9a40f7b3e926badfadee5ec7aeeda34658c5af12 100644 (file)
@@ -15,7 +15,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Description: When creating POSIX multivolume archives, tar may in
-# some cases write an extended header at the end of one volume, and 
+# some cases write an extended header at the end of one volume, and
 # the corresponding ustar header at the beginning of the next volume.
 # Such archives do not fully comply with the POSIX specs, but tar must
 # be able to read them anyway. This is what this script tests.
@@ -31,6 +31,8 @@ AT_XFAIL_IF(test -f $[]XFAILFILE)
 AT_TARBALL_PREREQ([xsplit-1.tar],[0e008c84c517e48fbf23ca6a7033cde6])
 AT_TARBALL_PREREQ([xsplit-2.tar],[03150b9852d285458f43734e9e0b9a45])
 
+exec <&-
+
 cd $TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
 ],
diff --git a/tests/multiv08.at b/tests/multiv08.at
new file mode 100644 (file)
index 0000000..c7bfb9d
--- /dev/null
@@ -0,0 +1,48 @@
+# Test suite for GNU tar.                             -*- Autotest -*-
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Description: Tar 1.23 would in some cases silently fail to create
+# a continuation header in multivolume archives.
+#
+# In this testcase, the file `a' is 18.5 blocks long and the file `b'
+# is 19.5 blocks long.
+
+AT_SETUP([multivolume header creation])
+AT_KEYWORDS([multivolume multiv multiv08])
+
+AT_TAR_CHECK([
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+],
+[0],
+[Creating
+Testing
+block 0: a
+block 21: b
+block 43: ** Block of NULs **
+],
+[Creating
+Testing
+],
+[],
+[],
+[gnu])
+
+AT_CLEANUP
index 8428f644a8a43cb2980639167f2546cd02057520..e682f69a2ae3a49bce7055a205ce3b1d428a8ed4 100644 (file)
@@ -34,4 +34,3 @@ tar tf archive
 ])
 
 AT_CLEANUP
-
index bec145f9a803562b2154f70f955a6dfafdd6ef5a..d4cc285a12144aa476b9882c099547c3f0cdb805 100644 (file)
@@ -36,4 +36,3 @@ tar tf archive
 ])
 
 AT_CLEANUP
-
index 34a1e204813e0ed723e3ec1c378f35cf1d04609e..b8a6f5443b798c9bfd101ee6d0451313341c2253 100644 (file)
@@ -1,6 +1,6 @@
 # Signature of the current package.
 m4_define([AT_PACKAGE_NAME],      [GNU tar])
 m4_define([AT_PACKAGE_TARNAME],   [tar])
-m4_define([AT_PACKAGE_VERSION],   [1.23])
-m4_define([AT_PACKAGE_STRING],    [GNU tar 1.23])
+m4_define([AT_PACKAGE_VERSION],   [1.24])
+m4_define([AT_PACKAGE_STRING],    [GNU tar 1.24])
 m4_define([AT_PACKAGE_BUGREPORT], [bug-tar@gnu.org])
index 833e1342992811cd852985596fc2ed1bdfd88e6d..cab85351c9560eb3c278bf83fe2ec2165d673460 100644 (file)
@@ -39,7 +39,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
index 940fd953af79f1f154f103d83fced9f0429468d6..86b5c032e8c996f7e279f187619380a1a18923de 100644 (file)
@@ -30,6 +30,7 @@ AT_KEYWORDS([create remove-files remfiles01 gzip])
 
 unset TAR_OPTIONS
 AT_CHECK([
+AT_UNPRIVILEGED_PREREQ
 AT_GZIP_PREREQ
 AT_SORT_PREREQ
 
@@ -51,7 +52,9 @@ EC=$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit $EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test $EC && exit 2
 ],
 [2],
 [.
diff --git a/tests/remfiles03.at b/tests/remfiles03.at
new file mode 100644 (file)
index 0000000..85d76a8
--- /dev/null
@@ -0,0 +1,43 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Description: Called with --remove-files, tar 1.23 failed
+# to remove a directory if it contained symlinks to another files
+# within that directory.
+# Reported-by: Alexander Kozlov <akozlov@nada.kth.se>
+# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00028.html
+#             <Pine.SOC.4.64.1003150951060.28948@faun.nada.kth.se>
+
+AT_SETUP([remove-files with symbolic links])
+AT_KEYWORDS([create remove-files remfiles03])
+
+AT_CHECK([
+mkdir a
+mkdir a/b
+ln -s b a/c || AT_SKIP_TEST
+tar --remove-files -cf a.tar a
+genfile --stat a
+],
+[0],
+[],
+[genfile: stat(a) failed: No such file or directory
+])
+
+AT_CLEANUP
index 30d135078e512cd3a0c307131bffad71ae900aa9..e62e89d6a1baf8e5bc6a70164bff32e5b76df397 100644 (file)
@@ -19,7 +19,7 @@
 # 02110-1301, USA.
 
 # Description: Test basic handling of renamed directory in the incremental
-# archives. 
+# archives.
 
 AT_SETUP([renamed dirs in incrementals])
 AT_KEYWORDS([incremental rename rename01])
@@ -46,7 +46,7 @@ mv foo old
 tar xfg arch.1 /dev/null
 
 echo "Begin directory listing 1"
-find foo | sort 
+find foo | sort
 echo "End directory listing 1"
 
 tar xfg arch.2 /dev/null
index d20f2b0823cf8c2291b627546f920d4bc610e74e..4c51f26984acbed5f0e63f7618b7f206743868a5 100644 (file)
@@ -19,7 +19,7 @@
 # 02110-1301, USA.
 
 # Description: Incremental archives should be able to handle directories
-# moved between directory hierarchies. 
+# moved between directory hierarchies.
 
 AT_SETUP([move between hierarchies])
 AT_KEYWORDS([incremental rename rename02])
@@ -46,14 +46,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
-find foo | sort 
+find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
index c79df8b5cd83cd894720df91e6fe40afda127291..d6d9a27398db01fe8a52172890ef601a400ba8a4 100644 (file)
@@ -58,13 +58,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null 
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
-find foo | sort 
+find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
index 3e9eb1a239a08f2f0b932fc55c556a73f782bc2d..ac593de1717b9d1520ca406e04d692b3b41ea723 100644 (file)
@@ -79,5 +79,3 @@ Second restore
 AT_CLEANUP
 
 # End of rename04.at
-
-
index 3ad93a67f135c691deff5a0650112bc969cb254b..54a9067a14459d7287225ff61854856bb217a5ce 100644 (file)
@@ -46,11 +46,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ],
 [0],
@@ -77,5 +77,3 @@ Second restore
 AT_CLEANUP
 
 # End of rename05.at
-
-
index d339dfabde13e7e629d06c501cad0f06829bbcb4..2ed46701f983415284b8da5fce973104258b6337 100644 (file)
@@ -34,9 +34,9 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
-ls directory|sort 
+ls directory|sort
 ],
 [0],
 [file1
@@ -44,4 +44,3 @@ file2
 ])
 
 AT_CLEANUP
-
index e3f7b346dcfc0d78d26b77a3ca5cf7216b9fd4b1..7beecc3b8bcc424e0c6918484cb3eea502f00cda 100644 (file)
@@ -19,7 +19,7 @@
 # 02110-1301, USA.
 
 # In previous versions a single -C option did not work with --same-order
-# (see same-order01.sh). However, multiple -C options worked OK. 
+# (see same-order01.sh). However, multiple -C options worked OK.
 # Test if we did not break the correct behavior.
 
 AT_SETUP([multiple -C options])
@@ -34,7 +34,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
index 1c0b4dc9756a8cbf0cdf1c4f6e009bbc88964f74..261f42fded95a137d075a3aa2f7ca91398e5d995 100644 (file)
@@ -38,4 +38,3 @@ tar: Exiting with failure status due to previous errors
 [],[],[gnu])
 
 AT_CLEANUP
-
index 33f3570723115afeb3ac2e78735fc0367e90f450..a2bbd13ba25aead6b14e1ccede01b0cedb7deaf4 100644 (file)
@@ -36,4 +36,3 @@ tar uf archive foo
 [0])
 
 AT_CLEANUP
-
diff --git a/tests/sigpipe.at b/tests/sigpipe.at
new file mode 100644 (file)
index 0000000..9edca77
--- /dev/null
@@ -0,0 +1,39 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+AT_SETUP([sigpipe handling])
+AT_KEYWORDS([sigpipe])
+
+# Description: Tar 1.23 ignored sigpipe which lead to spurious "write
+# error" diagnostics when piping output to another programs.
+# Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
+# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00039.html
+#             <20100319184141.GC30047@wo.int.altlinux.org>
+
+AT_CHECK([
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+],
+[0])
+
+AT_CLEANUP
index 465031f1b94f9e1c6e1e8100896df29125591a73..039fbbf2098ce36dc2853d9e4852faf30cb36deb 100644 (file)
@@ -31,7 +31,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ],
@@ -49,4 +49,3 @@ sparsefile 10344448
 ])
 
 AT_CLEANUP
-
index bd0016db9c6cc5d36bfc3565be07a2955a626d16..9e7ce8a794cb0332e40f146eab0a05563dd7f0c4 100644 (file)
@@ -23,7 +23,7 @@ AT_KEYWORDS([sparse sparse02])
 
 # Tar 1.14 - 1.15.1 was unable to extract sparse files to a pipe.
 # References: <16896.21739.460782.124775@jik.kamens.brookline.ma.us>
-# http://lists.gnu.org/archive/html/bug-tar/2005-02/msg00003.html 
+# http://lists.gnu.org/archive/html/bug-tar/2005-02/msg00003.html
 
 AT_TAR_CHECK([
 genfile --sparse --file sparsefile --block-size 512 0 ABCD 1M EFGH 2000K IJKL || AT_SKIP_TEST
index 81da61309d15fe3c9f1b4dd71e3819d413d25094..654908319b3f873a79b4984d4a9e214134ae4fda 100644 (file)
@@ -35,7 +35,7 @@ echo "Pass 1: Split between data blocks"
 echo "Create archive"
 tar --sparse -c --record-size=512 -M -L6 -f arc.1 -f arc.2 sparsefile || exit 1
 echo "Test archive"
-tar --record-size=512 -t -M -f arc.1 -f arc.2 
+tar --record-size=512 -t -M -f arc.1 -f arc.2
 echo "Compare archive"
 tar --record-size=512 -d -M -f arc.1 -f arc.2
 
@@ -44,7 +44,7 @@ genfile --sparse --file sparsefile 0 ABCDEFGHIJ 1M ABCDEFGHI || AT_SKIP_TEST
 echo "Create archive"
 tar --sparse -c --record-size=512 -M -L6 -f arc.1 -f arc.2 sparsefile || exit 1
 echo "Test archive"
-tar --record-size=512 -t -M -f arc.1 -f arc.2 
+tar --record-size=512 -t -M -f arc.1 -f arc.2
 echo "Compare archive"
 tar --record-size=512 -d -M -f arc.1 -f arc.2
 ],
index 1ab8bf19cc26116a4f631c48bcc6c378a6289e3a..729f5427e120b150e1760d4003119b791fa34c8d 100644 (file)
@@ -29,7 +29,7 @@ exec <&-
 genfile --sparse --file sparsefile $2 || AT_SKIP_TEST
 echo "Pass 1: Split between data blocks"
 echo "Create archive"
-tar --sparse --sparse-version=$1 -c --record-size=512 -M -L6 -f arc.1 -f arc.2 -f arc.3 sparsefile 
+tar --sparse --sparse-version=$1 -c --record-size=512 -M -L6 -f arc.1 -f arc.2 -f arc.3 sparsefile
 echo "Test archive"
 tar -t -M -f arc.1 -f arc.2 -f arc.3
 echo "Compare archive"
@@ -38,7 +38,7 @@ tar -d -M -f arc.1 -f arc.2 -f arc.3
 echo "Pass 2: Split within a data block"
 genfile --sparse --file sparsefile $3 || AT_SKIP_TEST
 echo "Create archive"
-tar --sparse --sparse-version=$1 -c --record-size=512 -M -L6 -f arc.1 -f arc.2 -f arc.3 sparsefile 
+tar --sparse --sparse-version=$1 -c --record-size=512 -M -L6 -f arc.1 -f arc.2 -f arc.3 sparsefile
 echo "Test archive"
 tar -t -M -f arc.1 -f arc.2 -f arc.3
 echo "Compare archive"
@@ -57,4 +57,3 @@ sparsefile
 Compare archive
 ],
 [],[],[],[pax])])
-
index eb460cc66ad6b87647f85d6cbc0f16a6b46c7025..48597d4c6ca61afb899e4c1a5679181fce57cd35 100644 (file)
@@ -19,7 +19,7 @@
 # 02110-1301, USA.
 
 AT_SETUP([sparse files in PAX MV archives, v.0.0])
-AT_KEYWORDS([sparse multiv sparsemvp sparsemvp00])
+AT_KEYWORDS([sparse multivolume multiv sparsemvp sparsemvp00])
 
 TAR_MVP_TEST(0.0, [0 ABCDEFGHI 1M ABCDEFGHI], [0 ABCDEFGH 1M ABCDEFGHI])
 
index 5a4ad26db64bc0fefe86c731322ff1e05a3aad6e..8e1dccbc9b80cfee2583f060db091fa416358e6c 100644 (file)
@@ -19,7 +19,7 @@
 # 02110-1301, USA.
 
 AT_SETUP([sparse files in PAX MV archives, v.1.0])
-AT_KEYWORDS([sparse multiv sparsemvp sparsemvp10])
+AT_KEYWORDS([sparse multivolume multiv sparsemvp sparsemvp10])
 
 TAR_MVP_TEST(1.0, [0 ABCDEFGH 1M ABCDEFGHI], [0 ABCDEFG 1M ABCDEFGHI])
 
index e247ff4fba4cde651de2defd04b96180b7294159..2b96aa6bb132bf88ac9c2491386a778c631dd688 100644 (file)
@@ -10,14 +10,14 @@ STAR_TESTSCRIPTS to point to the directory where they reside, for
 example:
 
        make STAR_TESTSCRIPTS=testdir check
-or     
+or
        make TESTS_ENVIRONMENT='STAR_TESTSCRIPTS=testdir' check
 
 The file `quicktest.sh' is a separate test. It is never executed
 within `make check' command, you will need to run it manually.
 Please, carefully read section `quicktest.sh' below before running
 it.
-       
+
 Following is a short description of the tests:
 
 * gtarfail.at and gtarfail2.at
@@ -30,7 +30,7 @@ by previous versions of GNU tar.
 
 Requires gnu-multi-fail-volume1.gtar and gnu-multi-fail-volume2.gtar.
 These are two parts of a multi-volume archive that previous versions
-of tar refused to read (at least, without -B option). 
+of tar refused to read (at least, without -B option).
 
 * ustar-big-2g.at
 
index c0ce544fc723a38b67b2ee34ad70cf3102a69dee..f00b7675e36f8cc475de749b6a2f52cf7be227e9 100644 (file)
@@ -41,5 +41,3 @@ lrwxrwxrwx jes/glone         0 2001-08-29 10:54 build/psmake/astoi.c -> ../../li
 ])
 
 AT_CLEANUP
-
-
index 2b351d1a625667198418c313a6cc195009e08c84..ebf77176c28f1c5ccfdaad759c5c27ac28a37c1c 100644 (file)
@@ -86,4 +86,3 @@ tar --utc -tvM -f $STAR_TESTSCRIPTS/gnu-multi-fail-volume1.gtar \
 ])
 
 AT_CLEANUP
-
index f37d2f0c25b026c2bbe923850a427d420e83ad8e..732d0fafe7c581efffb4664048aa054553d1041d 100644 (file)
@@ -39,5 +39,3 @@ RE_CHECK([stderr],[tar: Record size = .*
 ])
 
 AT_CLEANUP
-
-
index 01b8e128069fd960711e6a70129acea0b4654ba7..cbc65112bd8fab70870209d92787668115be79b0 100755 (executable)
@@ -57,7 +57,7 @@ test_access() {
                echo "$1 does not exist or is unreadable"
                echo 77
        fi
-}              
+}
 
 check_environ() {
        if [ "$STAR_TESTSCRIPTS" = "" ]; then
@@ -70,12 +70,12 @@ check_environ() {
        else
                echo "STAR_TESTSCRIPTS is not a directory"
                exit 77
-       fi              
+       fi
 
        ARCHIVE=$STAR_TESTSCRIPTS/ustar-all-quicktest.tar
        test_access $ARCHIVE
        FILELIST=$STAR_TESTSCRIPTS/quicktest.filelist
-       test_access $FILELIST                           
+       test_access $FILELIST
 
        ${TARTEST:-tartest} < /dev/null > /dev/null 2>&1
        if [ $? -eq 127 ]; then
@@ -93,7 +93,7 @@ getargs() {
                *)    echo "Unknown option: $option" >&2
                      exit 77;;
                esac
-       done          
+       done
 }
 
 if [ -w / ]; then
index a5bee736f7a8860c30a3013534c19f89f6d85ba0..1609d1b762685fe0803ea2e38464e877168c63e4 100644 (file)
@@ -39,4 +39,3 @@ RE_CHECK([stderr],[tar: Record size = .*
 ])
 
 AT_CLEANUP
-
index 49a05c0f007b081fad4b3f80ab08d57ee6e78d8d..d1ecbcdbafff1d028d38a088830297fc48799c37 100644 (file)
@@ -39,4 +39,3 @@ RE_CHECK([stderr],[tar: Record size = .*
 ])
 
 AT_CLEANUP
-
index f846810c31dddc8043d025c5ffcfa4e7e28255d1..c2242601658387ef7e666de2a1d5c9af64c54037 100755 (executable)
@@ -621,11 +621,11 @@ at_change_dir=false
 # List of the tested programs.
 at_tested='tar'
 # List of the all the test groups.
-at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98'
+at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115'
 # As many question marks as there are digits in the last test group number.
 # Used to normalize the test group numbers so that `ls' lists them in
 # numerical order.
-at_format='??'
+at_format='???'
 # Description of all the test groups.
 at_help_all="1;version.at:19;tar version;;
 2;pipe.at:30;decompressing from stdin;pipe;
@@ -639,92 +639,109 @@ at_help_all="1;version.at:19;tar version;;
 10;append01.at:29;appending files with long names;append append01;
 11;append02.at:54;append vs. create;append append02 append-gnu;
 12;xform-h.at:30;transforming hard links on create;transform xform xform-h;
-13;exclude.at:23;exclude;exclude;
-14;exclude01.at:17;exclude wildcards;exclude exclude01;
-15;exclude02.at:17;exclude: anchoring;exclude exclude02;
-16;exclude03.at:17;exclude: wildcards match slash;exclude exclude03;
-17;exclude04.at:17;exclude: case insensitive;exclude exclude04;
-18;exclude05.at:19;exclude: lots of excludes;exclude exclude05;
-19;delete01.at:23;deleting a member after a big one;delete delete01;
-20;delete02.at:23;deleting a member from stdin archive;delete delete02;
-21;delete03.at:21;deleting members with long names;delete delete03;
-22;delete04.at:23;deleting a large last member;delete delete04;
-23;delete05.at:27;deleting non-existing member;delete delete05;
-24;extrac01.at:23;extract over an existing directory;extract extract01;
-25;extrac02.at:23;extracting symlinks over an existing file;extract extract02 symlink;
-26;extrac03.at:23;extraction loops;extract extract03;
-27;extrac04.at:23;extract + fnmatch;extract extract04 fnmatch;
-28;extrac05.at:30;extracting selected members from pax;extract extract05;
-29;extrac06.at:33;mode of extracted directories;extract extract06 directory mode;
-30;extrac07.at:27;extracting symlinks to a read-only dir;extract extract07 read-only symlink;
-31;extrac08.at:33;restoring mode on existing directory;extract extrac08;
-32;label01.at:19;single-volume label;label label01;
-33;label02.at:19;multi-volume label;label label02 multi-label multivolume multiv;
-34;backup01.at:33;extracting existing dir with --backup;extract backup backup01;
-35;gzip.at:23;gzip;gzip;
-36;incremental.at:23;incremental;incremental incr00;
-37;incr01.at:27;restore broken symlinks from incremental;incremental incr01;
-38;incr02.at:32;restoring timestamps from incremental;incremental timestamp restore incr02;
-39;listed01.at:26;--listed for individual files;listed incremental listed01;
-40;listed02.at:28;working --listed;listed incremental listed02;
-41;incr03.at:28;renamed files in incrementals;incremental incr03 rename;
-42;incr04.at:29;proper icontents initialization;incremental incr04 icontents;
-43;incr05.at:19;incremental dumps with -C;incremental incr05;
-44;incr06.at:19;incremental dumps of nested directories;incremental incr06;
-45;filerem01.at:34;file removed as we read it (ca. 22 seconds);create incremental filechange filerem filerem01;
-46;filerem02.at:24;toplevel file removed (ca. 24 seconds);create incremental filechange filerem filerem02;
-47;rename01.at:24;renamed dirs in incrementals;incremental rename rename01;
-48;rename02.at:24;move between hierarchies;incremental rename rename02;
-49;rename03.at:23;cyclic renames;incremental rename rename03 cyclic-rename;
-50;rename04.at:27;renamed directory containing subdirectories;incremental rename04 rename;
-51;rename05.at:24;renamed subdirectories;incremental rename05 rename;
-52;chtype.at:27;changed file types in incrementals;incremental chtype;
-53;ignfail.at:23;ignfail;ignfail;
-54;link01.at:33;link count gt 2;hardlinks link01;
-55;link02.at:32;preserve hard links with --remove-files;hardlinks link02;
-56;link03.at:24;working -l with --remove-files;hardlinks link03;
-57;longv7.at:24;long names in V7 archives;longname longv7;
-58;long01.at:28;long file names divisible by block size;longname long512;
-59;lustar01.at:21;ustar: unsplittable file name;longname ustar lustar01;
-60;lustar02.at:21;ustar: unsplittable path name;longname ustar lustar02;
-61;lustar03.at:21;ustar: splitting long names;longname ustar lustar03;
-62;multiv01.at:23;multivolume dumps from pipes;multivolume multiv multiv01;
-63;multiv02.at:28;skipping a straddling member;multivolume multiv multiv02;
-64;multiv03.at:30;MV archive & long filenames;multivolume multiv multiv03;
-65;multiv04.at:36;split directory members in a MV archive;multivolume multiv incremental multiv04;
-66;multiv05.at:26;Restoring after an out of sync volume;multivolume multiv multiv05 sync;
-67;multiv06.at:27;Multivolumes with L=record_size;multivolume multiv multiv06;
-68;multiv07.at:26;volumes split at an extended header;multivolume multiv multiv07 xsplit;
-69;old.at:23;old archives;old;
-70;recurse.at:21;recurse;recurse;
-71;same-order01.at:26;working -C with --same-order;same-order same-order01;
-72;same-order02.at:25;multiple -C options;same-order same-order02;
-73;shortrec.at:25;short records;shortrec;
-74;sparse01.at:21;sparse files;sparse sparse01;
-75;sparse02.at:21;extracting sparse file over a pipe;sparse sparse02;
-76;sparse03.at:21;storing sparse files > 8G;sparse sparse03;
-77;sparsemv.at:21;sparse files in MV archives;sparse multiv sparsemv;
-78;spmvp00.at:21;sparse files in PAX MV archives, v.0.0;sparse multiv sparsemvp sparsemvp00;
-79;spmvp01.at:21;sparse files in PAX MV archives, v.0.1;sparse multiv sparsemvp sparsemvp01;
-80;spmvp10.at:21;sparse files in PAX MV archives, v.1.0;sparse multiv sparsemvp sparsemvp10;
-81;update.at:28;update unchanged directories;update update00;
-82;update01.at:29;update directories;update update01;
-83;update02.at:26;update changed files;update update02;
-84;volume.at:23;volume;volume volcheck;
-85;volsize.at:29;volume header size;volume volsize;
-86;comprec.at:21;compressed format recognition;comprec;
-87;shortfile.at:26;short input files;shortfile shortfile0;
-88;shortupd.at:29;updating short archives;shortfile shortfile1 shortupd;
-89;truncate.at:29;truncate;truncate filechange;
-90;grow.at:24;grow;grow filechange;
-91;remfiles01.at:28;remove-files with compression;create remove-files remfiles01 gzip;
-92;remfiles02.at:28;remove-files with compression: grand-child;create remove-files remfiles02 gzip;
-93;gtarfail.at:21;gtarfail;star gtarfail;
-94;gtarfail2.at:21;gtarfail2;star gtarfail2;
-95;multi-fail.at:21;multi-fail;star multivolume multiv multi-fail;
-96;ustar-big-2g.at:21;ustar-big-2g;star ustar-big-2g;
-97;ustar-big-8g.at:21;ustar-big-8g;star ustar-big-8g;
-98;pax-big-10g.at:21;pax-big-10g;star pax-big-10g;
+13;xform01.at:26;transformations and GNU volume labels;transform xform xform01 volume;
+14;exclude.at:23;exclude;exclude;
+15;exclude01.at:17;exclude wildcards;exclude exclude01;
+16;exclude02.at:17;exclude: anchoring;exclude exclude02;
+17;exclude03.at:17;exclude: wildcards match slash;exclude exclude03;
+18;exclude04.at:17;exclude: case insensitive;exclude exclude04;
+19;exclude05.at:19;exclude: lots of excludes;exclude exclude05;
+20;exclude06.at:24;exclude: long files in pax archives;exclude exclude06;
+21;delete01.at:23;deleting a member after a big one;delete delete01;
+22;delete02.at:23;deleting a member from stdin archive;delete delete02;
+23;delete03.at:21;deleting members with long names;delete delete03;
+24;delete04.at:23;deleting a large last member;delete delete04;
+25;delete05.at:27;deleting non-existing member;delete delete05;
+26;extrac01.at:23;extract over an existing directory;extract extract01;
+27;extrac02.at:23;extracting symlinks over an existing file;extract extract02 symlink;
+28;extrac03.at:23;extraction loops;extract extract03;
+29;extrac04.at:23;extract + fnmatch;extract extract04 fnmatch;
+30;extrac05.at:30;extracting selected members from pax;extract extract05;
+31;extrac06.at:33;mode of extracted directories;extract extract06 directory mode;
+32;extrac07.at:27;extracting symlinks to a read-only dir;extract extract07 read-only symlink;
+33;extrac08.at:33;restoring mode on existing directory;extract extrac08;
+34;extrac09.at:22;no need to save dir with unreadable . and ..;extract extrac09;
+35;extrac10.at:27;-C and delayed setting of metadata;extract extrac10;
+36;extrac11.at:23;scarce file descriptors;extract extrac11;
+37;extrac12.at:23;extract dot permissions;extract extrac12;
+38;extrac13.at:24;extract over symlinks;extract extrac13;
+39;extrac14.at:23;extract -C symlink;extract extrac14;
+40;extrac15.at:23;extract parent mkdir failure;extract extrac15;
+41;label01.at:19;single-volume label;label label01;
+42;label02.at:19;multi-volume label;label label02 multi-label multivolume multiv;
+43;label03.at:25;test-label option;label label03 test-label;
+44;label04.at:25;label with non-create option;label label04;
+45;label05.at:22;label with non-create option;label label05;
+46;backup01.at:33;extracting existing dir with --backup;extract backup backup01;
+47;gzip.at:23;gzip;gzip;
+48;incremental.at:23;incremental;incremental incr00;
+49;incr01.at:27;restore broken symlinks from incremental;incremental incr01;
+50;incr02.at:32;restoring timestamps from incremental;incremental timestamp restore incr02;
+51;listed01.at:26;--listed for individual files;listed incremental listed01;
+52;listed02.at:28;working --listed;listed incremental listed02;
+53;listed03.at:22;incremental dump when the parent directory is unreadable;listed incremental listed03;
+54;incr03.at:28;renamed files in incrementals;incremental incr03 rename;
+55;incr04.at:29;proper icontents initialization;incremental incr04 icontents;
+56;incr05.at:19;incremental dumps with -C;incremental incr05;
+57;incr06.at:19;incremental dumps of nested directories;incremental incr06;
+58;filerem01.at:34;file removed as we read it (ca. 22 seconds);create incremental filechange filerem filerem01;
+59;filerem02.at:24;toplevel file removed (ca. 24 seconds);create incremental filechange filerem filerem02;
+60;rename01.at:24;renamed dirs in incrementals;incremental rename rename01;
+61;rename02.at:24;move between hierarchies;incremental rename rename02;
+62;rename03.at:23;cyclic renames;incremental rename rename03 cyclic-rename;
+63;rename04.at:27;renamed directory containing subdirectories;incremental rename04 rename;
+64;rename05.at:24;renamed subdirectories;incremental rename05 rename;
+65;chtype.at:27;changed file types in incrementals;incremental chtype;
+66;ignfail.at:23;ignfail;ignfail;
+67;link01.at:33;link count gt 2;hardlinks link01;
+68;link02.at:32;preserve hard links with --remove-files;hardlinks link02;
+69;link03.at:24;working -l with --remove-files;hardlinks link03;
+70;link04.at:29;link count is 1 but multiple occurrences;hardlinks link04;
+71;longv7.at:24;long names in V7 archives;longname longv7;
+72;long01.at:28;long file names divisible by block size;longname long512;
+73;lustar01.at:21;ustar: unsplittable file name;longname ustar lustar01;
+74;lustar02.at:21;ustar: unsplittable path name;longname ustar lustar02;
+75;lustar03.at:21;ustar: splitting long names;longname ustar lustar03;
+76;multiv01.at:23;multivolume dumps from pipes;multivolume multiv multiv01;
+77;multiv02.at:28;skipping a straddling member;multivolume multiv multiv02;
+78;multiv03.at:30;MV archive & long filenames;multivolume multiv multiv03;
+79;multiv04.at:36;split directory members in a MV archive;multivolume multiv incremental multiv04;
+80;multiv05.at:26;Restoring after an out of sync volume;multivolume multiv multiv05 sync;
+81;multiv06.at:27;Multivolumes with L=record_size;multivolume multiv multiv06;
+82;multiv07.at:26;volumes split at an extended header;multivolume multiv multiv07 xsplit;
+83;multiv08.at:23;multivolume header creation;multivolume multiv multiv08;
+84;old.at:23;old archives;old;
+85;recurse.at:21;recurse;recurse;
+86;same-order01.at:26;working -C with --same-order;same-order same-order01;
+87;same-order02.at:25;multiple -C options;same-order same-order02;
+88;shortrec.at:25;short records;shortrec;
+89;sparse01.at:21;sparse files;sparse sparse01;
+90;sparse02.at:21;extracting sparse file over a pipe;sparse sparse02;
+91;sparse03.at:21;storing sparse files > 8G;sparse sparse03;
+92;sparsemv.at:21;sparse files in MV archives;sparse multiv sparsemv;
+93;spmvp00.at:21;sparse files in PAX MV archives, v.0.0;sparse multivolume multiv sparsemvp sparsemvp00;
+94;spmvp01.at:21;sparse files in PAX MV archives, v.0.1;sparse multiv sparsemvp sparsemvp01;
+95;spmvp10.at:21;sparse files in PAX MV archives, v.1.0;sparse multivolume multiv sparsemvp sparsemvp10;
+96;update.at:28;update unchanged directories;update update00;
+97;update01.at:29;update directories;update update01;
+98;update02.at:26;update changed files;update update02;
+99;volume.at:23;volume;volume volcheck;
+100;volsize.at:29;volume header size;volume volsize;
+101;comprec.at:21;compressed format recognition;comprec;
+102;shortfile.at:26;short input files;shortfile shortfile0;
+103;shortupd.at:29;updating short archives;shortfile shortfile1 shortupd;
+104;truncate.at:29;truncate;truncate filechange;
+105;grow.at:24;grow;grow filechange;
+106;remfiles01.at:28;remove-files with compression;create remove-files remfiles01 gzip;
+107;remfiles02.at:28;remove-files with compression: grand-child;create remove-files remfiles02 gzip;
+108;remfiles03.at:28;remove-files with symbolic links;create remove-files remfiles03;
+109;sigpipe.at:19;sigpipe handling;sigpipe;
+110;gtarfail.at:21;gtarfail;star gtarfail;
+111;gtarfail2.at:21;gtarfail2;star gtarfail2;
+112;multi-fail.at:21;multi-fail;star multivolume multiv multi-fail;
+113;ustar-big-2g.at:21;ustar-big-2g;star ustar-big-2g;
+114;ustar-big-8g.at:21;ustar-big-8g;star ustar-big-8g;
+115;pax-big-10g.at:21;pax-big-10g;star pax-big-10g;
 "
 
 # at_func_validate_ranges [NAME...]
@@ -736,7 +753,7 @@ at_func_validate_ranges ()
   for at_grp
   do
     eval at_value=\$$at_grp
-    if test $at_value -lt 1 || test $at_value -gt 98; then
+    if test $at_value -lt 1 || test $at_value -gt 115; then
       $as_echo "invalid test group: $at_value" >&2
       exit 1
     fi
@@ -973,7 +990,7 @@ fi
 # List of tests.
 if $at_list_p; then
   cat <<_ATEOF || at_write_fail=1
-GNU tar 1.23 test suite test groups:
+GNU tar 1.24 test suite test groups:
 
  NUM: FILE-NAME:LINE     TEST-GROUP-NAME
       KEYWORDS
@@ -1002,7 +1019,7 @@ _ATEOF
   exit $at_write_fail
 fi
 if $at_version_p; then
-  $as_echo "$as_me (GNU tar 1.23)" &&
+  $as_echo "$as_me (GNU tar 1.24)" &&
   cat <<\_ACEOF || at_write_fail=1
 
 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
@@ -1185,13 +1202,13 @@ exec 5>>"$at_suite_log"
 # Banners and logs.
 cat <<\_ASBOX
 ## ------------------------ ##
-## GNU tar 1.23 test suite. ##
+## GNU tar 1.24 test suite. ##
 ## ------------------------ ##
 _ASBOX
 {
   cat <<\_ASBOX
 ## ------------------------ ##
-## GNU tar 1.23 test suite. ##
+## GNU tar 1.24 test suite. ##
 ## ------------------------ ##
 _ASBOX
   echo
@@ -1923,7 +1940,7 @@ _ASBOX
   $as_echo "Please send \`${at_testdir+${at_testdir}/}$as_me.log' and all information you think might help:
 
    To: <bug-tar@gnu.org>
-   Subject: [GNU tar 1.23] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+   Subject: [GNU tar 1.24] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
 "
   if test $at_debug_p = false; then
     echo
@@ -1965,7 +1982,7 @@ fi
 at_status=$?
 at_failed=false
 at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "tar (GNU tar) 1.23
+echo >>"$at_stdout"; $as_echo "tar (GNU tar) 1.24
 " | \
   $at_diff - "$at_stdout" || at_failed=:
 at_func_check_status 0 $at_status "$at_srcdir/version.at:21"
@@ -2026,7 +2043,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2053,7 +2070,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2078,7 +2095,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2118,7 +2135,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2145,7 +2162,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2170,7 +2187,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2210,7 +2227,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2237,7 +2254,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2262,7 +2279,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2302,7 +2319,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2329,7 +2346,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2354,7 +2371,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2394,7 +2411,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2421,7 +2438,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2446,7 +2463,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -5388,21 +5405,106 @@ $at_traceon; }
 
 
 
+
+
   $at_traceoff
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
 #AT_STOP_12
 #AT_START_13
-# 13. exclude.at:23: exclude
+# 13. xform01.at:26: transformations and GNU volume labels
+at_setup_line='xform01.at:26'
+at_desc="transformations and GNU volume labels"
+$at_quiet $as_echo_n " 13: $at_desc          "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "13. xform01.at:26: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/xform01.at:29:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+)"
+echo xform01.at:29 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "/label/
+file
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/xform01.at:29"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_13
+#AT_START_14
+# 14. exclude.at:23: exclude
 at_setup_line='exclude.at:23'
 at_desc="exclude"
-$at_quiet $as_echo_n " 13: $at_desc                                        "
+$at_quiet $as_echo_n " 14: $at_desc                                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "13. exclude.at:23: testing ..."
+  $as_echo "14. exclude.at:23: testing ..."
   $at_traceon
 
 
@@ -5659,17 +5761,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_13
-#AT_START_14
-# 14. exclude01.at:17: exclude wildcards
+#AT_STOP_14
+#AT_START_15
+# 15. exclude01.at:17: exclude wildcards
 at_setup_line='exclude01.at:17'
 at_desc="exclude wildcards"
-$at_quiet $as_echo_n " 14: $at_desc                              "
+$at_quiet $as_echo_n " 15: $at_desc                              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "14. exclude01.at:17: testing ..."
+  $as_echo "15. exclude01.at:17: testing ..."
   $at_traceon
 
 
@@ -6493,17 +6595,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_14
-#AT_START_15
-# 15. exclude02.at:17: exclude: anchoring
+#AT_STOP_15
+#AT_START_16
+# 16. exclude02.at:17: exclude: anchoring
 at_setup_line='exclude02.at:17'
 at_desc="exclude: anchoring"
-$at_quiet $as_echo_n " 15: $at_desc                             "
+$at_quiet $as_echo_n " 16: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "15. exclude02.at:17: testing ..."
+  $as_echo "16. exclude02.at:17: testing ..."
   $at_traceon
 
 
@@ -7407,17 +7509,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_15
-#AT_START_16
-# 16. exclude03.at:17: exclude: wildcards match slash
+#AT_STOP_16
+#AT_START_17
+# 17. exclude03.at:17: exclude: wildcards match slash
 at_setup_line='exclude03.at:17'
 at_desc="exclude: wildcards match slash"
-$at_quiet $as_echo_n " 16: $at_desc                 "
+$at_quiet $as_echo_n " 17: $at_desc                 "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "16. exclude03.at:17: testing ..."
+  $as_echo "17. exclude03.at:17: testing ..."
   $at_traceon
 
 
@@ -8261,17 +8363,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_16
-#AT_START_17
-# 17. exclude04.at:17: exclude: case insensitive
+#AT_STOP_17
+#AT_START_18
+# 18. exclude04.at:17: exclude: case insensitive
 at_setup_line='exclude04.at:17'
 at_desc="exclude: case insensitive"
-$at_quiet $as_echo_n " 17: $at_desc                      "
+$at_quiet $as_echo_n " 18: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "17. exclude04.at:17: testing ..."
+  $as_echo "18. exclude04.at:17: testing ..."
   $at_traceon
 
 
@@ -9145,17 +9247,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_17
-#AT_START_18
-# 18. exclude05.at:19: exclude: lots of excludes
+#AT_STOP_18
+#AT_START_19
+# 19. exclude05.at:19: exclude: lots of excludes
 at_setup_line='exclude05.at:19'
 at_desc="exclude: lots of excludes"
-$at_quiet $as_echo_n " 18: $at_desc                      "
+$at_quiet $as_echo_n " 19: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "18. exclude05.at:19: testing ..."
+  $as_echo "19. exclude05.at:19: testing ..."
   $at_traceon
 
 
@@ -9829,17 +9931,119 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_18
-#AT_START_19
-# 19. delete01.at:23: deleting a member after a big one
+#AT_STOP_19
+#AT_START_20
+# 20. exclude06.at:24: exclude: long files in pax archives
+at_setup_line='exclude06.at:24'
+at_desc="exclude: long files in pax archives"
+$at_quiet $as_echo_n " 20: $at_desc            "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "20. exclude06.at:24: testing ..."
+  $at_traceon
+
+
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/exclude06.at:29:
+mkdir pax
+(cd pax
+TEST_TAR_FORMAT=pax
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H pax\"
+export TAR_OPTIONS
+rm -rf *
+
+
+install-sh -d one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen >/dev/null  || exit 77
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.txt
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+
+tar cf archive.tar one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+)"
+echo exclude06.at:29 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir pax
+(cd pax
+TEST_TAR_FORMAT=pax
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H pax"
+export TAR_OPTIONS
+rm -rf *
+
+
+install-sh -d one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen >/dev/null  || exit 77
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.txt
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+
+tar cf archive.tar one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir pax
+(cd pax
+TEST_TAR_FORMAT=pax
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H pax"
+export TAR_OPTIONS
+rm -rf *
+
+
+install-sh -d one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen >/dev/null  || exit 77
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.txt
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+
+tar cf archive.tar one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "out/one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/exclude06.at:29"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_20
+#AT_START_21
+# 21. delete01.at:23: deleting a member after a big one
 at_setup_line='delete01.at:23'
 at_desc="deleting a member after a big one"
-$at_quiet $as_echo_n " 19: $at_desc              "
+$at_quiet $as_echo_n " 21: $at_desc              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "19. delete01.at:23: testing ..."
+  $as_echo "21. delete01.at:23: testing ..."
   $at_traceon
 
 
@@ -10158,17 +10362,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_19
-#AT_START_20
-# 20. delete02.at:23: deleting a member from stdin archive
+#AT_STOP_21
+#AT_START_22
+# 22. delete02.at:23: deleting a member from stdin archive
 at_setup_line='delete02.at:23'
 at_desc="deleting a member from stdin archive"
-$at_quiet $as_echo_n " 20: $at_desc           "
+$at_quiet $as_echo_n " 22: $at_desc           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "20. delete02.at:23: testing ..."
+  $as_echo "22. delete02.at:23: testing ..."
   $at_traceon
 
 
@@ -10557,17 +10761,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_20
-#AT_START_21
-# 21. delete03.at:21: deleting members with long names
+#AT_STOP_22
+#AT_START_23
+# 23. delete03.at:21: deleting members with long names
 at_setup_line='delete03.at:21'
 at_desc="deleting members with long names"
-$at_quiet $as_echo_n " 21: $at_desc               "
+$at_quiet $as_echo_n " 23: $at_desc               "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "21. delete03.at:21: testing ..."
+  $as_echo "23. delete03.at:21: testing ..."
   $at_traceon
 
 
@@ -10832,17 +11036,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_21
-#AT_START_22
-# 22. delete04.at:23: deleting a large last member
+#AT_STOP_23
+#AT_START_24
+# 24. delete04.at:23: deleting a large last member
 at_setup_line='delete04.at:23'
 at_desc="deleting a large last member"
-$at_quiet $as_echo_n " 22: $at_desc                   "
+$at_quiet $as_echo_n " 24: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "22. delete04.at:23: testing ..."
+  $as_echo "24. delete04.at:23: testing ..."
   $at_traceon
 
 
@@ -11336,17 +11540,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_22
-#AT_START_23
-# 23. delete05.at:27: deleting non-existing member
+#AT_STOP_24
+#AT_START_25
+# 25. delete05.at:27: deleting non-existing member
 at_setup_line='delete05.at:27'
 at_desc="deleting non-existing member"
-$at_quiet $as_echo_n " 23: $at_desc                   "
+$at_quiet $as_echo_n " 25: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "23. delete05.at:27: testing ..."
+  $as_echo "25. delete05.at:27: testing ..."
   $at_traceon
 
 
@@ -11745,17 +11949,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_23
-#AT_START_24
-# 24. extrac01.at:23: extract over an existing directory
+#AT_STOP_25
+#AT_START_26
+# 26. extrac01.at:23: extract over an existing directory
 at_setup_line='extrac01.at:23'
 at_desc="extract over an existing directory"
-$at_quiet $as_echo_n " 24: $at_desc             "
+$at_quiet $as_echo_n " 26: $at_desc             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "24. extrac01.at:23: testing ..."
+  $as_echo "26. extrac01.at:23: testing ..."
   $at_traceon
 
 
@@ -11775,7 +11979,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11793,7 +11997,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11809,7 +12013,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -11834,7 +12038,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11852,7 +12056,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11868,7 +12072,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -11893,7 +12097,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11911,7 +12115,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11927,7 +12131,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -11952,7 +12156,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11970,7 +12174,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11986,7 +12190,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -12011,7 +12215,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -12029,7 +12233,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -12045,7 +12249,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -12064,17 +12268,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_24
-#AT_START_25
-# 25. extrac02.at:23: extracting symlinks over an existing file
+#AT_STOP_26
+#AT_START_27
+# 27. extrac02.at:23: extracting symlinks over an existing file
 at_setup_line='extrac02.at:23'
 at_desc="extracting symlinks over an existing file"
-$at_quiet $as_echo_n " 25: $at_desc      "
+$at_quiet $as_echo_n " 27: $at_desc      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "25. extrac02.at:23: testing ..."
+  $as_echo "27. extrac02.at:23: testing ..."
   $at_traceon
 
 
@@ -12415,17 +12619,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_25
-#AT_START_26
-# 26. extrac03.at:23: extraction loops
+#AT_STOP_27
+#AT_START_28
+# 28. extrac03.at:23: extraction loops
 at_setup_line='extrac03.at:23'
 at_desc="extraction loops"
-$at_quiet $as_echo_n " 26: $at_desc                               "
+$at_quiet $as_echo_n " 28: $at_desc                               "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "26. extrac03.at:23: testing ..."
+  $as_echo "28. extrac03.at:23: testing ..."
   $at_traceon
 
 
@@ -12445,7 +12649,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12462,7 +12666,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12477,7 +12681,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12505,7 +12709,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12522,7 +12726,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12537,7 +12741,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12565,7 +12769,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12582,7 +12786,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12597,7 +12801,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12625,7 +12829,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12642,7 +12846,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12657,7 +12861,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12685,7 +12889,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12702,7 +12906,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12717,7 +12921,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12739,17 +12943,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_26
-#AT_START_27
-# 27. extrac04.at:23: extract + fnmatch
+#AT_STOP_28
+#AT_START_29
+# 29. extrac04.at:23: extract + fnmatch
 at_setup_line='extrac04.at:23'
 at_desc="extract + fnmatch"
-$at_quiet $as_echo_n " 27: $at_desc                              "
+$at_quiet $as_echo_n " 29: $at_desc                              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "27. extrac04.at:23: testing ..."
+  $as_echo "29. extrac04.at:23: testing ..."
   $at_traceon
 
 
@@ -13243,17 +13447,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_27
-#AT_START_28
-# 28. extrac05.at:30: extracting selected members from pax
+#AT_STOP_29
+#AT_START_30
+# 30. extrac05.at:30: extracting selected members from pax
 at_setup_line='extrac05.at:30'
 at_desc="extracting selected members from pax"
-$at_quiet $as_echo_n " 28: $at_desc           "
+$at_quiet $as_echo_n " 30: $at_desc           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "28. extrac05.at:30: testing ..."
+  $as_echo "30. extrac05.at:30: testing ..."
   $at_traceon
 
 
@@ -13287,7 +13491,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 )"
@@ -13315,7 +13519,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -13341,7 +13545,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -13365,17 +13569,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_28
-#AT_START_29
-# 29. extrac06.at:33: mode of extracted directories
+#AT_STOP_30
+#AT_START_31
+# 31. extrac06.at:33: mode of extracted directories
 at_setup_line='extrac06.at:33'
 at_desc="mode of extracted directories"
-$at_quiet $as_echo_n " 29: $at_desc                  "
+$at_quiet $as_echo_n " 31: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "29. extrac06.at:33: testing ..."
+  $as_echo "31. extrac06.at:33: testing ..."
   $at_traceon
 
 
@@ -13412,10 +13616,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13453,10 +13657,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13492,10 +13696,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13545,10 +13749,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13586,10 +13790,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13625,10 +13829,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13678,10 +13882,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13719,10 +13923,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13758,10 +13962,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13811,10 +14015,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13852,10 +14056,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13891,10 +14095,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13944,10 +14148,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13985,10 +14189,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -14024,10 +14228,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -14054,17 +14258,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_29
-#AT_START_30
-# 30. extrac07.at:27: extracting symlinks to a read-only dir
+#AT_STOP_31
+#AT_START_32
+# 32. extrac07.at:27: extracting symlinks to a read-only dir
 at_setup_line='extrac07.at:27'
 at_desc="extracting symlinks to a read-only dir"
-$at_quiet $as_echo_n " 30: $at_desc         "
+$at_quiet $as_echo_n " 32: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "30. extrac07.at:27: testing ..."
+  $as_echo "32. extrac07.at:27: testing ..."
   $at_traceon
 
 
@@ -14073,21 +14277,30 @@ echo "#                             -*- compilation -*-" >> "$at_group_log"
 
   { $at_traceoff
 $as_echo "$at_srcdir/extrac07.at:30:
-mkdir v7
-(cd v7
-TEST_TAR_FORMAT=v7
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
 export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H v7\"
+TAR_OPTIONS=\"-H ustar\"
 export TAR_OPTIONS
 rm -rf *
 
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -14103,21 +14316,30 @@ echo extrac07.at:30 >"$at_check_line_file"
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
   ( $at_traceon;
-mkdir v7
-(cd v7
-TEST_TAR_FORMAT=v7
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H v7"
+TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -14131,21 +14353,30 @@ tar -C out -xvf archive
   at_func_filter_trace $?
 else
   ( :;
-mkdir v7
-(cd v7
-TEST_TAR_FORMAT=v7
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H v7"
+TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -14168,435 +14399,6 @@ dir/foo
 " | \
   $at_diff - "$at_stdout" || at_failed=:
 at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H oldgnu\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir ustar
-(cd ustar
-TEST_TAR_FORMAT=ustar
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H ustar\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir ustar
-(cd ustar
-TEST_TAR_FORMAT=ustar
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H ustar"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir ustar
-(cd ustar
-TEST_TAR_FORMAT=ustar
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H ustar"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir posix
-(cd posix
-TEST_TAR_FORMAT=posix
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H posix\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir posix
-(cd posix
-TEST_TAR_FORMAT=posix
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H posix"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir posix
-(cd posix
-TEST_TAR_FORMAT=posix
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H posix"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir gnu
-(cd gnu
-TEST_TAR_FORMAT=gnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H gnu\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir gnu
-(cd gnu
-TEST_TAR_FORMAT=gnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H gnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir gnu
-(cd gnu
-TEST_TAR_FORMAT=gnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H gnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -14608,17 +14410,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_30
-#AT_START_31
-# 31. extrac08.at:33: restoring mode on existing directory
+#AT_STOP_32
+#AT_START_33
+# 33. extrac08.at:33: restoring mode on existing directory
 at_setup_line='extrac08.at:33'
 at_desc="restoring mode on existing directory"
-$at_quiet $as_echo_n " 31: $at_desc           "
+$at_quiet $as_echo_n " 33: $at_desc           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "31. extrac08.at:33: testing ..."
+  $as_echo "33. extrac08.at:33: testing ..."
   $at_traceon
 
 
@@ -14641,7 +14443,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14663,7 +14465,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14683,7 +14485,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14716,7 +14518,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14738,7 +14540,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14758,7 +14560,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14791,7 +14593,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14813,7 +14615,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14833,7 +14635,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14866,7 +14668,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14888,7 +14690,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14908,7 +14710,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14941,7 +14743,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14963,7 +14765,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14983,7 +14785,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -15007,17 +14809,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_31
-#AT_START_32
-# 32. label01.at:19: single-volume label
-at_setup_line='label01.at:19'
-at_desc="single-volume label"
-$at_quiet $as_echo_n " 32: $at_desc                            "
+#AT_STOP_33
+#AT_START_34
+# 34. extrac09.at:22: no need to save dir with unreadable . and ..
+at_setup_line='extrac09.at:22'
+at_desc="no need to save dir with unreadable . and .."
+$at_quiet $as_echo_n " 34: $at_desc   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "32. label01.at:19: testing ..."
+  $as_echo "34. extrac09.at:22: testing ..."
   $at_traceon
 
 
@@ -15025,7 +14827,7 @@ echo "#                             -*- compilation -*-" >> "$at_group_log"
 
 
   { $at_traceoff
-$as_echo "$at_srcdir/label01.at:22:
+$as_echo "$at_srcdir/extrac09.at:25:
 mkdir gnu
 (cd gnu
 TEST_TAR_FORMAT=gnu
@@ -15034,12 +14836,31 @@ TAR_OPTIONS=\"-H gnu\"
 export TAR_OPTIONS
 rm -rf *
 
-genfile --file foo
-genfile --file bar
-tar -cf archive --label=Test foo bar
-tar tf archive
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=\$?
+chmod a+r . ..
+cmp f extract/f || status=\$?
+exit \$status
 )"
-echo label01.at:22 >"$at_check_line_file"
+echo extrac09.at:25 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -15052,10 +14873,29 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
-genfile --file foo
-genfile --file bar
-tar -cf archive --label=Test foo bar
-tar tf archive
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=$?
+chmod a+r . ..
+cmp f extract/f || status=$?
+exit $status
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15068,32 +14908,896 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
-genfile --file foo
-genfile --file bar
-tar -cf archive --label=Test foo bar
-tar tf archive
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=$?
+chmod a+r . ..
+cmp f extract/f || status=$?
+exit $status
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
 at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Test
-foo
-bar
+echo >>"$at_stdout"; $as_echo "f
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/label01.at:22"
+at_func_check_status 0 $at_status "$at_srcdir/extrac09.at:25"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
-              { $at_traceoff
-$as_echo "$at_srcdir/label01.at:22:
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_34
+#AT_START_35
+# 35. extrac10.at:27: -C and delayed setting of metadata
+at_setup_line='extrac10.at:27'
+at_desc="-C and delayed setting of metadata"
+$at_quiet $as_echo_n " 35: $at_desc             "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "35. extrac10.at:27: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac10.at:30:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
 export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H oldgnu\"
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+)"
+echo extrac10.at:30 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac10.at:30"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_35
+#AT_START_36
+# 36. extrac11.at:23: scarce file descriptors
+at_setup_line='extrac11.at:23'
+at_desc="scarce file descriptors"
+$at_quiet $as_echo_n " 36: $at_desc                        "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "36. extrac11.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac11.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir \$dirs dest1 dest2 dest3 || exit
+for dir in \$dirs; do
+  for file in X Y Z; do
+    echo \$file >\$dir/\$file || exit
+    files=\"\$files \$file\"
+  done
+done
+
+# Check that \"ulimit\" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   exit 77
+
+# Another test that \"ulimit\" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   exit 77
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+)"
+echo extrac11.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir $dirs dest1 dest2 dest3 || exit
+for dir in $dirs; do
+  for file in X Y Z; do
+    echo $file >$dir/$file || exit
+    files="$files $file"
+  done
+done
+
+# Check that "ulimit" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   exit 77
+
+# Another test that "ulimit" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   exit 77
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir $dirs dest1 dest2 dest3 || exit
+for dir in $dirs; do
+  for file in X Y Z; do
+    echo $file >$dir/$file || exit
+    files="$files $file"
+  done
+done
+
+# Check that "ulimit" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   exit 77
+
+# Another test that "ulimit" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   exit 77
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac11.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_36
+#AT_START_37
+# 37. extrac12.at:23: extract dot permissions
+at_setup_line='extrac12.at:23'
+at_desc="extract dot permissions"
+$at_quiet $as_echo_n " 37: $at_desc                        "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "37. extrac12.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac12.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+)"
+echo extrac12.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac12.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_37
+#AT_START_38
+# 38. extrac13.at:24: extract over symlinks
+at_setup_line='extrac13.at:24'
+at_desc="extract over symlinks"
+$at_quiet $as_echo_n " 38: $at_desc                          "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "38. extrac13.at:24: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac13.at:27:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+)"
+echo extrac13.at:27 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac13.at:27"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_38
+#AT_START_39
+# 39. extrac14.at:23: extract -C symlink
+at_setup_line='extrac14.at:23'
+at_desc="extract -C symlink"
+$at_quiet $as_echo_n " 39: $at_desc                             "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "39. extrac14.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac14.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+)"
+echo extrac14.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac14.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_39
+#AT_START_40
+# 40. extrac15.at:23: extract parent mkdir failure
+at_setup_line='extrac15.at:23'
+at_desc="extract parent mkdir failure"
+$at_quiet $as_echo_n " 40: $at_desc                   "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "40. extrac15.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac15.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+)"
+echo extrac15.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: a/b: Cannot mkdir: Permission denied
+tar: a/b/c: Cannot open: No such file or directory
+tar: Exiting with failure status due to previous errors
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac15.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_40
+#AT_START_41
+# 41. label01.at:19: single-volume label
+at_setup_line='label01.at:19'
+at_desc="single-volume label"
+$at_quiet $as_echo_n " 41: $at_desc                            "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "41. label01.at:19: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label01.at:22:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file foo
+genfile --file bar
+tar -cf archive --label=Test foo bar
+tar tf archive
+)"
+echo label01.at:22 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file foo
+genfile --file bar
+tar -cf archive --label=Test foo bar
+tar tf archive
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file foo
+genfile --file bar
+tar -cf archive --label=Test foo bar
+tar tf archive
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Test
+foo
+bar
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label01.at:22"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label01.at:22:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
 export TAR_OPTIONS
 rm -rf *
 
@@ -15220,17 +15924,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_32
-#AT_START_33
-# 33. label02.at:19: multi-volume label
+#AT_STOP_41
+#AT_START_42
+# 42. label02.at:19: multi-volume label
 at_setup_line='label02.at:19'
 at_desc="multi-volume label"
-$at_quiet $as_echo_n " 33: $at_desc                             "
+$at_quiet $as_echo_n " 42: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "33. label02.at:19: testing ..."
+  $as_echo "42. label02.at:19: testing ..."
   $at_traceon
 
 
@@ -15308,7 +16012,317 @@ $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/label02.at:22:
+$as_echo "$at_srcdir/label02.at:22:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+)"
+echo label02.at:22 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Test Volume 1
+foo
+bar
+baz
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label02.at:22:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+)"
+echo label02.at:22 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Test Volume 1
+foo
+bar
+baz
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_42
+#AT_START_43
+# 43. label03.at:25: test-label option
+at_setup_line='label03.at:25'
+at_desc="test-label option"
+$at_quiet $as_echo_n " 43: $at_desc                              "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "43. label03.at:25: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label03.at:28:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho \"# Display label\"
+tar --test-label --file=iamanarchive; echo \$?
+decho \"# Display label: unlabeled\"
+tar --test-label --file=unlabeled.tar; echo \$?
+decho \"# Test label: success\"
+tar --test-label --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label: failure\"
+tar --test-label --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: unlabeled\"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo \$?
+decho \"# Test label, verbose: success\"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label, verbose: failure\"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: multiple arguments\"
+tar --test-label --file=iamanarchive a iamalabel b; echo \$?
+decho \"# Test label: wildcards\"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo \$?
+)"
+echo label03.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label03.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label03.at:28:
 mkdir oldgnu
 (cd oldgnu
 TEST_TAR_FORMAT=oldgnu
@@ -15318,13 +16332,413 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho \"# Display label\"
+tar --test-label --file=iamanarchive; echo \$?
+decho \"# Display label: unlabeled\"
+tar --test-label --file=unlabeled.tar; echo \$?
+decho \"# Test label: success\"
+tar --test-label --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label: failure\"
+tar --test-label --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: unlabeled\"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo \$?
+decho \"# Test label, verbose: success\"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label, verbose: failure\"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: multiple arguments\"
+tar --test-label --file=iamanarchive a iamalabel b; echo \$?
+decho \"# Test label: wildcards\"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo \$?
+)"
+echo label03.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label03.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label03.at:28:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho \"# Display label\"
+tar --test-label --file=iamanarchive; echo \$?
+decho \"# Display label: unlabeled\"
+tar --test-label --file=unlabeled.tar; echo \$?
+decho \"# Test label: success\"
+tar --test-label --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label: failure\"
+tar --test-label --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: unlabeled\"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo \$?
+decho \"# Test label, verbose: success\"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label, verbose: failure\"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: multiple arguments\"
+tar --test-label --file=iamanarchive a iamalabel b; echo \$?
+decho \"# Test label: wildcards\"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo \$?
+)"
+echo label03.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label03.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_43
+#AT_START_44
+# 44. label04.at:25: label with non-create option
+at_setup_line='label04.at:25'
+at_desc="label with non-create option"
+$at_quiet $as_echo_n " 44: $at_desc                   "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "44. label04.at:25: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label04.at:28:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive --label='New volume' file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive --label='New volume' file
 )"
-echo label02.at:22 >"$at_check_line_file"
+echo label04.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Volume \`New volume' does not match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label04.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label04.at:28:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive --label='New volume' file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive --label='New volume' file
+)"
+echo label04.at:28 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -15338,11 +16752,13 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15356,29 +16772,37 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Test Volume 1
-foo
-bar
-baz
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Volume \`New volume' does not match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+at_func_check_status 0 $at_status "$at_srcdir/label04.at:28"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/label02.at:22:
+$as_echo "$at_srcdir/label04.at:28:
 mkdir posix
 (cd posix
 TEST_TAR_FORMAT=posix
@@ -15388,13 +16812,15 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive --label='New volume' file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive --label='New volume' file
 )"
-echo label02.at:22 >"$at_check_line_file"
+echo label04.at:28 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -15408,11 +16834,13 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15426,23 +16854,31 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Test Volume 1
-foo
-bar
-baz
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Volume \`New volume' does not match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+at_func_check_status 0 $at_status "$at_srcdir/label04.at:28"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -15454,17 +16890,287 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_33
-#AT_START_34
-# 34. backup01.at:33: extracting existing dir with --backup
+#AT_STOP_44
+#AT_START_45
+# 45. label05.at:22: label with non-create option
+at_setup_line='label05.at:22'
+at_desc="label with non-create option"
+$at_quiet $as_echo_n " 45: $at_desc                   "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "45. label05.at:22: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label05.at:25:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive file
+)"
+echo label05.at:25 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Archive not labeled to match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label05.at:25"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label05.at:25:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive file
+)"
+echo label05.at:25 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Archive not labeled to match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label05.at:25"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label05.at:25:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive file
+)"
+echo label05.at:25 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Archive not labeled to match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label05.at:25"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_45
+#AT_START_46
+# 46. backup01.at:33: extracting existing dir with --backup
 at_setup_line='backup01.at:33'
 at_desc="extracting existing dir with --backup"
-$at_quiet $as_echo_n " 34: $at_desc          "
+$at_quiet $as_echo_n " 46: $at_desc          "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "34. backup01.at:33: testing ..."
+  $as_echo "46. backup01.at:33: testing ..."
   $at_traceon
 
 
@@ -15484,7 +17190,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15502,7 +17208,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15518,7 +17224,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15548,7 +17254,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15566,7 +17272,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15582,7 +17288,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15612,7 +17318,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15630,7 +17336,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15646,7 +17352,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15676,7 +17382,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15694,7 +17400,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15710,7 +17416,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15740,7 +17446,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15758,7 +17464,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15774,7 +17480,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15798,16 +17504,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_34
-#AT_START_35
-# 35. gzip.at:23: gzip
+#AT_STOP_46
+#AT_START_47
+# 47. gzip.at:23: gzip
 at_setup_line='gzip.at:23'
 at_desc="gzip"
-$at_quiet $as_echo_n " 35: $at_desc                                           "
+$at_quiet $as_echo_n " 47: $at_desc                                           "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "35. gzip.at:23: testing ..."
+  $as_echo "47. gzip.at:23: testing ..."
   $at_traceon
 
 
@@ -15819,7 +17525,10 @@ $as_echo "$at_srcdir/gzip.at:28:
 
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=\$?
+sed -n '/^tar:/p' err >&2
+exit \$RC
 "
 echo gzip.at:28 >"$at_check_line_file"
 
@@ -15829,7 +17538,10 @@ if { echo 'Not enabling shell tracing (command contains an embedded newline)'
 
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=$?
+sed -n '/^tar:/p' err >&2
+exit $RC
  ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15837,14 +17549,15 @@ else
 
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=$?
+sed -n '/^tar:/p' err >&2
+exit $RC
  ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "
-gzip: stdin: unexpected end of file
-tar: Child returned status 1
+echo >>"$at_stderr"; $as_echo "tar: Child returned status 1
 tar: Error is not recoverable: exiting now
 " | \
   $at_diff - "$at_stderr" || at_failed=:
@@ -15859,17 +17572,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_35
-#AT_START_36
-# 36. incremental.at:23: incremental
+#AT_STOP_47
+#AT_START_48
+# 48. incremental.at:23: incremental
 at_setup_line='incremental.at:23'
 at_desc="incremental"
-$at_quiet $as_echo_n " 36: $at_desc                                    "
+$at_quiet $as_echo_n " 48: $at_desc                                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "36. incremental.at:23: testing ..."
+  $as_echo "48. incremental.at:23: testing ..."
   $at_traceon
 
 
@@ -16273,17 +17986,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_36
-#AT_START_37
-# 37. incr01.at:27: restore broken symlinks from incremental
+#AT_STOP_48
+#AT_START_49
+# 49. incr01.at:27: restore broken symlinks from incremental
 at_setup_line='incr01.at:27'
 at_desc="restore broken symlinks from incremental"
-$at_quiet $as_echo_n " 37: $at_desc       "
+$at_quiet $as_echo_n " 49: $at_desc       "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "37. incr01.at:27: testing ..."
+  $as_echo "49. incr01.at:27: testing ..."
   $at_traceon
 
 
@@ -16309,9 +18022,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 )"
 echo incr01.at:30 >"$at_check_line_file"
 
@@ -16335,9 +18048,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -16359,9 +18072,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -16398,9 +18111,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 )"
 echo incr01.at:30 >"$at_check_line_file"
 
@@ -16424,9 +18137,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -16448,9 +18161,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -16487,9 +18200,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 )"
 echo incr01.at:30 >"$at_check_line_file"
 
@@ -16513,9 +18226,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -16537,9 +18250,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -16564,17 +18277,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_37
-#AT_START_38
-# 38. incr02.at:32: restoring timestamps from incremental
+#AT_STOP_49
+#AT_START_50
+# 50. incr02.at:32: restoring timestamps from incremental
 at_setup_line='incr02.at:32'
 at_desc="restoring timestamps from incremental"
-$at_quiet $as_echo_n " 38: $at_desc          "
+$at_quiet $as_echo_n " 50: $at_desc          "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "38. incr02.at:32: testing ..."
+  $as_echo "50. incr02.at:32: testing ..."
   $at_traceon
 
 
@@ -17044,17 +18757,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_38
-#AT_START_39
-# 39. listed01.at:26: --listed for individual files
+#AT_STOP_50
+#AT_START_51
+# 51. listed01.at:26: --listed for individual files
 at_setup_line='listed01.at:26'
 at_desc="--listed for individual files"
-$at_quiet $as_echo_n " 39: $at_desc                  "
+$at_quiet $as_echo_n " 51: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "39. listed01.at:26: testing ..."
+  $as_echo "51. listed01.at:26: testing ..."
   $at_traceon
 
 
@@ -17314,17 +19027,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_39
-#AT_START_40
-# 40. listed02.at:28: working --listed
+#AT_STOP_51
+#AT_START_52
+# 52. listed02.at:28: working --listed
 at_setup_line='listed02.at:28'
 at_desc="working --listed"
-$at_quiet $as_echo_n " 40: $at_desc                               "
+$at_quiet $as_echo_n " 52: $at_desc                               "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "40. listed02.at:28: testing ..."
+  $as_echo "52. listed02.at:28: testing ..."
   $at_traceon
 
 
@@ -17617,288 +19330,424 @@ at_func_check_status 0 $at_status "$at_srcdir/listed02.at:31"
 $at_failed && at_func_log_failure
 $at_traceon; }
 
-              { $at_traceoff
-$as_echo "$at_srcdir/listed02.at:31:
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H oldgnu\"
-export TAR_OPTIONS
-rm -rf *
-
+              { $at_traceoff
+$as_echo "$at_srcdir/listed02.at:31:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+test -z "`sort < /dev/null 2>&1`" || exit 77
+
+echo Create directories
+
+mkdir tart
+sleep 1
+mkdir tart/c0
+sleep 1
+mkdir tart/c1
+sleep 1
+
+for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
+do
+  echo File \$file > \$file
+  sleep 1
+done
+
+sleep 1
+echo Creating main archive
+echo >&2 \"Creating main archive\"
+tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
+
+# The above prints two lines to stderr announcing the new directories c0 and c1.
+# Ensure that they appear in this script's stderr in sorted order.
+sort err 1>&2; rm -f err
+
+sleep 1
+echo Modifying filesystem
+rm tart/a1
+
+mv tart/b1 tart/b2
+mv tart/c1 tart/c2
+touch tart/c2/ca3
+
+echo Directory contents
+find tart -print | sort 2>/dev/null
+
+sleep 1
+echo Creating incremental archive
+echo >&2 \"Creating incremental archive\"
+cp -p tart.incr1 tart.incr2
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+
+sleep 1
+
+rm -rf tart/*
+echo Extracting main archive
+echo >&2 \"Extracting main archive\"
+tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
+echo Extracting incremental archive
+# This command should produce three messages about deletion
+# of the existing files, that may appear in any order. Piping
+# to sort makes sure we don't depend on any particular ordering.
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+
+echo Final files:
+find tart -print | sort 2>/dev/null
+)"
+echo listed02.at:31 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+test -z "`sort < /dev/null 2>&1`" || exit 77
+
+echo Create directories
+
+mkdir tart
+sleep 1
+mkdir tart/c0
+sleep 1
+mkdir tart/c1
+sleep 1
+
+for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
+do
+  echo File $file > $file
+  sleep 1
+done
+
+sleep 1
+echo Creating main archive
+echo >&2 "Creating main archive"
+tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
+
+# The above prints two lines to stderr announcing the new directories c0 and c1.
+# Ensure that they appear in this script's stderr in sorted order.
+sort err 1>&2; rm -f err
+
+sleep 1
+echo Modifying filesystem
+rm tart/a1
+
+mv tart/b1 tart/b2
+mv tart/c1 tart/c2
+touch tart/c2/ca3
+
+echo Directory contents
+find tart -print | sort 2>/dev/null
+
+sleep 1
+echo Creating incremental archive
+echo >&2 "Creating incremental archive"
+cp -p tart.incr1 tart.incr2
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+
+sleep 1
+
+rm -rf tart/*
+echo Extracting main archive
+echo >&2 "Extracting main archive"
+tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
+echo Extracting incremental archive
+# This command should produce three messages about deletion
+# of the existing files, that may appear in any order. Piping
+# to sort makes sure we don't depend on any particular ordering.
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+
+echo Final files:
+find tart -print | sort 2>/dev/null
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+test -z "`sort < /dev/null 2>&1`" || exit 77
+
+echo Create directories
+
+mkdir tart
+sleep 1
+mkdir tart/c0
+sleep 1
+mkdir tart/c1
+sleep 1
+
+for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
+do
+  echo File $file > $file
+  sleep 1
+done
+
+sleep 1
+echo Creating main archive
+echo >&2 "Creating main archive"
+tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
+
+# The above prints two lines to stderr announcing the new directories c0 and c1.
+# Ensure that they appear in this script's stderr in sorted order.
+sort err 1>&2; rm -f err
+
+sleep 1
+echo Modifying filesystem
+rm tart/a1
+
+mv tart/b1 tart/b2
+mv tart/c1 tart/c2
+touch tart/c2/ca3
+
+echo Directory contents
+find tart -print | sort 2>/dev/null
+
+sleep 1
+echo Creating incremental archive
+echo >&2 "Creating incremental archive"
+cp -p tart.incr1 tart.incr2
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+
+sleep 1
+
+rm -rf tart/*
+echo Extracting main archive
+echo >&2 "Extracting main archive"
+tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
+echo Extracting incremental archive
+# This command should produce three messages about deletion
+# of the existing files, that may appear in any order. Piping
+# to sort makes sure we don't depend on any particular ordering.
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+
+echo Final files:
+find tart -print | sort 2>/dev/null
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "Creating main archive
+tar: tart/c0: Directory is new
+tar: tart/c1: Directory is new
+tar: tart: Directory is new
+Creating incremental archive
+tar: tart/c2: Directory has been renamed from \`tart/c1'
+Extracting main archive
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Create directories
+Creating main archive
+tart/
+tart/c0/
+tart/c1/
+tart/a1
+tart/b1
+tart/c0/cq1
+tart/c0/cq2
+tart/c1/ca1
+tart/c1/ca2
+Modifying filesystem
+Directory contents
+tart
+tart/b2
+tart/c0
+tart/c0/cq1
+tart/c0/cq2
+tart/c2
+tart/c2/ca1
+tart/c2/ca2
+tart/c2/ca3
+Creating incremental archive
+tart/
+tart/c0/
+tart/c2/
+tart/b2
+tart/c2/ca3
+Extracting main archive
+tart/
+tart/c0/
+tart/c1/
+tart/a1
+tart/b1
+tart/c0/cq1
+tart/c0/cq2
+tart/c1/ca1
+tart/c1/ca2
+Extracting incremental archive
+tar: Deleting \`tart/a1'
+tar: Deleting \`tart/b1'
+tart/
+tart/b2
+tart/c0/
+tart/c2/
+tart/c2/ca3
+Final files:
+tart
+tart/b2
+tart/c0
+tart/c0/cq1
+tart/c0/cq2
+tart/c2
+tart/c2/ca1
+tart/c2/ca2
+tart/c2/ca3
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/listed02.at:31"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
 
-test -z "`sort < /dev/null 2>&1`" || exit 77
 
-echo Create directories
 
-mkdir tart
-sleep 1
-mkdir tart/c0
-sleep 1
-mkdir tart/c1
-sleep 1
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_52
+#AT_START_53
+# 53. listed03.at:22: incremental dump when the parent directory is unreadable
+at_setup_line='listed03.at:22'
+at_desc="incremental dump when the parent directory is unreadable"
+$at_quiet $as_echo_n " 53: $at_desc"
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "53. listed03.at:22: testing ..."
+  $at_traceon
 
-for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
-do
-  echo File \$file > \$file
-  sleep 1
-done
 
-sleep 1
-echo Creating main archive
-echo >&2 \"Creating main archive\"
-tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
 
-# The above prints two lines to stderr announcing the new directories c0 and c1.
-# Ensure that they appear in this script's stderr in sorted order.
-sort err 1>&2; rm -f err
 
-sleep 1
-echo Modifying filesystem
-rm tart/a1
 
-mv tart/b1 tart/b2
-mv tart/c1 tart/c2
-touch tart/c2/ca3
+  { $at_traceoff
+$as_echo "$at_srcdir/listed03.at:25:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
 
-echo Directory contents
-find tart -print | sort 2>/dev/null
 
-sleep 1
-echo Creating incremental archive
-echo >&2 \"Creating incremental archive\"
-cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
 
-sleep 1
 
-rm -rf tart/*
-echo Extracting main archive
-echo >&2 \"Extracting main archive\"
-tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
-echo Extracting incremental archive
-# This command should produce three messages about deletion
-# of the existing files, that may appear in any order. Piping
-# to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
 
-echo Final files:
-find tart -print | sort 2>/dev/null
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=\$?
+chmod a+r ..
+exit \$status
 )"
-echo listed02.at:31 >"$at_check_line_file"
+echo listed03.at:25 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
   ( $at_traceon;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
+TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
 
-test -z "`sort < /dev/null 2>&1`" || exit 77
-
-echo Create directories
-
-mkdir tart
-sleep 1
-mkdir tart/c0
-sleep 1
-mkdir tart/c1
-sleep 1
-
-for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
-do
-  echo File $file > $file
-  sleep 1
-done
-
-sleep 1
-echo Creating main archive
-echo >&2 "Creating main archive"
-tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
-
-# The above prints two lines to stderr announcing the new directories c0 and c1.
-# Ensure that they appear in this script's stderr in sorted order.
-sort err 1>&2; rm -f err
-
-sleep 1
-echo Modifying filesystem
-rm tart/a1
-
-mv tart/b1 tart/b2
-mv tart/c1 tart/c2
-touch tart/c2/ca3
-
-echo Directory contents
-find tart -print | sort 2>/dev/null
-
-sleep 1
-echo Creating incremental archive
-echo >&2 "Creating incremental archive"
-cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
 
-sleep 1
 
-rm -rf tart/*
-echo Extracting main archive
-echo >&2 "Extracting main archive"
-tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
-echo Extracting incremental archive
-# This command should produce three messages about deletion
-# of the existing files, that may appear in any order. Piping
-# to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
 
-echo Final files:
-find tart -print | sort 2>/dev/null
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=$?
+chmod a+r ..
+exit $status
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
+TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
 
-test -z "`sort < /dev/null 2>&1`" || exit 77
-
-echo Create directories
-
-mkdir tart
-sleep 1
-mkdir tart/c0
-sleep 1
-mkdir tart/c1
-sleep 1
-
-for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
-do
-  echo File $file > $file
-  sleep 1
-done
-
-sleep 1
-echo Creating main archive
-echo >&2 "Creating main archive"
-tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
-
-# The above prints two lines to stderr announcing the new directories c0 and c1.
-# Ensure that they appear in this script's stderr in sorted order.
-sort err 1>&2; rm -f err
-
-sleep 1
-echo Modifying filesystem
-rm tart/a1
-
-mv tart/b1 tart/b2
-mv tart/c1 tart/c2
-touch tart/c2/ca3
-
-echo Directory contents
-find tart -print | sort 2>/dev/null
-
-sleep 1
-echo Creating incremental archive
-echo >&2 "Creating incremental archive"
-cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
 
-sleep 1
 
-rm -rf tart/*
-echo Extracting main archive
-echo >&2 "Extracting main archive"
-tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
-echo Extracting incremental archive
-# This command should produce three messages about deletion
-# of the existing files, that may appear in any order. Piping
-# to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
 
-echo Final files:
-find tart -print | sort 2>/dev/null
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=$?
+chmod a+r ..
+exit $status
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "Creating main archive
-tar: tart/c0: Directory is new
-tar: tart/c1: Directory is new
-tar: tart: Directory is new
-Creating incremental archive
-tar: tart/c2: Directory has been renamed from \`tart/c1'
-Extracting main archive
+echo >>"$at_stderr"; $as_echo "tar: a: Directory is new
 " | \
   $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Create directories
-Creating main archive
-tart/
-tart/c0/
-tart/c1/
-tart/a1
-tart/b1
-tart/c0/cq1
-tart/c0/cq2
-tart/c1/ca1
-tart/c1/ca2
-Modifying filesystem
-Directory contents
-tart
-tart/b2
-tart/c0
-tart/c0/cq1
-tart/c0/cq2
-tart/c2
-tart/c2/ca1
-tart/c2/ca2
-tart/c2/ca3
-Creating incremental archive
-tart/
-tart/c0/
-tart/c2/
-tart/b2
-tart/c2/ca3
-Extracting main archive
-tart/
-tart/c0/
-tart/c1/
-tart/a1
-tart/b1
-tart/c0/cq1
-tart/c0/cq2
-tart/c1/ca1
-tart/c1/ca2
-Extracting incremental archive
-tar: Deleting \`tart/a1'
-tar: Deleting \`tart/b1'
-tart/
-tart/b2
-tart/c0/
-tart/c2/
-tart/c2/ca3
-Final files:
-tart
-tart/b2
-tart/c0
-tart/c0/cq1
-tart/c0/cq2
-tart/c2
-tart/c2/ca1
-tart/c2/ca2
-tart/c2/ca3
+echo >>"$at_stdout"; $as_echo "a/
+a/file
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/listed02.at:31"
+at_func_check_status 0 $at_status "$at_srcdir/listed03.at:25"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -17910,17 +19759,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_40
-#AT_START_41
-# 41. incr03.at:28: renamed files in incrementals
+#AT_STOP_53
+#AT_START_54
+# 54. incr03.at:28: renamed files in incrementals
 at_setup_line='incr03.at:28'
 at_desc="renamed files in incrementals"
-$at_quiet $as_echo_n " 41: $at_desc                  "
+$at_quiet $as_echo_n " 54: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "41. incr03.at:28: testing ..."
+  $as_echo "54. incr03.at:28: testing ..."
   $at_traceon
 
 
@@ -17960,11 +19809,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 )"
 echo incr03.at:31 >"$at_check_line_file"
@@ -18003,11 +19852,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -18044,11 +19893,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -18110,11 +19959,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 )"
 echo incr03.at:31 >"$at_check_line_file"
@@ -18153,11 +20002,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -18194,11 +20043,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -18260,11 +20109,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 )"
 echo incr03.at:31 >"$at_check_line_file"
@@ -18303,11 +20152,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -18344,11 +20193,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -18384,17 +20233,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_41
-#AT_START_42
-# 42. incr04.at:29: proper icontents initialization
+#AT_STOP_54
+#AT_START_55
+# 55. incr04.at:29: proper icontents initialization
 at_setup_line='incr04.at:29'
 at_desc="proper icontents initialization"
-$at_quiet $as_echo_n " 42: $at_desc                "
+$at_quiet $as_echo_n " 55: $at_desc                "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "42. incr04.at:29: testing ..."
+  $as_echo "55. incr04.at:29: testing ..."
   $at_traceon
 
 
@@ -19136,17 +20985,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_42
-#AT_START_43
-# 43. incr05.at:19: incremental dumps with -C
+#AT_STOP_55
+#AT_START_56
+# 56. incr05.at:19: incremental dumps with -C
 at_setup_line='incr05.at:19'
 at_desc="incremental dumps with -C"
-$at_quiet $as_echo_n " 43: $at_desc                      "
+$at_quiet $as_echo_n " 56: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "43. incr05.at:19: testing ..."
+  $as_echo "56. incr05.at:19: testing ..."
   $at_traceon
 
 
@@ -19430,17 +21279,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_43
-#AT_START_44
-# 44. incr06.at:19: incremental dumps of nested directories
+#AT_STOP_56
+#AT_START_57
+# 57. incr06.at:19: incremental dumps of nested directories
 at_setup_line='incr06.at:19'
 at_desc="incremental dumps of nested directories"
-$at_quiet $as_echo_n " 44: $at_desc        "
+$at_quiet $as_echo_n " 57: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "44. incr06.at:19: testing ..."
+  $as_echo "57. incr06.at:19: testing ..."
   $at_traceon
 
 
@@ -19868,17 +21717,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_44
-#AT_START_45
-# 45. filerem01.at:34: file removed as we read it (ca. 22 seconds)
+#AT_STOP_57
+#AT_START_58
+# 58. filerem01.at:34: file removed as we read it (ca. 22 seconds)
 at_setup_line='filerem01.at:34'
 at_desc="file removed as we read it (ca. 22 seconds)"
-$at_quiet $as_echo_n " 45: $at_desc    "
+$at_quiet $as_echo_n " 58: $at_desc    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "45. filerem01.at:34: testing ..."
+  $as_echo "58. filerem01.at:34: testing ..."
   $at_traceon
 
 
@@ -20093,17 +21942,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_45
-#AT_START_46
-# 46. filerem02.at:24: toplevel file removed (ca. 24 seconds)
+#AT_STOP_58
+#AT_START_59
+# 59. filerem02.at:24: toplevel file removed (ca. 24 seconds)
 at_setup_line='filerem02.at:24'
 at_desc="toplevel file removed (ca. 24 seconds)"
-$at_quiet $as_echo_n " 46: $at_desc         "
+$at_quiet $as_echo_n " 59: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "46. filerem02.at:24: testing ..."
+  $as_echo "59. filerem02.at:24: testing ..."
   $at_traceon
 
 
@@ -20183,11 +22032,7 @@ genfile --run --checkpoint=3 --exec 'rm -rf dir2' -- \
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: dir2: Cannot stat: No such file or directory
-tar: dir2/file1: File removed before we read it
-tar: Exiting with failure status due to previous errors
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
 at_func_check_status 2 $at_status "$at_srcdir/filerem02.at:27"
 
@@ -20267,11 +22112,7 @@ genfile --run --checkpoint=3 --exec 'rm -rf dir2' -- \
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: dir2: Cannot stat: No such file or directory
-tar: dir2/file1: File removed before we read it
-tar: Exiting with failure status due to previous errors
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
 at_func_check_status 2 $at_status "$at_srcdir/filerem02.at:27"
 
@@ -20281,23 +22122,26 @@ $at_traceon; }
 
 
 
+# Ignore stdout and stderr because their contents depend on
+# the file system implementation.
+
 # Timing information: see filerem01.at
 
   $at_traceoff
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_46
-#AT_START_47
-# 47. rename01.at:24: renamed dirs in incrementals
+#AT_STOP_59
+#AT_START_60
+# 60. rename01.at:24: renamed dirs in incrementals
 at_setup_line='rename01.at:24'
 at_desc="renamed dirs in incrementals"
-$at_quiet $as_echo_n " 47: $at_desc                   "
+$at_quiet $as_echo_n " 60: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "47. rename01.at:24: testing ..."
+  $as_echo "60. rename01.at:24: testing ..."
   $at_traceon
 
 
@@ -20806,17 +22650,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_47
-#AT_START_48
-# 48. rename02.at:24: move between hierarchies
+#AT_STOP_60
+#AT_START_61
+# 61. rename02.at:24: move between hierarchies
 at_setup_line='rename02.at:24'
 at_desc="move between hierarchies"
-$at_quiet $as_echo_n " 48: $at_desc                       "
+$at_quiet $as_echo_n " 61: $at_desc                       "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "48. rename02.at:24: testing ..."
+  $as_echo "61. rename02.at:24: testing ..."
   $at_traceon
 
 
@@ -20856,14 +22700,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -20904,14 +22748,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -20950,14 +22794,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21044,14 +22888,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21092,14 +22936,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21138,14 +22982,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21232,14 +23076,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21280,14 +23124,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21326,14 +23170,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21394,17 +23238,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_48
-#AT_START_49
-# 49. rename03.at:23: cyclic renames
+#AT_STOP_61
+#AT_START_62
+# 62. rename03.at:23: cyclic renames
 at_setup_line='rename03.at:23'
 at_desc="cyclic renames"
-$at_quiet $as_echo_n " 49: $at_desc                                 "
+$at_quiet $as_echo_n " 62: $at_desc                                 "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "49. rename03.at:23: testing ..."
+  $as_echo "62. rename03.at:23: testing ..."
   $at_traceon
 
 
@@ -21457,13 +23301,13 @@ echo \"Second dump\" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21517,13 +23361,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21575,13 +23419,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21694,13 +23538,13 @@ echo \"Second dump\" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21754,13 +23598,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21812,13 +23656,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21931,13 +23775,13 @@ echo \"Second dump\" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21991,13 +23835,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -22049,13 +23893,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -22129,17 +23973,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_49
-#AT_START_50
-# 50. rename04.at:27: renamed directory containing subdirectories
+#AT_STOP_62
+#AT_START_63
+# 63. rename04.at:27: renamed directory containing subdirectories
 at_setup_line='rename04.at:27'
 at_desc="renamed directory containing subdirectories"
-$at_quiet $as_echo_n " 50: $at_desc    "
+$at_quiet $as_echo_n " 63: $at_desc    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "50. rename04.at:27: testing ..."
+  $as_echo "63. rename04.at:27: testing ..."
   $at_traceon
 
 
@@ -22603,17 +24447,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_50
-#AT_START_51
-# 51. rename05.at:24: renamed subdirectories
+#AT_STOP_63
+#AT_START_64
+# 64. rename05.at:24: renamed subdirectories
 at_setup_line='rename05.at:24'
 at_desc="renamed subdirectories"
-$at_quiet $as_echo_n " 51: $at_desc                         "
+$at_quiet $as_echo_n " 64: $at_desc                         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "51. rename05.at:24: testing ..."
+  $as_echo "64. rename05.at:24: testing ..."
   $at_traceon
 
 
@@ -22653,11 +24497,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 )"
 echo rename05.at:27 >"$at_check_line_file"
@@ -22696,11 +24540,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -22737,11 +24581,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -22806,11 +24650,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 )"
 echo rename05.at:27 >"$at_check_line_file"
@@ -22849,11 +24693,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -22890,11 +24734,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -22959,11 +24803,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 )"
 echo rename05.at:27 >"$at_check_line_file"
@@ -23002,11 +24846,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23043,11 +24887,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23086,17 +24930,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_51
-#AT_START_52
-# 52. chtype.at:27: changed file types in incrementals
+#AT_STOP_64
+#AT_START_65
+# 65. chtype.at:27: changed file types in incrementals
 at_setup_line='chtype.at:27'
 at_desc="changed file types in incrementals"
-$at_quiet $as_echo_n " 52: $at_desc             "
+$at_quiet $as_echo_n " 65: $at_desc             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "52. chtype.at:27: testing ..."
+  $as_echo "65. chtype.at:27: testing ..."
   $at_traceon
 
 
@@ -23139,9 +24983,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 )"
 echo chtype.at:30 >"$at_check_line_file"
@@ -23183,9 +25027,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23225,9 +25069,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23286,9 +25130,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 )"
 echo chtype.at:30 >"$at_check_line_file"
@@ -23330,9 +25174,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23372,9 +25216,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23433,9 +25277,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 )"
 echo chtype.at:30 >"$at_check_line_file"
@@ -23477,9 +25321,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23519,9 +25363,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23551,17 +25395,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_52
-#AT_START_53
-# 53. ignfail.at:23: ignfail
+#AT_STOP_65
+#AT_START_66
+# 66. ignfail.at:23: ignfail
 at_setup_line='ignfail.at:23'
 at_desc="ignfail"
-$at_quiet $as_echo_n " 53: $at_desc                                        "
+$at_quiet $as_echo_n " 66: $at_desc                                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "53. ignfail.at:23: testing ..."
+  $as_echo "66. ignfail.at:23: testing ..."
   $at_traceon
 
 
@@ -24480,17 +26324,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_53
-#AT_START_54
-# 54. link01.at:33: link count gt 2
+#AT_STOP_66
+#AT_START_67
+# 67. link01.at:33: link count gt 2
 at_setup_line='link01.at:33'
 at_desc="link count gt 2"
-$at_quiet $as_echo_n " 54: $at_desc                                "
+$at_quiet $as_echo_n " 67: $at_desc                                "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "54. link01.at:33: testing ..."
+  $as_echo "67. link01.at:33: testing ..."
   $at_traceon
 
 
@@ -24517,7 +26361,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24544,7 +26388,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24569,7 +26413,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24605,7 +26449,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24632,7 +26476,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24657,7 +26501,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24693,7 +26537,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24720,7 +26564,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24745,7 +26589,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24781,7 +26625,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24808,7 +26652,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24833,7 +26677,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24869,7 +26713,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24896,7 +26740,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24921,7 +26765,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24944,17 +26788,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_54
-#AT_START_55
-# 55. link02.at:32: preserve hard links with --remove-files
+#AT_STOP_67
+#AT_START_68
+# 68. link02.at:32: preserve hard links with --remove-files
 at_setup_line='link02.at:32'
 at_desc="preserve hard links with --remove-files"
-$at_quiet $as_echo_n " 55: $at_desc        "
+$at_quiet $as_echo_n " 68: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "55. link02.at:32: testing ..."
+  $as_echo "68. link02.at:32: testing ..."
   $at_traceon
 
 
@@ -24972,9 +26816,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -24992,9 +26836,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25010,9 +26854,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25041,9 +26885,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25061,9 +26905,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25079,9 +26923,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25110,9 +26954,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25130,9 +26974,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25148,9 +26992,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25179,9 +27023,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25199,9 +27043,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25217,9 +27061,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25248,9 +27092,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25268,9 +27112,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25286,9 +27130,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25313,17 +27157,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_55
-#AT_START_56
-# 56. link03.at:24: working -l with --remove-files
+#AT_STOP_68
+#AT_START_69
+# 69. link03.at:24: working -l with --remove-files
 at_setup_line='link03.at:24'
 at_desc="working -l with --remove-files"
-$at_quiet $as_echo_n " 56: $at_desc                 "
+$at_quiet $as_echo_n " 69: $at_desc                 "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "56. link03.at:24: testing ..."
+  $as_echo "69. link03.at:24: testing ..."
   $at_traceon
 
 
@@ -25344,17 +27188,17 @@ rm -rf *
 
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.1
 tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.2
 tar -c -f archive.2 -l --remove-files file1 file2 file3
@@ -25376,17 +27220,17 @@ rm -rf *
 
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.1
 tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.2
 tar -c -f archive.2 -l --remove-files file1 file2 file3
@@ -25406,17 +27250,453 @@ rm -rf *
 
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H ustar\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H ustar"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H ustar"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.1
 tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.2
 tar -c -f archive.2 -l --remove-files file1 file2 file3
@@ -25438,11 +27718,144 @@ file1
   $at_diff - "$at_stdout" || at_failed=:
 at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
 
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_69
+#AT_START_70
+# 70. link04.at:29: link count is 1 but multiple occurrences
+at_setup_line='link04.at:29'
+at_desc="link count is 1 but multiple occurrences"
+$at_quiet $as_echo_n " 70: $at_desc       "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "70. link04.at:29: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/link04.at:32:
+mkdir v7
+(cd v7
+TEST_TAR_FORMAT=v7
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H v7\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+)"
+echo link04.at:32 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir v7
+(cd v7
+TEST_TAR_FORMAT=v7
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H v7"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir v7
+(cd v7
+TEST_TAR_FORMAT=v7
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H v7"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
+
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir oldgnu
 (cd oldgnu
 TEST_TAR_FORMAT=oldgnu
@@ -25451,26 +27864,25 @@ TAR_OPTIONS=\"-H oldgnu\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25483,24 +27895,23 @@ TAR_OPTIONS="-H oldgnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25513,45 +27924,47 @@ TAR_OPTIONS="-H oldgnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir ustar
 (cd ustar
 TEST_TAR_FORMAT=ustar
@@ -25560,26 +27973,25 @@ TAR_OPTIONS=\"-H ustar\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25592,24 +28004,23 @@ TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25622,45 +28033,47 @@ TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+echo ==
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir posix
 (cd posix
 TEST_TAR_FORMAT=posix
@@ -25669,26 +28082,25 @@ TAR_OPTIONS=\"-H posix\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
-
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25701,24 +28113,23 @@ TAR_OPTIONS="-H posix"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25731,45 +28142,47 @@ TAR_OPTIONS="-H posix"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir gnu
 (cd gnu
 TEST_TAR_FORMAT=gnu
@@ -25778,26 +28191,25 @@ TAR_OPTIONS=\"-H gnu\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25810,24 +28222,23 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25840,39 +28251,41 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -25884,17 +28297,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_56
-#AT_START_57
-# 57. longv7.at:24: long names in V7 archives
+#AT_STOP_70
+#AT_START_71
+# 71. longv7.at:24: long names in V7 archives
 at_setup_line='longv7.at:24'
 at_desc="long names in V7 archives"
-$at_quiet $as_echo_n " 57: $at_desc                      "
+$at_quiet $as_echo_n " 71: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "57. longv7.at:24: testing ..."
+  $as_echo "71. longv7.at:24: testing ..."
   $at_traceon
 
 
@@ -25982,17 +28395,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_57
-#AT_START_58
-# 58. long01.at:28: long file names divisible by block size
+#AT_STOP_71
+#AT_START_72
+# 72. long01.at:28: long file names divisible by block size
 at_setup_line='long01.at:28'
 at_desc="long file names divisible by block size"
-$at_quiet $as_echo_n " 58: $at_desc        "
+$at_quiet $as_echo_n " 72: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "58. long01.at:28: testing ..."
+  $as_echo "72. long01.at:28: testing ..."
   $at_traceon
 
 
@@ -26140,17 +28553,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_58
-#AT_START_59
-# 59. lustar01.at:21: ustar: unsplittable file name
+#AT_STOP_72
+#AT_START_73
+# 73. lustar01.at:21: ustar: unsplittable file name
 at_setup_line='lustar01.at:21'
 at_desc="ustar: unsplittable file name"
-$at_quiet $as_echo_n " 59: $at_desc                  "
+$at_quiet $as_echo_n " 73: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "59. lustar01.at:21: testing ..."
+  $as_echo "73. lustar01.at:21: testing ..."
   $at_traceon
 
 
@@ -26222,17 +28635,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_59
-#AT_START_60
-# 60. lustar02.at:21: ustar: unsplittable path name
+#AT_STOP_73
+#AT_START_74
+# 74. lustar02.at:21: ustar: unsplittable path name
 at_setup_line='lustar02.at:21'
 at_desc="ustar: unsplittable path name"
-$at_quiet $as_echo_n " 60: $at_desc                  "
+$at_quiet $as_echo_n " 74: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "60. lustar02.at:21: testing ..."
+  $as_echo "74. lustar02.at:21: testing ..."
   $at_traceon
 
 
@@ -26311,17 +28724,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_60
-#AT_START_61
-# 61. lustar03.at:21: ustar: splitting long names
+#AT_STOP_74
+#AT_START_75
+# 75. lustar03.at:21: ustar: splitting long names
 at_setup_line='lustar03.at:21'
 at_desc="ustar: splitting long names"
-$at_quiet $as_echo_n " 61: $at_desc                    "
+$at_quiet $as_echo_n " 75: $at_desc                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "61. lustar03.at:21: testing ..."
+  $as_echo "75. lustar03.at:21: testing ..."
   $at_traceon
 
 
@@ -26406,17 +28819,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_61
-#AT_START_62
-# 62. multiv01.at:23: multivolume dumps from pipes
+#AT_STOP_75
+#AT_START_76
+# 76. multiv01.at:23: multivolume dumps from pipes
 at_setup_line='multiv01.at:23'
 at_desc="multivolume dumps from pipes"
-$at_quiet $as_echo_n " 62: $at_desc                   "
+$at_quiet $as_echo_n " 76: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "62. multiv01.at:23: testing ..."
+  $as_echo "76. multiv01.at:23: testing ..."
   $at_traceon
 
 
@@ -26460,7 +28873,7 @@ tar -c --multi-volume --tape-length=\$TAPE_LENGTH \\
 mkdir extract-dir-pipe
 dd bs=4096 count=\$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=\$PATH \${TRUSS} tar -f t1-pipe.tar -f - \\
-      -C extract-dir-pipe -x --multi-volume \\
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \\
       --tape-length=\$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26502,7 +28915,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26542,7 +28955,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26591,7 +29004,7 @@ tar -c --multi-volume --tape-length=\$TAPE_LENGTH \\
 mkdir extract-dir-pipe
 dd bs=4096 count=\$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=\$PATH \${TRUSS} tar -f t1-pipe.tar -f - \\
-      -C extract-dir-pipe -x --multi-volume \\
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \\
       --tape-length=\$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26633,7 +29046,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26673,7 +29086,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26722,7 +29135,7 @@ tar -c --multi-volume --tape-length=\$TAPE_LENGTH \\
 mkdir extract-dir-pipe
 dd bs=4096 count=\$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=\$PATH \${TRUSS} tar -f t1-pipe.tar -f - \\
-      -C extract-dir-pipe -x --multi-volume \\
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \\
       --tape-length=\$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26764,7 +29177,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26804,7 +29217,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26827,17 +29240,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_62
-#AT_START_63
-# 63. multiv02.at:28: skipping a straddling member
+#AT_STOP_76
+#AT_START_77
+# 77. multiv02.at:28: skipping a straddling member
 at_setup_line='multiv02.at:28'
 at_desc="skipping a straddling member"
-$at_quiet $as_echo_n " 63: $at_desc                   "
+$at_quiet $as_echo_n " 77: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "63. multiv02.at:28: testing ..."
+  $as_echo "77. multiv02.at:28: testing ..."
   $at_traceon
 
 
@@ -26863,7 +29276,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 )"
 echo multiv02.at:31 >"$at_check_line_file"
 
@@ -26887,7 +29300,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -26909,7 +29322,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -26943,7 +29356,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 )"
 echo multiv02.at:31 >"$at_check_line_file"
 
@@ -26967,7 +29380,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -26989,7 +29402,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -27023,7 +29436,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 )"
 echo multiv02.at:31 >"$at_check_line_file"
 
@@ -27047,7 +29460,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -27069,7 +29482,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -27091,17 +29504,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_63
-#AT_START_64
-# 64. multiv03.at:30: MV archive & long filenames
+#AT_STOP_77
+#AT_START_78
+# 78. multiv03.at:30: MV archive & long filenames
 at_setup_line='multiv03.at:30'
 at_desc="MV archive & long filenames"
-$at_quiet $as_echo_n " 64: $at_desc                    "
+$at_quiet $as_echo_n " 78: $at_desc                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "64. multiv03.at:30: testing ..."
+  $as_echo "78. multiv03.at:30: testing ..."
   $at_traceon
 
 
@@ -27146,7 +29559,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 \$BFILE || exit 1
 
 echo separator-2
 mv \$BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp \$BFILE bfile
 )"
 echo multiv03.at:33 >"$at_check_line_file"
@@ -27190,7 +29603,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -27232,7 +29645,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -27283,7 +29696,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 \$BFILE || exit 1
 
 echo separator-2
 mv \$BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp \$BFILE bfile
 )"
 echo multiv03.at:33 >"$at_check_line_file"
@@ -27327,7 +29740,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -27369,7 +29782,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -27389,17 +29802,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_64
-#AT_START_65
-# 65. multiv04.at:36: split directory members in a MV archive
+#AT_STOP_78
+#AT_START_79
+# 79. multiv04.at:36: split directory members in a MV archive
 at_setup_line='multiv04.at:36'
 at_desc="split directory members in a MV archive"
-$at_quiet $as_echo_n " 65: $at_desc        "
+$at_quiet $as_echo_n " 79: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "65. multiv04.at:36: testing ..."
+  $as_echo "79. multiv04.at:36: testing ..."
   $at_traceon
 
 
@@ -27613,17 +30026,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_65
-#AT_START_66
-# 66. multiv05.at:26: Restoring after an out of sync volume
+#AT_STOP_79
+#AT_START_80
+# 80. multiv05.at:26: Restoring after an out of sync volume
 at_setup_line='multiv05.at:26'
 at_desc="Restoring after an out of sync volume"
-$at_quiet $as_echo_n " 66: $at_desc          "
+$at_quiet $as_echo_n " 80: $at_desc          "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "66. multiv05.at:26: testing ..."
+  $as_echo "80. multiv05.at:26: testing ..."
   $at_traceon
 
 
@@ -27786,17 +30199,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_66
-#AT_START_67
-# 67. multiv06.at:27: Multivolumes with L=record_size
+#AT_STOP_80
+#AT_START_81
+# 81. multiv06.at:27: Multivolumes with L=record_size
 at_setup_line='multiv06.at:27'
 at_desc="Multivolumes with L=record_size"
-$at_quiet $as_echo_n " 67: $at_desc                "
+$at_quiet $as_echo_n " 81: $at_desc                "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "67. multiv06.at:27: testing ..."
+  $as_echo "81. multiv06.at:27: testing ..."
   $at_traceon
 
 
@@ -27958,19 +30371,19 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_67
-#AT_START_68
-# 68. multiv07.at:26: volumes split at an extended header
+#AT_STOP_81
+#AT_START_82
+# 82. multiv07.at:26: volumes split at an extended header
 at_setup_line='multiv07.at:26'
 at_desc="volumes split at an extended header"
-$at_quiet $as_echo_n " 68: $at_desc            "
+$at_quiet $as_echo_n " 82: $at_desc            "
 at_xfail=no
       test -f \$XFAILFILE && at_xfail=yes
       test -f $XFAILFILE && at_xfail=yes
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "68. multiv07.at:26: testing ..."
+  $as_echo "82. multiv07.at:26: testing ..."
   $at_traceon
 
 
@@ -27985,6 +30398,8 @@ tarball_prereq xsplit-1.tar 0e008c84c517e48fbf23ca6a7033cde6 $TEST_DATA_DIR $TES
 test -z "$TEST_DATA_DIR" && exit 77
 tarball_prereq xsplit-2.tar 03150b9852d285458f43734e9e0b9a45 $TEST_DATA_DIR $TEST_DATA_URL || exit 77
 
+exec <&-
+
 cd \$TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
 "
@@ -28001,6 +30416,8 @@ tarball_prereq xsplit-1.tar 0e008c84c517e48fbf23ca6a7033cde6 $TEST_DATA_DIR $TES
 test -z "$TEST_DATA_DIR" && exit 77
 tarball_prereq xsplit-2.tar 03150b9852d285458f43734e9e0b9a45 $TEST_DATA_DIR $TEST_DATA_URL || exit 77
 
+exec <&-
+
 cd $TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
  ) >"$at_stdout" 2>"$at_stder1"
@@ -28015,6 +30432,8 @@ tarball_prereq xsplit-1.tar 0e008c84c517e48fbf23ca6a7033cde6 $TEST_DATA_DIR $TES
 test -z "$TEST_DATA_DIR" && exit 77
 tarball_prereq xsplit-2.tar 03150b9852d285458f43734e9e0b9a45 $TEST_DATA_DIR $TEST_DATA_URL || exit 77
 
+exec <&-
+
 cd $TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
  ) >"$at_stdout" 2>"$at_stderr"
@@ -28037,16 +30456,114 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_68
-#AT_START_69
-# 69. old.at:23: old archives
+#AT_STOP_82
+#AT_START_83
+# 83. multiv08.at:23: multivolume header creation
+at_setup_line='multiv08.at:23'
+at_desc="multivolume header creation"
+$at_quiet $as_echo_n " 83: $at_desc                    "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "83. multiv08.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/multiv08.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+)"
+echo multiv08.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "Creating
+Testing
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Creating
+Testing
+block 0: a
+block 21: b
+block 43: ** Block of NULs **
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/multiv08.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_83
+#AT_START_84
+# 84. old.at:23: old archives
 at_setup_line='old.at:23'
 at_desc="old archives"
-$at_quiet $as_echo_n " 69: $at_desc                                   "
+$at_quiet $as_echo_n " 84: $at_desc                                   "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "69. old.at:23: testing ..."
+  $as_echo "84. old.at:23: testing ..."
   $at_traceon
 
 
@@ -28092,17 +30609,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_69
-#AT_START_70
-# 70. recurse.at:21: recurse
+#AT_STOP_84
+#AT_START_85
+# 85. recurse.at:21: recurse
 at_setup_line='recurse.at:21'
 at_desc="recurse"
-$at_quiet $as_echo_n " 70: $at_desc                                        "
+$at_quiet $as_echo_n " 85: $at_desc                                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "70. recurse.at:21: testing ..."
+  $as_echo "85. recurse.at:21: testing ..."
   $at_traceon
 
 
@@ -28421,17 +30938,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_70
-#AT_START_71
-# 71. same-order01.at:26: working -C with --same-order
+#AT_STOP_85
+#AT_START_86
+# 86. same-order01.at:26: working -C with --same-order
 at_setup_line='same-order01.at:26'
 at_desc="working -C with --same-order"
-$at_quiet $as_echo_n " 71: $at_desc                   "
+$at_quiet $as_echo_n " 86: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "71. same-order01.at:26: testing ..."
+  $as_echo "86. same-order01.at:26: testing ..."
   $at_traceon
 
 
@@ -28457,7 +30974,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28483,7 +31000,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28507,7 +31024,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28543,7 +31060,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28569,7 +31086,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28593,7 +31110,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28629,7 +31146,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28655,7 +31172,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28679,7 +31196,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28715,7 +31232,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28741,7 +31258,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28765,7 +31282,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28801,7 +31318,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28827,7 +31344,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28851,7 +31368,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28875,17 +31392,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_71
-#AT_START_72
-# 72. same-order02.at:25: multiple -C options
+#AT_STOP_86
+#AT_START_87
+# 87. same-order02.at:25: multiple -C options
 at_setup_line='same-order02.at:25'
 at_desc="multiple -C options"
-$at_quiet $as_echo_n " 72: $at_desc                            "
+$at_quiet $as_echo_n " 87: $at_desc                            "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "72. same-order02.at:25: testing ..."
+  $as_echo "87. same-order02.at:25: testing ..."
   $at_traceon
 
 
@@ -28910,7 +31427,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -28937,7 +31456,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -28962,7 +31483,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29000,7 +31523,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29027,7 +31552,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29052,7 +31579,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29090,7 +31619,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29117,7 +31648,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29142,7 +31675,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29180,7 +31715,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29207,7 +31744,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29232,7 +31771,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29270,7 +31811,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29297,7 +31840,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29322,7 +31867,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29349,17 +31896,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_72
-#AT_START_73
-# 73. shortrec.at:25: short records
+#AT_STOP_87
+#AT_START_88
+# 88. shortrec.at:25: short records
 at_setup_line='shortrec.at:25'
 at_desc="short records"
-$at_quiet $as_echo_n " 73: $at_desc                                  "
+$at_quiet $as_echo_n " 88: $at_desc                                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "73. shortrec.at:25: testing ..."
+  $as_echo "88. shortrec.at:25: testing ..."
   $at_traceon
 
 
@@ -29728,17 +32275,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_73
-#AT_START_74
-# 74. sparse01.at:21: sparse files
+#AT_STOP_88
+#AT_START_89
+# 89. sparse01.at:21: sparse files
 at_setup_line='sparse01.at:21'
 at_desc="sparse files"
-$at_quiet $as_echo_n " 74: $at_desc                                   "
+$at_quiet $as_echo_n " 89: $at_desc                                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "74. sparse01.at:21: testing ..."
+  $as_echo "89. sparse01.at:21: testing ..."
   $at_traceon
 
 
@@ -29764,7 +32311,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 )"
@@ -29790,7 +32337,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -29814,7 +32361,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -29847,7 +32394,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 )"
@@ -29873,7 +32420,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -29897,7 +32444,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -29930,7 +32477,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 )"
@@ -29956,7 +32503,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -29980,7 +32527,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -30019,17 +32566,17 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_74
-#AT_START_75
-# 75. sparse02.at:21: extracting sparse file over a pipe
+#AT_STOP_89
+#AT_START_90
+# 90. sparse02.at:21: extracting sparse file over a pipe
 at_setup_line='sparse02.at:21'
 at_desc="extracting sparse file over a pipe"
-$at_quiet $as_echo_n " 75: $at_desc             "
+$at_quiet $as_echo_n " 90: $at_desc             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "75. sparse02.at:21: testing ..."
+  $as_echo "90. sparse02.at:21: testing ..."
   $at_traceon
 
 
@@ -30248,17 +32795,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_75
-#AT_START_76
-# 76. sparse03.at:21: storing sparse files > 8G
+#AT_STOP_90
+#AT_START_91
+# 91. sparse03.at:21: storing sparse files > 8G
 at_setup_line='sparse03.at:21'
 at_desc="storing sparse files > 8G"
-$at_quiet $as_echo_n " 76: $at_desc                      "
+$at_quiet $as_echo_n " 91: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "76. sparse03.at:21: testing ..."
+  $as_echo "91. sparse03.at:21: testing ..."
   $at_traceon
 
 
@@ -30378,17 +32925,17 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_76
-#AT_START_77
-# 77. sparsemv.at:21: sparse files in MV archives
+#AT_STOP_91
+#AT_START_92
+# 92. sparsemv.at:21: sparse files in MV archives
 at_setup_line='sparsemv.at:21'
 at_desc="sparse files in MV archives"
-$at_quiet $as_echo_n " 77: $at_desc                    "
+$at_quiet $as_echo_n " 92: $at_desc                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "77. sparsemv.at:21: testing ..."
+  $as_echo "92. sparsemv.at:21: testing ..."
   $at_traceon
 
 
@@ -30633,17 +33180,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_77
-#AT_START_78
-# 78. spmvp00.at:21: sparse files in PAX MV archives, v.0.0
+#AT_STOP_92
+#AT_START_93
+# 93. spmvp00.at:21: sparse files in PAX MV archives, v.0.0
 at_setup_line='spmvp00.at:21'
 at_desc="sparse files in PAX MV archives, v.0.0"
-$at_quiet $as_echo_n " 78: $at_desc         "
+$at_quiet $as_echo_n " 93: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "78. spmvp00.at:21: testing ..."
+  $as_echo "93. spmvp00.at:21: testing ..."
   $at_traceon
 
 
@@ -30770,17 +33317,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_78
-#AT_START_79
-# 79. spmvp01.at:21: sparse files in PAX MV archives, v.0.1
+#AT_STOP_93
+#AT_START_94
+# 94. spmvp01.at:21: sparse files in PAX MV archives, v.0.1
 at_setup_line='spmvp01.at:21'
 at_desc="sparse files in PAX MV archives, v.0.1"
-$at_quiet $as_echo_n " 79: $at_desc         "
+$at_quiet $as_echo_n " 94: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "79. spmvp01.at:21: testing ..."
+  $as_echo "94. spmvp01.at:21: testing ..."
   $at_traceon
 
 
@@ -30907,17 +33454,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_79
-#AT_START_80
-# 80. spmvp10.at:21: sparse files in PAX MV archives, v.1.0
+#AT_STOP_94
+#AT_START_95
+# 95. spmvp10.at:21: sparse files in PAX MV archives, v.1.0
 at_setup_line='spmvp10.at:21'
 at_desc="sparse files in PAX MV archives, v.1.0"
-$at_quiet $as_echo_n " 80: $at_desc         "
+$at_quiet $as_echo_n " 95: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "80. spmvp10.at:21: testing ..."
+  $as_echo "95. spmvp10.at:21: testing ..."
   $at_traceon
 
 
@@ -31044,17 +33591,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_80
-#AT_START_81
-# 81. update.at:28: update unchanged directories
+#AT_STOP_95
+#AT_START_96
+# 96. update.at:28: update unchanged directories
 at_setup_line='update.at:28'
 at_desc="update unchanged directories"
-$at_quiet $as_echo_n " 81: $at_desc                   "
+$at_quiet $as_echo_n " 96: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "81. update.at:28: testing ..."
+  $as_echo "96. update.at:28: testing ..."
   $at_traceon
 
 
@@ -31513,17 +34060,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_81
-#AT_START_82
-# 82. update01.at:29: update directories
+#AT_STOP_96
+#AT_START_97
+# 97. update01.at:29: update directories
 at_setup_line='update01.at:29'
 at_desc="update directories"
-$at_quiet $as_echo_n " 82: $at_desc                             "
+$at_quiet $as_echo_n " 97: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "82. update01.at:29: testing ..."
+  $as_echo "97. update01.at:29: testing ..."
   $at_traceon
 
 
@@ -32047,17 +34594,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_82
-#AT_START_83
-# 83. update02.at:26: update changed files
+#AT_STOP_97
+#AT_START_98
+# 98. update02.at:26: update changed files
 at_setup_line='update02.at:26'
 at_desc="update changed files"
-$at_quiet $as_echo_n " 83: $at_desc                           "
+$at_quiet $as_echo_n " 98: $at_desc                           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "83. update02.at:26: testing ..."
+  $as_echo "98. update02.at:26: testing ..."
   $at_traceon
 
 
@@ -32581,17 +35128,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_83
-#AT_START_84
-# 84. volume.at:23: volume
+#AT_STOP_98
+#AT_START_99
+# 99. volume.at:23: volume
 at_setup_line='volume.at:23'
 at_desc="volume"
-$at_quiet $as_echo_n " 84: $at_desc                                         "
+$at_quiet $as_echo_n " 99: $at_desc                                         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "84. volume.at:23: testing ..."
+  $as_echo "99. volume.at:23: testing ..."
   $at_traceon
 
 
@@ -32809,17 +35356,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_84
-#AT_START_85
-# 85. volsize.at:29: volume header size
+#AT_STOP_99
+#AT_START_100
+# 100. volsize.at:29: volume header size
 at_setup_line='volsize.at:29'
 at_desc="volume header size"
-$at_quiet $as_echo_n " 85: $at_desc                             "
+$at_quiet $as_echo_n "100: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "85. volsize.at:29: testing ..."
+  $as_echo "100. volsize.at:29: testing ..."
   $at_traceon
 
 
@@ -33328,17 +35875,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_85
-#AT_START_86
-# 86. comprec.at:21: compressed format recognition
+#AT_STOP_100
+#AT_START_101
+# 101. comprec.at:21: compressed format recognition
 at_setup_line='comprec.at:21'
 at_desc="compressed format recognition"
-$at_quiet $as_echo_n " 86: $at_desc                  "
+$at_quiet $as_echo_n "101: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "86. comprec.at:21: testing ..."
+  $as_echo "101. comprec.at:21: testing ..."
   $at_traceon
 
 
@@ -33364,7 +35911,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33388,7 +35935,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33410,7 +35957,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33445,7 +35992,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33469,7 +36016,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33491,7 +36038,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33526,7 +36073,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33550,7 +36097,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33572,7 +36119,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33607,7 +36154,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33631,7 +36178,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33653,7 +36200,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33688,7 +36235,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33712,7 +36259,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33734,7 +36281,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33758,17 +36305,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_86
-#AT_START_87
-# 87. shortfile.at:26: short input files
+#AT_STOP_101
+#AT_START_102
+# 102. shortfile.at:26: short input files
 at_setup_line='shortfile.at:26'
 at_desc="short input files"
-$at_quiet $as_echo_n " 87: $at_desc                              "
+$at_quiet $as_echo_n "102: $at_desc                              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "87. shortfile.at:26: testing ..."
+  $as_echo "102. shortfile.at:26: testing ..."
   $at_traceon
 
 
@@ -33838,17 +36385,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_87
-#AT_START_88
-# 88. shortupd.at:29: updating short archives
+#AT_STOP_102
+#AT_START_103
+# 103. shortupd.at:29: updating short archives
 at_setup_line='shortupd.at:29'
 at_desc="updating short archives"
-$at_quiet $as_echo_n " 88: $at_desc                        "
+$at_quiet $as_echo_n "103: $at_desc                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "88. shortupd.at:29: testing ..."
+  $as_echo "103. shortupd.at:29: testing ..."
   $at_traceon
 
 
@@ -34127,17 +36674,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_88
-#AT_START_89
-# 89. truncate.at:29: truncate
+#AT_STOP_103
+#AT_START_104
+# 104. truncate.at:29: truncate
 at_setup_line='truncate.at:29'
 at_desc="truncate"
-$at_quiet $as_echo_n " 89: $at_desc                                       "
+$at_quiet $as_echo_n "104: $at_desc                                       "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "89. truncate.at:29: testing ..."
+  $as_echo "104. truncate.at:29: testing ..."
   $at_traceon
 
 
@@ -34541,17 +37088,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_89
-#AT_START_90
-# 90. grow.at:24: grow
+#AT_STOP_104
+#AT_START_105
+# 105. grow.at:24: grow
 at_setup_line='grow.at:24'
 at_desc="grow"
-$at_quiet $as_echo_n " 90: $at_desc                                           "
+$at_quiet $as_echo_n "105: $at_desc                                           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "90. grow.at:24: testing ..."
+  $as_echo "105. grow.at:24: testing ..."
   $at_traceon
 
 
@@ -34870,16 +37417,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_90
-#AT_START_91
-# 91. remfiles01.at:28: remove-files with compression
+#AT_STOP_105
+#AT_START_106
+# 106. remfiles01.at:28: remove-files with compression
 at_setup_line='remfiles01.at:28'
 at_desc="remove-files with compression"
-$at_quiet $as_echo_n " 91: $at_desc                  "
+$at_quiet $as_echo_n "106: $at_desc                  "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "91. remfiles01.at:28: testing ..."
+  $as_echo "106. remfiles01.at:28: testing ..."
   $at_traceon
 
 
@@ -34888,6 +37435,14 @@ unset TAR_OPTIONS
 { $at_traceoff
 $as_echo "$at_srcdir/remfiles01.at:32:
 
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
 
@@ -34912,7 +37467,9 @@ EC=\$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit \$EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test \$EC && exit 2
 "
 echo remfiles01.at:32 >"$at_check_line_file"
 
@@ -34920,6 +37477,14 @@ if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
   ( $at_traceon;
 
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
 
@@ -34944,12 +37509,22 @@ EC=$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit $EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test $EC && exit 2
  ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
 
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
 
@@ -34974,7 +37549,9 @@ EC=$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit $EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test $EC && exit 2
  ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -34999,16 +37576,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_91
-#AT_START_92
-# 92. remfiles02.at:28: remove-files with compression: grand-child
+#AT_STOP_106
+#AT_START_107
+# 107. remfiles02.at:28: remove-files with compression: grand-child
 at_setup_line='remfiles02.at:28'
 at_desc="remove-files with compression: grand-child"
-$at_quiet $as_echo_n " 92: $at_desc     "
+$at_quiet $as_echo_n "107: $at_desc     "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "92. remfiles02.at:28: testing ..."
+  $as_echo "107. remfiles02.at:28: testing ..."
   $at_traceon
 
 
@@ -35107,16 +37684,144 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_92
-#AT_START_93
-# 93. gtarfail.at:21: gtarfail
+#AT_STOP_107
+#AT_START_108
+# 108. remfiles03.at:28: remove-files with symbolic links
+at_setup_line='remfiles03.at:28'
+at_desc="remove-files with symbolic links"
+$at_quiet $as_echo_n "108: $at_desc               "
+at_xfail=no
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "108. remfiles03.at:28: testing ..."
+  $at_traceon
+
+
+
+{ $at_traceoff
+$as_echo "$at_srcdir/remfiles03.at:31:
+mkdir a
+mkdir a/b
+ln -s b a/c || exit 77
+tar --remove-files -cf a.tar a
+genfile --stat a
+"
+echo remfiles03.at:31 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir a
+mkdir a/b
+ln -s b a/c || exit 77
+tar --remove-files -cf a.tar a
+genfile --stat a
+ ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir a
+mkdir a/b
+ln -s b a/c || exit 77
+tar --remove-files -cf a.tar a
+genfile --stat a
+ ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "genfile: stat(a) failed: No such file or directory
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/remfiles03.at:31"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_108
+#AT_START_109
+# 109. sigpipe.at:19: sigpipe handling
+at_setup_line='sigpipe.at:19'
+at_desc="sigpipe handling"
+$at_quiet $as_echo_n "109: $at_desc                               "
+at_xfail=no
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "109. sigpipe.at:19: testing ..."
+  $at_traceon
+
+
+
+# Description: Tar 1.23 ignored sigpipe which lead to spurious "write
+# error" diagnostics when piping output to another programs.
+# Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
+# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00039.html
+#             <20100319184141.GC30047@wo.int.altlinux.org>
+
+{ $at_traceoff
+$as_echo "$at_srcdir/sigpipe.at:28:
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+"
+echo sigpipe.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+ ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+ ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/sigpipe.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_109
+#AT_START_110
+# 110. gtarfail.at:21: gtarfail
 at_setup_line='gtarfail.at:21'
 at_desc="gtarfail"
-$at_quiet $as_echo_n " 93: $at_desc                                       "
+$at_quiet $as_echo_n "110: $at_desc                                       "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "93. gtarfail.at:21: testing ..."
+  $as_echo "110. gtarfail.at:21: testing ..."
   $at_traceon
 
 
@@ -35176,16 +37881,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_93
-#AT_START_94
-# 94. gtarfail2.at:21: gtarfail2
+#AT_STOP_110
+#AT_START_111
+# 111. gtarfail2.at:21: gtarfail2
 at_setup_line='gtarfail2.at:21'
 at_desc="gtarfail2"
-$at_quiet $as_echo_n " 94: $at_desc                                      "
+$at_quiet $as_echo_n "111: $at_desc                                      "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "94. gtarfail2.at:21: testing ..."
+  $as_echo "111. gtarfail2.at:21: testing ..."
   $at_traceon
 
 
@@ -35246,16 +37951,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_94
-#AT_START_95
-# 95. multi-fail.at:21: multi-fail
+#AT_STOP_111
+#AT_START_112
+# 112. multi-fail.at:21: multi-fail
 at_setup_line='multi-fail.at:21'
 at_desc="multi-fail"
-$at_quiet $as_echo_n " 95: $at_desc                                     "
+$at_quiet $as_echo_n "112: $at_desc                                     "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "95. multi-fail.at:21: testing ..."
+  $as_echo "112. multi-fail.at:21: testing ..."
   $at_traceon
 
 
@@ -35376,16 +38081,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_95
-#AT_START_96
-# 96. ustar-big-2g.at:21: ustar-big-2g
+#AT_STOP_112
+#AT_START_113
+# 113. ustar-big-2g.at:21: ustar-big-2g
 at_setup_line='ustar-big-2g.at:21'
 at_desc="ustar-big-2g"
-$at_quiet $as_echo_n " 96: $at_desc                                   "
+$at_quiet $as_echo_n "113: $at_desc                                   "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "96. ustar-big-2g.at:21: testing ..."
+  $as_echo "113. ustar-big-2g.at:21: testing ..."
   $at_traceon
 
 
@@ -35463,16 +38168,16 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_96
-#AT_START_97
-# 97. ustar-big-8g.at:21: ustar-big-8g
+#AT_STOP_113
+#AT_START_114
+# 114. ustar-big-8g.at:21: ustar-big-8g
 at_setup_line='ustar-big-8g.at:21'
 at_desc="ustar-big-8g"
-$at_quiet $as_echo_n " 97: $at_desc                                   "
+$at_quiet $as_echo_n "114: $at_desc                                   "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "97. ustar-big-8g.at:21: testing ..."
+  $as_echo "114. ustar-big-8g.at:21: testing ..."
   $at_traceon
 
 
@@ -35550,16 +38255,16 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_97
-#AT_START_98
-# 98. pax-big-10g.at:21: pax-big-10g
+#AT_STOP_114
+#AT_START_115
+# 115. pax-big-10g.at:21: pax-big-10g
 at_setup_line='pax-big-10g.at:21'
 at_desc="pax-big-10g"
-$at_quiet $as_echo_n " 98: $at_desc                                    "
+$at_quiet $as_echo_n "115: $at_desc                                    "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "98. pax-big-10g.at:21: testing ..."
+  $as_echo "115. pax-big-10g.at:21: testing ..."
   $at_traceon
 
 
@@ -35637,4 +38342,4 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_98
+#AT_STOP_115
index f581071a39e23848c19ed901d4e3bc3596ff77ed..c3868926de613be24bc5c11c1bfb3b05ddec143f 100644 (file)
@@ -41,13 +41,13 @@ $1)],$2,$3,$4,$5,$6)
 m4_define([AT_TAR_WITH_HOOK],[
   m4_pushdef([AT_TAR_CHECK_HOOK],[$1])
   $2
-  
+
   m4_popdef([AT_TAR_CHECK_HOOK])])
 
 m4_define([TAR_IGNREC_HOOK],[
   AT_CHECK([grep -v '^.*tar: Record size = ' stderr; exit 0])
 ])
-  
+
 m4_define([RE_CHECK],[
 AT_DATA([$1.re],[$2])
 awk '{print NR " " $[]0}' $1 > $[]$.1
@@ -123,6 +123,7 @@ m4_include([append01.at])
 m4_include([append02.at])
 
 m4_include([xform-h.at])
+m4_include([xform01.at])
 
 m4_include([exclude.at])
 m4_include([exclude01.at])
@@ -130,6 +131,7 @@ m4_include([exclude02.at])
 m4_include([exclude03.at])
 m4_include([exclude04.at])
 m4_include([exclude05.at])
+m4_include([exclude06.at])
 
 m4_include([delete01.at])
 m4_include([delete02.at])
@@ -145,9 +147,19 @@ m4_include([extrac05.at])
 m4_include([extrac06.at])
 m4_include([extrac07.at])
 m4_include([extrac08.at])
+m4_include([extrac09.at])
+m4_include([extrac10.at])
+m4_include([extrac11.at])
+m4_include([extrac12.at])
+m4_include([extrac13.at])
+m4_include([extrac14.at])
+m4_include([extrac15.at])
 
 m4_include([label01.at])
 m4_include([label02.at])
+m4_include([label03.at])
+m4_include([label04.at])
+m4_include([label05.at])
 
 m4_include([backup01.at])
 
@@ -158,6 +170,7 @@ m4_include([incr01.at])
 m4_include([incr02.at])
 m4_include([listed01.at])
 m4_include([listed02.at])
+m4_include([listed03.at])
 m4_include([incr03.at])
 m4_include([incr04.at])
 m4_include([incr05.at])
@@ -178,6 +191,7 @@ m4_include([ignfail.at])
 m4_include([link01.at])
 m4_include([link02.at])
 m4_include([link03.at])
+m4_include([link04.at])
 
 m4_include([longv7.at])
 m4_include([long01.at])
@@ -192,6 +206,7 @@ m4_include([multiv04.at])
 m4_include([multiv05.at])
 m4_include([multiv06.at])
 m4_include([multiv07.at])
+m4_include([multiv08.at])
 
 m4_include([old.at])
 
@@ -226,6 +241,9 @@ m4_include([grow.at])
 
 m4_include([remfiles01.at])
 m4_include([remfiles02.at])
+m4_include([remfiles03.at])
+
+m4_include([sigpipe.at])
 
 m4_include([star/gtarfail.at])
 m4_include([star/gtarfail2.at])
index 161b06f753d547b3104a00c81ece2bc34a3d6d83..374b971b7c5581307e96c1d739a57ab873fde8ab 100644 (file)
@@ -55,4 +55,3 @@ a/c
 ])
 
 AT_CLEANUP
-
index 40f90b9244ecf19214f927d219c73c64b44e9000..09b7f0b63013000bce7ccda600e0934423082223 100644 (file)
@@ -52,4 +52,3 @@ a/b
 ])
 
 AT_CLEANUP
-
index 74ba28bacab8d5c197c1d2c85d218595ef58ea25..282e03ac978ec3449356700850f5541a2edd0c56 100644 (file)
@@ -57,5 +57,3 @@ abc/CCC
 AT_CLEANUP
 
 # End of volsize.at
-
-
index 30b405f844b743b95c9a15096d2fa08fc6be09c1..87a910b88e1ea1fe93c20d7b663bfe1adea32338 100644 (file)
@@ -55,4 +55,3 @@ tar: Error is not recoverable: exiting now
 [],[],[gnu, oldgnu])
 
 AT_CLEANUP
-
index 28de384f3eacdaf11df4db94214c63fd672b582a..d51a0a60604abe476411f46a5e3584c0d214ac7b 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autom4te to create testsuite. -*- Autotest -*-
 
 # Test suite for GNU tar.
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@
 AT_SETUP([transforming hard links on create])
 AT_KEYWORDS([transform xform xform-h])
 
-m4_define([xform],[
+m4_pushdef([xformtest],[
 echo "$1"
 tar cf archive --transform="s,^basedir/,,$2" basedir/test basedir/test_link
 tar tvf archive | sed -n 's/.*test_link link to //p'
@@ -41,9 +41,9 @@ mkdir basedir
 echo "hello" > basedir/test
 ln basedir/test basedir/test_link
 
-xform(Default transform scope)
-xform(Transforming hard links,h)
-xform(Not transforming hard links,H)
+xformtest(Default transform scope)
+xformtest(Transforming hard links,h)
+xformtest(Not transforming hard links,H)
 ],
 [0],
 [Default transform scope
@@ -54,6 +54,8 @@ Not transforming hard links
 basedir/test
 ])
 
+m4_popdef([xformtest])
+
 AT_CLEANUP
 
 # End of xform-h.at
\ No newline at end of file
diff --git a/tests/xform01.at b/tests/xform01.at
new file mode 100644 (file)
index 0000000..71dcc43
--- /dev/null
@@ -0,0 +1,43 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+
+# Test suite for GNU tar.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Transformations should not apply to GNU volume labels.
+# Reported by: Thomas Graf <hausmeister@askja.de>
+# References: <4C72AB8D.3070706@askja.de>
+#             http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00035.html
+
+AT_SETUP([transformations and GNU volume labels])
+AT_KEYWORDS([transform xform xform01 volume])
+
+AT_TAR_CHECK([
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+],
+[0],
+[/label/
+file
+],
+[],[],[],[gnu])
+
+AT_CLEANUP
+
+
+