2010-03-10 Sergey Poznyakoff
Version 1.23
* configure.ac, NEWS: Update version number.
Doc changes.
* NEWS: Update.
* THANKS: Update.
* doc/snapshot.texi, doc/snapshot.texi,
doc/sparse.texi, doc/tar-snapshot-edit.texi,
doc/tar.texi: Spellchecked and proof-read. Thanks
to Denis Excoffier.
* gnulib.modules: Remove utime.
2010-03-08 Kamil Dudka
Fix possible overflow in code_timespec (tiny change)
* src/misc.c (code_timespec): ignore invalid values of ns
2010-03-08 Sergey Poznyakoff
Minor fix in the testsuite.
* tests/extrac05.at: Skip test if creating
sparse file fails.
Fix eventual memory override and fd exhaustion in create.c
Both bugs reported by Kamil Dudka.
* src/create.c (check_exclusion_tags): Do not keep
pointer to a location within tagname: it may change
after xrealloc. Use byte offset instead.
(dump_file0): Close fd before returning without
dumping the directory.
2010-03-02 Sergey Poznyakoff
Minor change.
* doc/tar.texi: Improve some wording.
2010-03-02 Antonio Diaz Diaz
Add Lzip support
* configure.ac: Add TAR_COMPR_PROGRAM(lzip)
* doc/tar.texi: Reflect lzip support.
* src/buffer.c (compress_type) : New constant.
(magic): Add magic for lzip.
* src/suffix.c (compression_suffixes): Add lz.
* src/tar.c: New option --lzip.
2010-03-02 Sergey Poznyakoff
Minor fix.
* tests/exclude05.at: Rewrite awk invocation to avoid
overflowing awk's file table on Solaris.
2010-03-02 Eric Blake
Fix large file support.
* scripts/xsparse.c (read_map): Use fseeko.
* src/incremen.c (write_directory_file): Likewise.
2010-03-02 Sergey Poznyakoff
Bugfix
* src/buffer.c (seek_archive): Rewrite size computation
to prevent it from reaching negative values. Based on
report by Denis Excoffier .
2010-02-25 Sergey Poznyakoff
Supply more information to the --to-command script.
* src/system.c (stat_to_env): Pass information about the current
volume in variables TAR_ARCHIVE, TAR_VOLUME, TAR_BLOCKING_FACTOR,
TAR_FORMAT.
* doc/tar.texi: Document new environment variables.
* NEWS: Likewise.
* configure.ac: Version number 1.22.91.
2010-02-17 Sergey Poznyakoff
Minor change.
* src/names.c (regex_usage_warning): Fix warning message.
2010-02-05 Sergey Poznyakoff
Update THANKS
2010-02-05 Ondřej Vašík
Bugfix (tiny change)
* src/xheader.c (xheader_read): Remove unnecessary call
to xheader_init.
2010-01-26 Sergey Poznyakoff
Enable silent build mode.
* configure.ac: Require automake 1.11, autoconf 2.63. Enable
silent rules.
* NEWS: Update.
* lib/Makefile.am (rmt-command.h): Silent the rule.
2010-01-25 Sergey Poznyakoff
Read POSIX multivolume archives split at the header boundary.
* src/common.h (read_header_mode): New enum.
(read_header): Change type of the 3rd argument.
* src/list.c (read_header): Change type of the 3rd argument.
All callers updated.
* src/buffer.c (try_new_volume): Allow for volumes split at the
extended/ustar header boundary. This is against POSIX specs, but
we must be able to read such archives anyway.
* tests/multiv07.at: New test case.
* tests/Makefile.am: Add multiv07.at
* tests/testsuite.at: Likewise.
* src/compare.c: Update calls to read_header.
* src/delete.c: Likewise.
* src/update.c: Likewise.
2010-01-24 Sergey Poznyakoff
Minor change.
* NEWS: Update.
* doc/tar.texi: Update.
* src/create.c (finish_header): Minor change.
2010-01-24 Rob Vermaas
Bugfix (tiny change).
* src/tar.c (format_default_settings)[REMOTE_SHELL]: Fix
misplaced comma.
2010-01-24 Sergey Poznyakoff
Minor fix.
* src/incremen.c (read_incr_db_01)
(read_directory_file): Initialize bufsize to 0.
Suggested by noordsij@cs.helsinki.fi.
Improve handling of --test-label.
* src/list.c (print_volume_label): New function.
(print_header): Call print_volume_label.
(test_archive_label): New function.
* src/buffer.c (VOLUME_LABEL_APPEND): Remove.
(VOLUME_TEXT, VOLUME_TEXT_LEN): New macros
(drop_volume_label_suffix): New function.
(check_label_pattern): Use drop_volume_label_suffix.
* src/common.h (subcommand): New constant TEST_LABEL_SUBCOMMAND.
(test_label_option): Remove.
(drop_volume_label_suffix): New proto.
(test_archive_label): New proto.
* src/names.c (all_names_found): Remove test for
test_label_option.
* src/tar.c (subcommand_string): Handle TEST_LABEL_SUBCOMMAND.
(set_subcommand_option): Improve diagnostics.
(parse_opt): Set subcommand if --test-label is given.
(main): Handle TEST_LABEL_SUBCOMMAND.
Fix listing of volume labels (in particular in PAX archives).
* src/buffer.c (match_volume_label): Call set_volume_label.
(check_label_pattern): Get label string
as argument.
(match_volume_label): Handle volume labels stored in
global PAX headers.
* src/common.c (print_header,read_header): Change signature.
(read_header_primitive): Remove prototype.
* src/list.c (recent_global_header): New static.
(list_archive): Always print volume labels.
(read_header_primitive): Remove.
(read_header): Change the signature (all callers updated)
Save the recent global header.
(volume_label_printed): New static.
(simple_print_header): New function (ex-print_header).
(print_header): Change the signature (all callers updated).
For POSIX formats, print first volume header (if set).
* src/xheader.c (xheader_write_global): Write the data
accumulated in xhdr->stk even if keyword_global_override_list
is empty.
(xheader_read): On unexpected EOF, report error instead of
coredumping.
(XHDR_PROTECTED, XHDR_GLOBAL): New defines.
(struct xhdr_tab): Remove `protected' with `flags'. All uses
updated.
(decg): If XHDR_GLOBAL bit is set, call the keyword's decode
method instead of adding it to `kwl'.
* src/compare.c: Update calls to read_header.
* src/create.c: Likewise.
* src/delete.c: Likewise.
* src/update.c: Likewise.
* src/extract.c: Likewise.
(extract_volhdr): Do not print "Reading " statement,
because
it is inconsistent: it is not printed if the volume begins with a
member continued from the previous volume.
* tests/label01.at: New testcase.
* tests/label02.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add new testcases.
2010-01-22 Sergey Poznyakoff
Fix prefix length calculation in ustar mode.
* src/create.c (split_long_name): Fix prefix length
calculation.
(write_ustar_long_name): Improve ustar mode compatibility
with the Sun version.
2009-10-14 Sergey Poznyakoff
Rewrite update algorithm.
* src/common.h (namebuf_t): New typedef.
(namebuf_create, namebuf_free)
(namebuf_name): New prototypes.
(remname): New prototype.
* src/misc.c (struct namebuf): New structure.
(namebuf_create, namebuf_free)
(namebuf_name): New functions.
* src/create.c (dup_dir0): Remove is_avoided_name
checks. This is taken care of in update_archive.
* src/incremen.c (scan_directory): Use namebuf
to produce full file names.
* src/names.c (nametail): Remove extra level of
indirection. All uses updated.
(avoided_name_table, add_avoided_name)
(is_avoided_name): Remove.
* src/update.c (update_archive): Change algorithm.
Instead of adding unmodified files to the avoided_name
table, create namelist so that it contains only
modified files.
* tests/Makefile.am: Add update01.at, update02.at
* tests/testsuite.at: Likewise.
* tests/update.at (AT_KEYWORDS): Add update00.
Minor changes.
* src/tar.c (main): Ignore SIGPIPE.
* src/system.c (sys_child_open_for_compress)
(sys_child_open_for_uncompress): Reset SIGPIPE
in child to default.
* tests/remfiles01.at: Avoid race conditions.
* tests/remfiles02.at: Likewise.
Bugfix.
* src/buffer.c (_open_archive): Call guess_seekable_archive
only if the call to open_compressed_archive succeeded.
2009-10-10 Sergey Poznyakoff
Improve previous changes.
* acinclude.m4: Fix typos.
* gnulib.modules: Add xvasprintf.
* src/common.h: Include xvasprintf.h.
* src/tar.c (options): Remove docstrings for --gzip, --bzip2,
--compress, --lzop, --lzma and --xz.
(tar_help_filter): Generate these using actual values of
*_PROGRAM constants.
(format_default_settings): Use xasprintf.
(parse_opt): Use *_PROGRAM defines instead of hardcoded
program names.
Allow installers to specify alternative program names for
compression programs.
This adds --with-gzip, --with-bzip2 etc. switches to the
configure, so that
one can do, e.g. ./configure --with-bzip2=lbzip2 and have
lbzip2 executed
whenever user calls `tar --bzip2'.
* acinclude.m4: New file.
* configure.ac: Add TAR_COMPR_PROGRAM invocations for
the supported compressors.
* src/buffer.c (magic): Use *_COMPRESSOR defines instead
of hardcoded program names.
* src/suffix.c (compression_suffixes): Likewise.
2009-10-09 Sergey Poznyakoff
Minor fix.
* src/buffer.c (magic): Fix `xz' entry: add the name of the
program.
* src/suffix.c (compression_suffixes, nsuffixes): Mark as static.
2009-10-07 Sergey Poznyakoff
Provide a way to explicitly set mtime for extended header
ustar blocks.
* src/tar.c (struct textual_date): ts is a copy of the structure,
not a pointer to it. Date is a copy as well, hence the `const' is
taken away.
(get_date_or_file): Return 0/1 depending on success/failure.
Copy timestamp to the `ts' member. Store a copy of the string
in `date'.
(report_textual_dates): Report only if verbose_option is set,
but always free the list.
(expand_pax_option): New function.
(parse_opt): Preprocess the argument to xheader_set_option with
expand_pax_option.
(decode_options): Call report_textual_dates unconditionally.
* src/xheader.c (exthdr_mtime_option, exthdr_mtime)
(globexthdr_mtime_option, globexthdr_mtime): New statics.
(xheader_set_keyword_equal): handle exthdr.mtime and
globexthdr.mtime.
(xheader_write): Override `t' argument if a corresponding
exthdr.mtime or globexthdr.mtime option is set.
* NEWS: Update
* doc/tar.texi: Document the changes.
Use file's mtime as mtime for its extended header.
This makes two pax archives binary equivalent if they
have the same contents and care is taken to make extended
headers otherwise reproducible, e.g. by using:
--pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0
Proposed by Michael D. Adams .
* src/common.h (start_private_header): Take time_t as 3rd param.
(xheader_write): Likewise.
* src/create.c (start_private_header): Take time_t as 3rd param.
All callers updated.
(write_extended): Use file's mtime as mtime for its extended
header,
Use current time stamp as mtime for global headers.
(xheader_write): Take time_t as 3rd param.
Fix bugs in handling the --remove-files option.
Make sure the files are deleted only if they were succesfully
stored
to the archive.
* src/exit.c: New file.
* src/unlink.c: New file.
* src/Makefile.am (tar_SOURCES): Add exit.c and unlink.c.
* src/common.h: Include progname.h
(program_name): Remove global.
(records_written): New extern.
(queue_deferred_unlink, finish_deferred_unlinks): New prototypes.
(fatal_exit_hook): New extern.
* src/create.c (create_archive): Call finish_deferred_unlinks.
(dump_hard_link, dump_file0): Don't actually unlink the file,
queue it to deferred_unlinks instead.
* src/delete.c (records_written): Remove extern: declared in
common.h.
* src/extract.c (extract_archive): Set fatal_exit_hook.
(fatal_exit, xalloc_die): Move to exit.c
* src/system.c (sys_wait_for_child): Exit immediately
if the child dies or exits with a non-zero status.
(sys_child_open_for_compress)
(sys_child_open_for_uncompress): Use set_program_name,
instead of setting program_name directly.
* src/tar.c (main): Use set_program_name,
instead of setting program_name directly.
* tests/Makefile.am (TESTSUITE_AT): Add remfiles01.at
and remfiles02.at.
* tests/testsuite.at: Likewise.
* tests/gzip.at: Reflect the above changes.
2009-10-04 Sergey Poznyakoff
Fix bug in OLDGNU format creation.
See tests/append02.at for a detailed description
* src/common.h (MODE_FROM_HEADER): Take additional argument.
(mode_from_header): Likewise.
* src/create.c (mode_to_chars): Store all mode bits if
using OLDGNU_FORMAT. This reverses f4e4adea80a.
* src/list.c (decode_header): Use header mode field
to discern between GNU and OLDGNU formats.
(mode_from_header): Store unrecognized mode bits (from 10th up)
in the location pointed to by the third parameter.
* tests/append02.at: Update documentation and references.
2009-09-16 Sergey Poznyakoff
Restore extra help output.
* src/tar.c (tar_list_quoting_styles): Change first argument to
struct obstack.
(format_default_settings): New function.
(show_default_settings)
(show_default_settings_fs): Removed.
(tar_help): Removed.
(tar_help_filter): New function.
(argp): Set help_filter.
(parse_opt): Fix error message.
2009-09-08 Sergey Poznyakoff
Improve command line option handling.
* gnulib.modules: Add argp-version-etc and progname,
use getopt-gnu instead of getopt.
* src/tar.c (HANG_OPTION, USAGE_OPTION)
(VERSION_OPTION): Remove.
(options): Remove corresponding options. Let argp
handle them.
(parse_opt): Likewise.
(_argp_hang): Removed.
(tar_authors): New variable.
(decode_options): Call argp_version_setup.
Do not use ARGP_NO_HELP flag in the call to argp_parse.
Avoid overwriting exit_status with a value indicating less
important condition.
* src/tar.c (set_exit_status): New function.
* src/common.h (set_exit_status): New prototype.
* src/compare.c: Use set_exit_status instead of
exit_status assignments.
* src/create.c: Likewise.
* src/misc.c: Likewise.
* src/system.c (wait_for_grandchild): Use auto variable
instead of the global exit_status.
* src/incremen.c (scan_directory): Use file_removed_diag
instead of stat_diag.
Automatic detection of seekable archives.
* src/buffer.c (guess_seekable_archive): New function.
(_open_archive): Call guess_seekable_archive for archives
open for reading.
(new_volume): Likewise.
* src/common.h (seek_option): New global.
* src/tar.c (options): New option --no-seek.
(parse_opt): --seek and --no-seek set seek_option,
not seekable_archive.
(decode_options): Initialize seek_option to -1.
* NEWS: Update.
* doc/tar.texi: Update.
2009-08-27 Sergey Poznyakoff
Fix testcases.
* tests/extrac08.at: Ensure a predictable umask value.
* tests/xform-h.at (xform): do not depend on file name
ordering.
2009-08-13 Sergey Poznyakoff
Fix interaction between --listed-incremental and -C
* src/incremen.c (read_directory_file): Execute eventual -C dir
after opening the snapshot file.
(collect_and_sort_names): Remove call to chdir_do
* tests/incr05.at, tests/incr06.at: Use relative file names for
snapshot files.
2009-08-12 Sergey Poznyakoff
Update for new exclude module from gnulib. Add testcases by
Phil Proudman.
* src/names.c (is_pattern): Remove.
(regex_usage_warning): Use fnmatch_pattern_has_wildcards
instead of
is_pattern.
* src/tar.c: New option --exclude-backups.
(vcs_file_table, backup_file_table): New globals.
(add_exclude_array): New function.
* tests/exclude01.at, tests/exclude02.at,
tests/exclude03.at, tests/exclude04.at,
tests/exclude05.at: New testcases. Supplied by Phil Proudman.
* tests/Makefile.am (TESTSUITE_AT): Add new tests.
* tests/testsuite.at: Add new tests.
* THANKS: Update.
2009-08-10 Sergey Poznyakoff
Remove src/version.c (reappeared after migration to Git)
2009-08-09 Sergey Poznyakoff
Minor fixes.
* src/misc.c (file_removed_diag): Set exit code to
TAREXIT_DIFFERS.
2009-08-08 Sergey Poznyakoff
Minor fixes
Fix handling of files removed during incremental dumps.
Changes to src/create.c and src/incremen.c are partially
based on patch from Alexander Peslyak .
The new testcases require paxutils commit f653a2b or later.
* src/common.h (struct name): New member `cmdline'.
(dump_file): Change type of the 2nd argument to bool.
(file_removed_diag, dir_removed_diag): New prototypes.
(addname): New argument `cmdline'.
(name_from_list): Change return value.
* src/create.c (dump_dir0, dump_dir): top_level is bool.
(create_archive): Update calls to name_from_list.
Take advantage of the name->cmdline to set top_level argument
during incremental backups.
(dump_file0): top_level is bool.
Do not bail out if a no-top-level file disappears during
incremental
backup, use file_removed_diag instead.
(dump_filed): top_level is bool.
* src/incremen.c (update_parent_directory): Silently ignore
ENOENT. It should have already been reported elsewhere.
(scan_directory): Use dir_removed_diag to report missing
directories.
* src/misc.c (file_removed_diag, dir_removed_diag): New functions.
* src/names.c (name_gather): Set ->cmdname.
(addname): Likewise. All uses updated.
(name_from_list): Return struct name const *. All uses updated.
* tests/filerem01.at: New testcase.
* tests/filerem02.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add filerem01.at,
filerem02.at
* tests/grow.at, test/truncate.at: Use new syntax for genfile
--run.
* NEWS: Update.
* doc/tar.texi: Minor fix.
Optimize searches for directory structures by keeping a pointer
to struct directory in struct name.
* src/common.h (struct name): New member `directory' replaces
dir_contents. Rearrange members.
(rebase_directory): Change signature.
(scan_directory): Change signature.
(name_fill_directory)
(directory_contents, safe_directory_contents): New prototypes.
(append_incremental_renames): Change signature.
(replace_prefix): New proto.
* src/compare.c (diff_dumpdir): Use directory_contents +
scan_directory.
* src/create.c
* src/incremen.c (replace_prefix): Move to misc.c
(rebase_directory): Rewrite.
(scan_directory): Return pointer to struct directory.
(directory_contents, safe_directory_contents): New functions.
(get_directory_contents): Remove.
(name_fill_directory): New function.
(append_incremental_renames): Rewrite. This also fixes a memory
leak.
* src/names.c (name_gather, addname): Reflect changes in struct
name.
(add_hierarchy_to_namelist): Rewrite using name_fill_directory and
directory_contents.
(rebase_child_list): Update call to rebase_directory.
(collect_and_sort_names): Optimize
* src/misc.c (replace_prefix): New function.
* src/names.c (add_hierarchy_to_namelist): Use new
get_directory_contents.
* tests/incr05.at: New test case.
* tests/incr06.at: New test case.
* tests/Makefile.am, test/testsuite.at: Add incr05.at and
incr06.at.
* doc/Makefile.am (check-options): Improve rule.
* doc/tar.texi, NEWS: Update.
2009-08-07 Sergey Poznyakoff
Minor fixes.
* src/common.h (rebase_directory): New prototype.
* src/incremen.c (rebase_directory): Use replace_prefix.
* src/names.c (collect_and_sort_names): Abort if
hash_insert fails.
Improve listed incremental dumps.
The modified algorithm tries to avoid dumping the same
directory twice and ensures the order of the directories
in the resulting archive is the same, whatever their order
on the command line. It also fixes the operation of
--listed-incremental -C.
* gnulib.modules: Add canonicalize
* src/common.h (incremental_level): New global.
(check_exclusion_tags): first argument is const.
(get_directory_contents): Add third argument.
(zap_slashes, normalize_filename): New prototypes.
(chdir_count): New prototype.
(WARN_VERBOSE_WARNINGS): New define.
(WARN_ALL): Exclude WARN_VERBOSE_WARNINGS.
* src/compare.c (diff_dumpdir): Update the call to
get_directory_contents.
* src/create.c (check_exclusion_tags): First argument is const.
Use ISSLASH and DIRECTORY_SEPARATOR instead of referring to '/'.
* src/incremen.c (struct directory): New member `caname'.
(hash_directory_name): Rename to
hash_directory_canonical_name. Operate
on the canonical name.
(compare_directory_names): Rename to
compare_directory_canonical_names.
Operate on the canonical name.
(make_directory): Take two arguments.
(free_directory): Free caname.
(attach_directory): Create caname.
(find_directory): Use caname for lookups.
(PD_VERBOSE): Remove.
(PD_FORCE_INIT): New define.
(procdir): First argument is const.
Reinitialize directory if PD_FORCE_INIT bit is set.
Do not use PD_VERBOSE or verbose_option for issuing warnings.
Rely on WARNOPT instead.
Always set *entry.
(scan_directory): Take three arguments. The third one is a boolean
which is true if the directory is explicitly mentioned on
the command
line.
(get_directory_contents): Remove. Use scan_directory instead.
All callers updated.
(read_directory_file): Truncate the file if --level=0 is given.
* src/misc.c: Include canonicalize.h
(zap_slashes, normalize_filename): New functions.
(chdir_count): New function.
* src/names.c (add_hierarchy_to_namelist): Take three arguments,
as
get_directory_contents and scan_directory.
(collect_and_sort_names): Allow at most one -C, before file name
arguments.
Read directory file after eventual changing to another directory.
Avoid adding the same directory under different pathnames to
the list.
* src/tar.c: New option --level.
* tests/incr03.at, tests/incr04.at, tests/listed01.at,
tests/listed02.at, tests/rename01.at, tests/rename02.at,
tests/rename03.at: Update for new tar behavior.
* tests/multiv01.at: Do not use --listed-incremental.
2009-08-05 Sergey Poznyakoff
Forgotten to push src/warning.c
Implement the --warning option.
* src/warning.c: New file.
* src/Makefile.am: Add warning.c
* src/common.h: Provide definitions for warning classes.
(warning_option): New global.
(WARNOPT): New define.
(set_warning_option): New prototype.
* src/tar.c: New option `--warning'.
* src/compare.c: When applicable WARNOPT instead of WARN.
* src/create.c: Likewise.
* src/extract.c: Likewise.
* src/incremen.c: Likewise.
* src/list.c: Likewise.
* NEWS, doc/tar.texi: Update.
2009-08-05 Carl Worth
Fix descriptions of some options (tiny change)
2009-08-05 Sergey Poznyakoff
Fix backup handling and restoring file modes of existing
directories
* NEWS, THANKS: Update
* src/extract.c (extract_dir): reset status to 0 if the
directory already exists.
* src/misc.c (maybe_backup_file): Assign before_backup_name
and clear after_backup_name before checking if we really need
to backup the file.
* tests/backup01.at: New testcase.
* tests/extrac08.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add extrac08.at and
backup01.at
2009-07-30 Sergey Poznyakoff
Fix hard links recognition with -c --remove-files
* src/create.c (dump_hard_link): Always look up in the link table
if remove_files_option is set. Patch suggested by Theodore Ts'o
.
(check_links): Remove extra newline from the warning message.
* tests/link02.at, tests/link03.at: New testcases.
* tests/Makefile.am (TESTSUITE_AT): Add link02.at and link03.at
* tests/testsuite.at: Include link02.at and link03.at
Fix handling of hard link targets by -c --transform
* src/create.c (file_count_links): Transform link target
before the look up.
* tests/xform-h.at: New test case.
* tests/Makefile.am (TESTSUITE_AT): Add xform-h.at.
* tests/testsuite.at: Add xform-h.at
2009-06-23 Sergey Poznyakoff
Minor fix.
* src/extract.c (file_newer_p): Do not report error on ENOENT
2009-06-19 Sergey Poznyakoff
Remove rebox.el (reappeared after migration to Git)
2009-06-18 Sergey Poznyakoff
Remove files that were removed in CVS, but reappeared after
migration to Git
2009-06-18 David Bartley
Fix Solaris bug where chmod fails if we don't have
PRIV_SYS_LINKDIR
* gnulib.modules: Add priv-set.
* src/extract.c (set_mode, extract_archive): Restore
PRIV_SYS_LINKDIR on chmod failure.
* src/tar.c (main): Drop PRIV_SYS_LINKDIR on startup.
2009-06-18 Sergey Poznyakoff
Ensure default behavior for SIGPIPE
* src/tar.c (main): Install default handler for SIGPIPE.
Proposed by Bastian Blank.
2009-06-18 Eric Blake
Follow autoconf recommendation for TESTSUITEFLAGS.
* tests/Makefile.am (check-local, installcheck-local): Honor
TESTSUITEFLAGS.
2009-06-18 Sergey Poznyakoff
Fix handling of sub-subprocess returns.
* src/system.c (wait_for_grandchild): New function.
(sys_child_open_for_compress)
(sys_child_open_for_uncompress): Use wait_for_grandchild
to manage grandchild return.
2009-05-25 Sergey Poznyakoff
Report record size only if the archive refers to a device.
* Makefile.am (INCLUDES): Add ../lib, for rmt-command.h
* src/buffer.c (short_read): Report the actual record size
only if the archive descriptor refers to a device.
* tests/pipe.at, tests/shortrec.at,
tests/sparsemvp.at: Reflect the above change.
* NEWS, configure.ac: Version 1.22.90
2009-05-14 Sergey Poznyakoff
Do not issue errors on existing files when given the -k option
* Makefile.am (dist-hook): Fix rule.
* src/extract.c (maybe_recoverable): Return three-state value.
(extract_dir): Skip extraction if maybe_recoverable indicates so.
(extract_file): Likewise.
2009-05-12 Eric Blake
Avoid undefined behavior
* src/xheader.c (xheader_set_keyword_equal): Pass correct type to
ctype macros.
* src/transform.c (run_case_conv): Likewise.
2009-05-12 Sergey Poznyakoff
Remove src/Makefile.in
2009-03-12 Sergey Poznyakoff
Bugfixes.
* bootstrap (symlink_to_dir): Fix symlink calculation.
* doc/tar.texi: Minor fixes by Victor Villa and Stepan Kasal.
2009-03-07 Sergey Poznyakoff
Remove Makefile.in
Migrate to Git
2009-03-05 Sergey Poznyakoff
* src/incremen.c: --no-recursive works with --incremental.
2009-03-04 Sergey Poznyakoff
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.
2009-01-19 Sergey Poznyakoff
* doc/tar.texi: Fix typo.
2008-12-29 Sergey Poznyakoff
* bootstrap.conf: Include size_max.
* gnulib.modules: Remove memset, rmdir. Replace strdup with
strdup-posix. Patch by Eric Blake.
* src/tar.c: Implement -I as a shorthand for --use-compress-program.
* doc/tar.texi: Document -I.
* tests/pipe.at, tests/shortrec.at: Account for eventual 'Record
size' output.
* tests/testsuite.at (AT_TAR_CHECK_HOOK): New define
(AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros.
2008-11-30 Sergey Poznyakoff
* src/xheader.c: Remove duplicate inclusion of fnmatch.h. Reported
by Jim Meyering.
2008-11-25 Sergey Poznyakoff
Do not try to drain the input pipe before closing the
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/common.h (sys_drain_input_pipe): Remove
(sys_wait_for_child): Declare second argument.
* src/system.c (sys_drain_input_pipe): Remove.
(sys_wait_for_child): Take two arguments. The second one helps to
decide whether to tolerate child termination on SIGPIPE.
2008-11-03 Sergey Poznyakoff
* src/buffer.c (_write_volume_label): Fix typo, which prevented
`-V label -M' from working.
2008-10-30 Sergey Poznyakoff
* NEWS, configure.ac: Version 1.20.91
* doc/tar.texi: Document transformation scope flags.
* src/common.h (transform_symlinks_option): Remove in favor of
transformation scope flags.
(XFORM_REGFILE, XFORM_LINK, XFORM_SYMLINK, XFORM_ALL): New macros.
(transform_name, transform_member_name, transform_name_fp): Take
an additional argument, specifying scope flags.
* src/create.c: Reflect changes to transform_name.
* 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.
(transform_member_name): 2nd arg is int.
(decode_header): Transform file name and link target names.
* src/tar.c: Remove --transform-symlinks.
* src/transform.c (struct transform): New member `flags'.
(transform_flags): New variable.
(parse_transform_expr): Parse transformation scope flags. Allow to
set global flags using `flags=' syntax.
(_transform_name_to_obstack, transform_name_fp)
(transform_name): Take an additional argument, specifying scope
flags.
2008-10-19 Sergey Poznyakoff
* THANKS: Add Ed Leaver.
* src/buffer.c (short_read): Remove !read_full_records condition,
which was always false on a first record and thus disabled record
size autodetection. Thanks Ed Leaver for the patch.
(_gnu_flush_read): Handle blocking_factor == 1.
* tests/sparsemv.at: Reflect changes to buffer.c.
* tests/sparsemvp.at: Likewise.
* tests/volsize.at: Likewise.
* NEWS: Update.
2008-10-16 Sergey Poznyakoff
* src/common.h (transform_symlinks_option): New global.
* src/create.c (dump_file0): Transform symlink targets only if
explicitly required. Thanks Cyril Strejc for reporting the
problem.
* src/tar.c (parse_opt): New options --transform-symlinks and
--no-transform-symlinks. New alias --xform to the --transform
option.
* 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
* src/tar.c (options): Add --lzop option.
2008-10-05 Xavier Hienne (tiny change)
* src/checkpoint.c (checkpoint_compile_action): Add missing
`else'.
2008-09-24 Sergey Poznyakoff
* NEWS: Update.
* doc/tar.texi: Update.
* src/tar.c: New option --no-null.
2008-09-23 Sergey Poznyakoff
* src/common.h (filename_terminator): Remove global.
* src/tar.c (filename_terminator): New static.
* src/names.c (name_next_elt): Do not depend on
filename_terminator, this was a leftover from 1.13.
2008-09-18 Sergey Poznyakoff
* doc/tar.texi: Remove incorrect example.
2008-09-07 Sergey Poznyakoff
* src/incremen.c (dumpdir_create0): Eliminate gcc warning.
(attach_directory): Bugfix - add missing return statement.
* THANKS: Add Enric Hernandez
2008-07-31 Sergey Poznyakoff
* src/incremen.c (struct directory): New member `next'. Change
type of `name'.
(dirhead, dirtail): New statics.
(make_directory): Reflect changes to struct directory.
(free_directory, attach_directory): New functions.
(dirlist_replace_prefix): New function.
(note_directory): Use attach_directory, instead of make_directory,
(find_directory, find_directory_meta): Use free_directory.
(procdir): Replace directory prefixes in directory list to avoid
marking subdirectories as renamed after renaming their parent
directory.
(append_incremental_renames): Iterate over directory list, not
hash table, to preserve logical ordering of renames.
* tests/rename04.at, tests/rename05.at: New test cases.
* tests/Makefile.am, tests/testsuite.at: Add rename04.at and
rename05.at.
* 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
* src/tar.c (decode_options): Do not allow volume length less
than record size.
* src/buffer.c (_gnu_flush_write): Compensate for the effect
of eventual flush_archive occurring in the middle of buffer
move.
Increment records_written only if _flush_write was able to write
something.
* tests/multiv06.at: New testcase.
* tests/Makefile.am, test/testsuite.at: Add tests/multiv06.at
2008-06-26 Sergey Poznyakoff
* configure.ac, NEWS: Version 1.20.90
* doc/tar.texi: Document -J, --no-auto-compress, etc.
* src/buffer.c (ct_tar): New constant.
(magic): Add lzop support. Proposed by Kevin Day
.
(check_compressed_archive): Do not use autodetect if the
compression program was specified explicitly.
Fall back to analyzing archive name, if the autodetection fails.
* src/suffix.c: Add .lzo
* src/tar.c: New options --lzop and --no-auto-compress.
New short option -J (alias for --lzma).
* src/buffer.c (try_new_volume): Print more information with error
diagnostics.
(_gnu_flush_write): Improve error checking. Adjust
real_s_sizeleft before calling new_volume to avoid creating
malformed multivolume headers.
* tests/delete05.at, tests/gzip.at, tests/ignfail.at,
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
* doc/tar.texi (exclude): Document support for new VCS.
* THANKS: Update.
* NEWS: Update.
* tests/multiv05.at: Fix typos.
* tests/volsize.at: Remove a TZ dependency.
2008-06-14 Dan Drake (tiny change)
* src/tar.c (exclude_vcs_files): Support for Bazaar, Mercurial and
Darcs.
2008-05-06 Sergey Poznyakoff
* src/tar.c (main): Reword the "delayed error" message. New
wording proposed by Karl Berry.
2008-02-20 Sergey Poznyakoff
* configure.ac: Raise version number to 1.20
* src/compare.c (diff_dumpdir): const.
* src/common.h (dumpdir_t,dumpdir_iter_t): New data types.
(dumpdir_create0,dumpdir_create,dumpdir_free,dumpdir_locate)
(dumpdir_first,dumpdir_next): New functions.
* src/incremen.c (dumpdir_create0,dumpdir_create,dumpdir_free)
(dumpdir_first,dumpdir_next): New functions.
(dumpdir_locate): Rewrite using binary search.
(struct directory): Change members char *contents, *icontents to
struct dumpdir *dump, *idump. All references updated.
(note_directory): Last arg is const.
* src/names.c (add_hierarchy_to_namelist): buffer is const.
* 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
* src/create.c (dump_file0): Count links only for actually dumped
files.
2008-03-27 Sergey Poznyakoff
* NEWS: Document --no-check-device and --check-device.
* doc/rendition.texi: Change the way FIXME-*refs are handled in
!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.
Compare device numbers only if check_device_option is set.
* src/tar.c: New command line options --no-check-device and
--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
* bootstrap: Use rsync to get translations.
* doc/tar.texi: Minor change.
* lib/.cvsignore: Update
* po/.cvsignore: Update
* src/system.c: Remove include setenv.h.
* tests/atlocal.in (STAR_DATA_URL): Update.
* tests/star/README: Update URL.
2008-02-09 Sergey Poznyakoff
* doc/tar.texi: Fix a typo. Reported by Denis Excoffier.
2008-02-08 Sergey Poznyakoff
* NEWS: Update.
* configure.ac: Version 1.19.90
* po/POTFILES.in: Add missing files.
* src/compare.c (verify_volume): Honor --ignore-zeros.
Proposed by Jan-Benedict Glaw.
* tests/shortfile.at (AT_KEYWORDS): Add shortfile0.
2008-02-07 Sergey Poznyakoff
* NEWS: Update.
* src/create.c (dump_file0): Apply transform_name to symlink
targets.
2008-02-04 Sergey Poznyakoff
* src/transform.c: Support multiple --transform options. Support
semicolon-separated lists of replace expressions.
* NEWS, tar.texi: Document changes to the --transform option.
2008-01-30 Paul Eggert
* doc/tar.texi: Update Back-Cover text to reflect new GNU wording.
2007-12-17 Paul Eggert
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.
2007-12-05 Sergey Poznyakoff
* src/buffer.c (check_compressed_archive): Do not bail out if the
file is too short, set boolean flag, passed as an argument
instead. This fixes a bug introduced on 2007-08-24. See also
tests/shortupd.at.
* tests/Makefile.am, tests/testsuite.at: Add shortupd.at.
* tests/shortupd.at: New test.
2007-11-12 Jim Meyering
Don't read from name[-1].
* src/incremen.c (make_directory): Handle namelen == 0, since
find_directory_meta calls make_directory ("").
2007-11-07 Sergey Poznyakoff
* bootstrap (checkout): Use URL of the gnulib CVS mirror.
* gnulib.modules: Add fseeko and snprintf.
2007-10-31 Sergey Poznyakoff
* src/checkpoint.c: New actions: bell and ttyout
* src/system.c (sys_exec_info_script)
(sys_exec_checkpoint_script): pass the current blocking factor in
TAR_BLOCKING_FACTOR environment variable.
* doc/tar.texi: Update
* NEWS: Update
2007-10-30 Sergey Poznyakoff
* doc/Makefile.am: Use texi2html and the CVS version of gendocs.sh
to create HTML versions of the manual.
* doc/gendocs_template: Likewise.
* doc/tar.texi: Document --hard-dereference and
--checkpoint-action options. Improve documentation of
--check-links.
2007-10-29 Sergey Poznyakoff
* NEWS: Update
* configure.ac: Version 1.19.1
* po/POTFILES.in: Add src/checkpoint.c
* src/Makefile.am (tar_SOURCES): add checkpoint.c
* src/checkpoint.c: New file - checkpoint handling.
* src/buffer.c (checkpoint, do_checkpoint): Remove.
(_flush_write, simple_flush_read, _gnu_flush_read): Use
checkpoint_run.
* src/common.h (enum checkpoint_style): Remove.
(checkpoint_style): Remove.
(DEFAULT_CHECKPOINT): New define.
(hard_dereference_option): New variable.
(sys_exec_checkpoint_script): New declaration.
* src/create.c (file_count_links): do nothing if
hard_dereference_option is set.
* src/system.c (sys_exec_checkpoint_script): New function.
(sys_exec_info_script): Restore SIGPIPE handler.
* src/tar.c: (parse_opt): New options --hard-dereference,
--checkpoint-action.
(decode_options): Call checkpoint_finish_compile.
* src/system.c (sys_exec_info_script): Initialize buf. Problem
reported by Bengt-Arne Fjellner.
2007-10-18 Jim Meyering
Avoid compiler warnings.
* src/list.c (read_header_primitive): Define two locals, to
avoid incorrect "may be used uninitialized" warnings.
* src/incremen.c (procdir): Remove decl of unused local, "len".
2007-10-18 Sergey Poznyakoff
* doc/tar.texi (gzip): Remove compression patent
warning. According to Brett Smith, the patent is
expired.
2007-10-17 Sergey Poznyakoff
* src/suffix.c: New file. Compress format detection by archive
suffix (when creating). Suggested by Jean-Pierre Demailly.
* src/Makefile.am: Add suffix.c
* src/buffer.c (magic): Add an entry for new lzma format. Proposed
by Lasse Collin.
* src/common.h (set_comression_program_by_suffix): New prototype.
* src/tar.c: New options --auto-compress (-a) and --lzma
* THANKS: Add Lasse Collin and Jean-Pierre Demailly.
* NEWS: Update
* doc/tar.texi: Update
2007-10-12 Paul Eggert
* src/utf8.c (string_ascii_p): Recode to avoid bogus GCC 4.2.1
warning about "comparison is always true due to limited range of
data type" when char is unsigned.
2007-10-11 Paul Eggert
Adjust to recent gnulib changes.
* configure.ac: Dont' check for strerror, since gnulib now does this.
* .cvsignore: Add m4, tar-[0-9]*.
* lib/.cvsignore: Adjust to various gnulib file name changes.
Add .deps, rmt-command.h.
2007-10-10 Sergey Poznyakoff
* configure.ac, NEWS: Raise version number to 1.19
* tests/star/README: Update
2007-10-05 Sergey Poznyakoff
* src/create.c (dump_regular_file): Fix file padding in case of
truncation to zero size.
* NEWS: Update
2007-10-04 Sergey Poznyakoff
* tests/T-null.at: Use AT_DATA for sample output.
2007-10-03 Sergey Poznyakoff
* src/incremen.c (try_purge_directory): Ensure that arguments to T
and R are safe.
2007-09-29 Sergey Poznyakoff
* src/incremen.c (obstack_code_rename): Apply safer_name_suffix to
name arguments before storing them in T and R records. Reported by
Nicholas Cole.
2007-09-27 Sergey Poznyakoff
* configure.ac: Raise version number to 1.18.90
* NEWS: Likewise
* doc/snapshot.texi: Document version 2.
* doc/dumpdir.texi: Update.
Implement --exclude-tag* and --exclude-cache* options for listed
incremental archives.
New option --exclude-vcs to exclude VCS-specific files and
directories.
* NEWS: Update
* doc/tar.texi: Document --exclude-vcs option
* src/common.h (exclusion_tag_warning, check_exclusion_tags): New
prototypes.
* src/create.c (exclusion_tag_warning, check_exclusion_tags):
Remove static qualifier.
(check_exclusion_tags): account for dirname without terminating
slash.
(dump_dir0): exclusion_tag_all is handled elsewhere.
* src/incremen.c (struct directory): New member tagfile
(make_directory): Initialize tagfile to NULL
(procdir): New argument: entry
Hanlde exclusion tags.
(makedumpdir): Take into account directory->tagfile.
(scan_directory): Hanlde exclusion tags.
* src/tar.c: New option --exclude-vcs
(exclude_vcs_files): New function
2007-09-14 Paul Eggert
* AUTHORS: Remove unnecessary information. Just list the
principal authors.
* THANKS: Remove info duplicated from AUTHORS.
2007-08-25 Jim Meyering
Don't include . No longer needed.
* src/incremen.c: Don't include . No longer needed.
* src/buffer.c: Likewise.
* src/system.c: Likewise.
* src/tar.c: Likewise.
Avoid shadowing and unused-variable warnings.
* src/create.c (check_exclusion_tags): Remove declaration of unused
local, "ret".
* src/compare.c (diff_dumpdir): Rename stat->stat_data to avoid
shadowing the syscall.
* src/buffer.c (do_checkpoint): Don't shadow the write syscall.
(try_new_volume): Avoid shadowing "access".
* src/tar.c (decode_options): Rename index->idx to avoid shadowing.
(find_argp_option): Rename option->o to avoid shadowing.
* src/incremen.c (scan_directory): Rename local, dir_name->dir,
to avoid shadowing the function.
(get_directory_contents): Likewise.
* src/system.c (global_pid): Rename from "pid", to avoid being
shadowed by locals.
* src/extract.c (apply_nonancestor_delayed_set_stat):
Rename st->sb to avoid shadowing another local.
2007-08-24 Sergey Poznyakoff
* configure.ac, NEWS: Raise version number to 1.18.1
* src/buffer.c (check_compressed_archive): Detect files smaller
than 512 bytes.
* tests/shortfile.at: New test case for the above change.
* tests/testsuite.at, tests/Makefile.am: Add shortfile.at
2007-08-19 Sergey Poznyakoff
* bootstrap: Gnulib initialization destroyed paxutils m4 files.
Initialize paxutils structure after that of gnulib.
2007-08-12 Sergey Poznyakoff
* src/names.c (contains_dot_dot): Fix double-dot recognition in
case of duplicate /. Patch by Dmitry V. Levin.
* bootstrap (symlink_to_gnulib): Make sure the target directory
exists and create it if it does not.
* doc/tar.texi: Fix a typo.
2007-06-28 Sergey Poznyakoff
* bootstrap: Update for the change of the TP URL
2007-06-27 Sergey Poznyakoff
Relicense under GPLv3
2007-06-21 Sergey Poznyakoff
* tests/testsuite.at (AT_TAR_MKHIER): Skip test if genfile is
unable to create the file
* tests/lustar01.at: Likewise
2007-06-21 Eric Blake
Resolve testsuite failures 40-42 on cygwin.
* tests/testsuite.at (AT_TAR_MKHIER): Skip tests when long
file names cannot be created.
2007-06-16 Sergey Poznyakoff
* doc/Makefile.am (tar_TEXINFOS): Add tar-snapshot-edit.texi
* doc/tar-snapshot-edit.texi: New file
* doc/tar.texi (Fixing Snapshot Files): New appendix
* scripts/tar-snapshot-edit: New file
* tests/extrac07.at: Add back write permissions on dir
2007-06-09 Sergey Poznyakoff
* tests/exclude.at: Sort the output.
2007-06-08 Sergey Poznyakoff
* configure.ac, NEWS: Raise version number to 1.17
* doc/tar.texi, doc/intern.texi: Replace: s/filename/file name/;
s/(ASCII|ID|BSD)/@acronym{&}/;s/"[^"]+"/``&''/
Use `path' only when it refers to search paths, use
`file name' otherwise.
Fix various errors (based on patch by Benno Schulenberg)
* doc/tar.texi (Operation Summary): Restore alphabetical order of
the options.
2007-06-02 Sergey Poznyakoff
Fix bug, introduced on 2007-03-30.
* src/common.h (xform_type): New data type
(transform_member_name): Last argument is of xform_type type
All callers updated
* src/extract.c: Update calls to transform_member_name
* src/list.c (decode_xform): Exempt symbolic links from component
stripping and name suffix normalization.
* tests/extrac07.at: Update
2007-05-30 Sergey Poznyakoff
* src/xheader.c (decx): Unknown pax keywords produce a warning,
not error.
2007-05-29 Paul Eggert
* src/misc.c (set_file_atime): Use gl_futimens, not futimens,
due to gnulib change.
2007-05-19 Sergey Poznyakoff
* src/common.h (buffer_write_global_xheader): New function
(struct xheader): Move definition to tar.h
(extended_header): Remove global
(xheader_init): New function
(xheader_decode_global,xheader_store,xheader_read)
(xheader_write_global,xheader_write,xheader_string_begin)
(xheader_string_add,xheader_string_end): Take xhdr as first
argument.
* src/tar.h (struct xheader): New definition
(struct tar_stat_info): New member xhdr (extended header).
* src/xheader.c (xheader_init): New function
(xheader_decode_global,xheader_store,xheader_read)
(xheader_write_global,xheader_write,xheader_string_begin)
(xheader_string_add,xheader_string_end): Take xhdr as first
argument.
* src/buffer.c (buffer_write_global_xheader): New function
Update to use new xheader calls.
* src/compare.c, src/create.c, src/delete.c, src/list.c,
src/sparse.c, src/tar.c, src/update.c: Global extended_header
removed, use new xheader calls instead.
* tests/T-null.at: Minor fix
* tests/atlocal.in (tarball_prereq): Discard eventual md5sum
output.
2007-05-18 Sergey Poznyakoff
* src/create.c (dump_file0): Original ctime cannot be used as a
directory change indicator if --remove-files is given.
2007-04-12 Paul Eggert
Adjust to latest Gnulib.
* lib/.cvsignore: Add dirfd.c, dirfd.h, float+.h, mbscasecmp.c,
stdio.h, stdio_.h, stdlib.h, stdlib_.h, time.h, time_.h, unistd.h.
Remove exit.h, getcwd.h, mempcpy.h, memrchr.h, mkdtemp.h, stpcpy.h,
strcase.h, strchrnul.h, strdup.h, strndup.h, strnlen.h, time_r.h,
vsnprintf.h.
* m4/.cvsignore: Remove localedir.h. Sort.
2007-04-03 Paul Eggert
* src/common.h (closeopen): Remove decl.
* src/misc.c: Don't include , ; no longer
needed.
(get_max_open_files, closeopen): Remove. All callers removed.
(chdir_dir): Use a different technique, which doesn't rely on closing
all open files.
* src/tar.c (main): Don't call closeopen.
2007-04-04 Sergey Poznyakoff
* NEWS: Update
* doc/tar.texi: Update
* src/system.c (sys_exec_info_script): Store the
inter-communication fd in the environment variable TAR_FD
2007-04-03 Sergey Poznyakoff
* src/tar.c (main): Move closeopen after decode_options to
allow shell process substitution to work.
* tests/extrac07.at: Expect a warning on stderr.
2007-03-30 Sergey Poznyakoff
* src/common.h (transform_name_fp): Change signature
(transform_member_name): New function
* src/extract.c (extract_link, extract_symlink): Use
transform_member_name instead of safer_name_suffix so that
--transform and --strip-components affect links as well.
* src/list.c (transform_member_name): New function
(decode_header): Use transform_member_name
* src/names.c (all_names_found): Remove check for matching_flags.
* NEWS: Update
* TODO: Update
* bootstrap (slurp): Remove any occurrences of $bt from the
generated gnulib.mk
* src/incremen.c: Do not include mkdtemp.h
2007-01-26 Paul Eggert
Adjust to recent gnulib changes.
* lib/.cvsignore: Add fchownat.c, rmt-command.h, strerror.c, string.h,
string_.h, sys, sys_time_.h, unistd_.h, wchar_.h, wctype_.h.
Remove localedir.h, size_max.h, xsize.h.
* src/xheader.c: Don't include stpcpy.h; no longer needed, now that
gnulib string.h defines stpcpy on all platforms.
2007-01-23 Sergey Poznyakoff
* doc/tar.texi: Document --exclude-caches* and --exclude-tag*
options.
* src/common.h (exclude_caches_option): Remove
(enum exclusion_tag_type): New data type
(add_exclude_tag): Rename to add_exclusion_tag
(cachedir_file_p): New prototype
* src/create.c (struct exclude_tag): rename to exclusion_tag
(check_exclusion_tags): New function
(cachedir_file_p): New function (from check_cache_directory)
(dump_dir0,dump_file0): Use check_exclusion_tags
* src/tar.c: New options --exclude-caches-all,
--exclude-caches-under, --exclude-tag-all, --exclude-tag-under
* tests/exclude.at: New file
* tests/Makefile.am (TESTSUITE_AT): Add exclude.at
* tests/testsuite.at: Add exclude.at
2007-01-19 Sergey Poznyakoff
* gnulib.modules: Require strerror
* doc/gendocs_template: Fix typos
* scripts/xsparse.c (expand_sparse): use ftruncate to handle the
trailing hole
* src/sparse.c (sparse_skip_file,pax_dump_header_1)
(pax_decode_header): Keep track of the number of bytes
written.
* configure.ac: Version 1.16.2
* NEWS: Update
2007-01-04 Sergey Poznyakoff
* src/compare.c (diff_dumpdir): Compare directory contents using
dumpdir_cmp. Do not free dumpdir_buffer, it will leave the
incremental directory table in the inconsistent state and trigger
full dump.
(read_and_process): Process dumpdirs no matter what the archive
format.
* src/incremen.c (list_dumpdir): Minor fixes.
* src/compare.c (read_and_process): Fix type of "size"
2006-12-13 Sergey Poznyakoff
* tests/T-null.at: Skip the test if genfile is not able to create
the filename with an embedded newline.
2006-12-12 Paul Eggert
Port to Forte Developer 7 C 5.4 and C99.
* src/common.h (add_exclude_tag): Add decl; C99 requires this
and Forte warns about it.
* src/incremen.c: Include for mkdtemp prototype,
for same reason.
* src/misc.c (get_max_open_files): Rewrite to avoid code that
Forte C complains about as being unreachable.
* src/xheader.c (mtime_code): Rewrite to avoid Forte error
reported by Trond Hasle Amundsen.
* src/incremen.c (compare_dirnames): Rewrite to avoid casts.
* src/utf8.c (string_ascii_p): Likewise.
* src/xheader.c (mtime_coder, volume_size_coder, volume_offset_coder):
Likewise.
2006-12-08 Sergey Poznyakoff
* bootstrap: Add paxutils files to dot_ignore.
* configure.ac: Raise version number to 1.16.1
* bootstrap (slurp): Create .(cvs|git)ignore if not present
* po/.cvsignore, m4/.cvsignore: Remove automatically generated
files.
2006-12-07 Sergey Poznyakoff
* NEWS: Update
* Makefile.am (distclean-local): Fixed
* doc/tar.texi: Update documentation of --exclude-tag
* src/create.c (dump_dir0): Move checks for exclude tags to
dump_file0.
(dump_dir): Move calls to ensure_slash to dump_file0
* src/extract.c (extract_file): Call skip_member if open fails.
Patch proposed by Jan-Benedict Glaw
* tests/truncate.at: Use genfile instead of dd, because on some
systems /dev/zero is not available.
2006-12-04 Paul Eggert
* NEWS: Fix some race conditions with tar -x --same-owner.
* src/extract.c (ARCHIVED_PERMSTATS): Add a comment saying that
S_IRWXG | S_IRWXO might be masked out.
(set_mode): Set the mode if some bits were masked out originally.
(set_stat): Don't chmod before chown, as that might temporarily
grant permissions that we don't want to grant. The chmod was
there only to work around broken hosts, so add a comment advising
users not to use those broken hosts instead.
(repair_delayed_set_stat, extract_dir):
Remember to mask out current umask before inverting permissions.
(extract_dir): If the owner might change, or if the mode has
special bits, create the directory 700 at first, but restore it later.
(open_output_file): New arg mode; all uses changed.
(extract_file, extract_node, extract_fifo): If the owner might
change, omit group and other bits at first, but restore them after
changing the owner.
2006-12-04 Jim Meyering
* doc/tar.texi (Long Options): Remove doubled word.
2006-11-30 Sergey Poznyakoff
* src/xheader.c (xheader_read): Remove unused variable
* po/POTFILES.in: Remove src/mangle.c
* bootstrap: Implement --update-po and .bootstrap
* src/create.c (dump_dir0): Implement --exclude-tag option
* src/tar.c: Likewise
* doc/tar.texi (exclude): Document --exclude-tag
2006-11-29 Paul Eggert
* NEWS: Remove support for mangled names.
* doc/tar.texi (verbose tutorial): Likewise.
* src/Makefile.am (tar_SOURCES): Remove mangle.c.
* src/common.h (extract_mangle): Remove decl.
* src/extract.c (extract_mangle_wrapper): Remove.
(prepare_to_extract): Remove support for mangled names.
* src/list.c (read_and, print_header): Likewise.
* src/mangle.c: Remove.
* src/tar.h (GNUTYPE_NAMES): Remove.
Port to latest gnulib. There were a lot of changes, so the
simplest way to get this up and running was to switch to coreutils
bootstrap procedure. I noticed one feature missing after this
merge: the ability to update a single .po file. I can add that
later if need be.
* README-cvs, bootstrap.conf: New files.
* lib/.cvsignore: Remove Makefile.am, printf-parse.c, vasnprintf.c.
Add fstatat.c, gnulib.mk, openat-proc.c, same-inode.h, stat_.h,
tempname.c, tempname.h, uinttostr.c.
* lib/printf-parse.c, lib/vasnprintf.c: New files, from coreutils,
to override gnulib, so that we don't need xsize.h.
* bootstrap: Replace with coreutils bootstrap, except add support
for paxutils.
* configure.ac (gl_USE_SYSTEM_EXTENSIONS): Remove, as gl_EARLY now
does this.
(gl_EARLY, gl_INIT): Add.
(tar_GNULIB): Remove.
* gnulib.modules: Add configmake.
* lib/Makefile.tmpl: Remove, replacing with....
* lib/Makefile.am: New file.
* src/Makefile.am (tar.o): Remove dependency: Automake does this
for us.
* src/tar.c: Include and , not
.
2006-11-13 Sergey Poznyakoff
* src/xheader.c (mtime_coder): Treat non-null data as a pointer to
struct timespec, overriding st->mtime
* src/create.c (start_header): Pass mtime as a call-specific data
to xheader_store.
* tests/truncate.at: Do not use 'k' modifier in dd options.
* tests/append02.at: Do not depend on command timing.
2006-11-01 Sergey Poznyakoff
* src/tar.c (enum read_file_list_state.file_list_skip): New value
(read_name_from_file): Skip zero-length entries
* tests/T-empty.at: New test case
* tests/T-null.at: New test case
* tests/extrac07.at: New test case
* tests/Makefile.am: Add new test cases.
* tests/testsuite.at: Add new test cases.
* tests/extrac02.at: Add more keywords
* tests/extrac04.at: Likewise
* tests/extrac06.at: Likewise
* tests/shortrec.at: Do not assume tar's default archive is stdout
2006-10-31 Sergey Poznyakoff
* src/extract.c, src/xheader.c: Call last_component instead of
base_name. The latter returns a malloced string since 2006-03-11.
2006-10-21 Sergey Poznyakoff
* NEWS, configure.ac: Version 1.16
* Makefile.am (distclean-local): New rule
2006-10-17 Sergey Poznyakoff
* src/tar.c: Fix help output formatting. Thanks Benno
Schulenberg.
2006-10-16 Sergey Poznyakoff
* Makefile.am (dist-hook): Create a cpio archive.
* NEWS: Update
2006-10-14 Sergey Poznyakoff
* doc/tar.texi (Synopsis): Document tar exit codes.
* src/create.c (dump_regular_file,dump_file0): Set exit_status to
TAREXIT_DIFFERS if the file being dumped was truncated or
otherwise changed.
* src/tar.c: Do not attempt to close stderr after call to
close_stdout.
* tests/grow.at: New test case
* tests/Makefile.am: New test grow.at
* tests/testsuite.at: Likewise
* tests/truncate.at (AT_KEYWORDS): Keyword `filechange'
Test tar exit status.
* src/buffer.c (_open_archive): Make sure stdlis is set to stderr
when we are writing archive to stdout (unless --index-file is
used). Bug introduced on 2006-07-06.
* tests/Makefile.am: New test verbose.at
* tests/testsuite.at: Likewise
* tests/indexfile.at (AT_KEYWORDS): Add stdout keyword
* tests/verbose.at: New test case
2006-10-02 Sergey Poznyakoff
* THANKS: Add Joerg Weilbier
* src/buffer.c (new_volume): Initialize current_block
* src/xheader.c (xheader_string_end): Fix diagnostic message.
* tests/multiv05.at: New testcase.
* tests/Makefile.am, tests/testsuite.at: Add multiv05.at
2006-09-27 Sergey Poznyakoff
* bootstrap: Use ${package} instead of hardcoding package name
* doc/tar.texi: Minor fix
* src/tar.c (doc0, doc1, initialize_argp_doc): Removed. Rely on
the new argp method instead.
2006-09-12 Sergey Poznyakoff
* README: Fix a typo
2006-09-08 Paul Eggert
Adjust to latest gnulib.
* lib/.cvsignore: Add at-func.c, configmake.h, fchmodat.c,
fcntl.h, fcntl_.h, inttypes_.h, lstat.c, lstat.h.
* tests/testsuite.at (AT_TAR_MKHIER): Use install-sh -d
rather than the no-longer-included mkinstalldirs.
2006-09-08 Sergey Poznyakoff
* src/incremen.c (try_purge_directory): Initialize struct st. Fix
condition for selecting candidates for removal.
* README-alpha: List texinfo among build prerequisites for the CVS
version.
* bootstrap (intl_files_to_remove): Do not remove m4/inttypes-h.m4
and m4/inttypes-pri.m4
2006-08-11 Paul Eggert
* bootstrap: Set XGETTEXT_OPTIONS to flag our printf-format functions,
so that translators are warned about strings that are formats but
don't look like formats. This might help prevent core dumps.
* configure.ac (AM_GNU_GETTEXT): Upgrade to need-formatstring-macros.
Suggested by Eric Blake to avoid problems like
.
(AM_GNU_GETTEXT_VERSION): Upgrade from 0.12.1 to 0.15. The gettext
manual says we should use the version number normally expected of
maintainers, neither more nor less.
* bootstrap (get_translations):
Don't exclude ky.po; it is working again.
2006-08-09 Paul Eggert
* bootstrap (get_translations):
Don't exclude ja.po; it is working again.
Don't remove all old .po files if we're merely updating one.
* po/.cvsignore: Add Makevars.
2006-08-07 Paul Eggert
* src/tar.c: Work around limitation imposed by gettext 0.15
by concatenating strings with "\v" after translation.
(doc): Remove, splitting into:
(doc0, doc1): New constants.
(argp): Don't use doc; just initialize to NULL.
(initialize_argp_doc): New function.
(decode_options): Use it.
* bootstrap: Redo po file retrieval to match Bison's method,
since the translation project changed its index format.
Don't use --assume-autoconf; it's now replaced
by looking in configure.ac.
(m4/codeset.m4, m4/intdiv.m4, m4/inttypes-pri.m4, m4/isc-posix.m4):
(m4/lcmessage.m4, m4/onceonly_2_57.m4, m4/gettext.m4, m4/glibc21.m4):
(m4/inttypes_h.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4):
(m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4):
Don't rename to ..._gl.m4, as this is no longer needed.
(m4/geteext.m4): Patch to remove the need for intl/*.
Use autopoint manually, then remove the intl files,
then undo changes to gnulib files that autoreconf made,
and then run aclocal/autoconf/autoheader/automake.
This makes our bootstrap procedure closer to Bison's.
(po/Makevars): Generate automatically.
* configure.ac (AC_PREREQ): Update from 2.59 to 2.60.
(gl_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T): Remove.
* gnulib.modules: Add inttypes, stdint.
* lib/.cvsignore: Add close-stream.c, close-stream.h,
stdint.h, stdint_.h.
* po/Makefile: Remove; now automatically generated.
* src/incremen.c (read_incr_db_01): Check input strings more
carefully. Do not pass arbitrary char values to isspace, as
this has undefined behavior. Likewise for assigning arbitrary
uintmax_t values to other types.
(read_negative_num, read_unsigned_num, read_timespec):
New functions, to check input values a bit more carefuly.
(read_num): Use read_unsigned_num. New arg MAX_VAL;
all callers changed.
(read_incr_db_2): Use these new functions.
Use a consistent diagnostic for unexpected EOF.
(read_directory_file): Do not assign arbitrary uintmax_t value
to int.
(read_timespec, write_directory_file_entry, write_directory_file):
Handle negative time_t values correctly. We don't bother to do
this with pre-2 formats, since presumably the time stamps were
output incorrectly.
* src/tar.c (doc): Don't use \v in an argument to gettext;
gettext 0.15 rejects this.
2006-07-24 Sergey Poznyakoff
* src/tar.c (decode_options): Do not require -L with -M -Hpax.
It could be needed in future, but currently it is not.
* src/create.c (to_chars_subst): Update comment regarding OLDGNU
vs. GNU format differences.
(mode_to_chars): Treat OLDGNU_FORMAT same as GNU_FORMAT. Fixes bug
reported by TAMUKI Shoichi , which caused
equivalent `tar cf ...' and `tar rf ...' commands to produce
different archives.
* tests/append02.at: New test case
* tests/Makefile.am, tests/testsuite.at: Add append02.at
2006-07-20 Paul Eggert
* bootstrap: Adjust to today's change to gnulib-tool by invoking
it with --assume-autoconf='latest-stable'.
2006-07-16 Paul Eggert
Adjust to recent gnulib changes.
* lib/.cvsignore: Remove atexit.c, exit.c, getndelim2.c, getndelim2.h,
pathmax.h, paxconvert.c, paxerror.h, xstrdup.c.
Add inttypes.h, mktime.c, wcwidth.h, xstrndup.c, xstrndup.h.
* src/create.c (start_header): Adjust to API change to mode_adjust.
2006-07-09 Sergey Poznyakoff
* THANKS: Add Ralf Wildenhues
* NEWS: Update
2006-07-09 Ralf Wildenhues
* doc/dumpdir.texi, doc/snapshot.texi, doc/sparse.texi,
doc/tar.texi: Fix some typos.
2006-07-06 Sergey Poznyakoff
tar --index-file=FILE --file=- sent the archive to FILE, and
the listing to stderr. Bug reported by Marcin Gryszkalis
* src/buffer.c (_open_archive): Remove stdlis initialization
* src/tar.c (decode_options): Initialize stdlis
* tests/indexfile.at: New test case
* tests/testsuite.at: Include indexfile.at
* tests/Makefile.am (TESTSUITE_AT): Add indexfile.at
2006-07-05 Sergey Poznyakoff
* doc/Makefile.am (manual): Fix TEXINPUTS
* doc/rendition.texi (FIXME): Do not use deprecated @quote-args.
Do not use @allow-recursion. In its current form the macro is not
recursive.
2006-07-03 Sergey Poznyakoff
* bootstrap (update_po): Fix single translation update
2006-07-03 Sergey Poznyakoff
* configure.ac (AC_CHECK_FUNCS): Check for getdtablesize
* src/common.h (closeopen): New function
* src/misc.c (chdir_arg): Use x2nrealloc to reallocate wd.
(get_max_open_files,closeopen): New functions
(chdir_do): Do not use save_cwd if it was already used more than
max_open_files-4 times to avoid running off the file
descriptors.
* src/tar.c (main): Call closeopen
* doc/tar.texi: Update --directory description
* NEWS: Update
2006-06-26 Sergey Poznyakoff
* doc/tar.texi: Update. Add cross-references.
* doc/sparse.texi: Add cross-references.
2006-06-25 Sergey Poznyakoff
* scripts/xsparse.c: A sample utility to expand sparse files
extracted by third-party tars. It is not meant to be installed nor
to be included in the distribution. It is here, so that it can be
obtained either from CVS or from the tar web site.
* doc/Makefile.am (tar_TEXINFOS): Sorted
* doc/tar.texi (Other Tars): New node describing how to extract
GNU-specific member formats using third-party tars.
* src/common.h (sparse_file_p): Remove
* src/sparse.c: Likewise
* src/create.c: Use ST_IS_SPARSE instead of sparse_file_p (update
paxutils first)
* src/tar.c: --sparse-version turns on --sparse
2006-06-24 Sergey Poznyakoff
* src/buffer.c (print_total_stats): Add default case.
* src/common.h (name_init): New prototype.
(xheader_string_end): Return bool.
* src/extract.c (extract_volhdr): Add missing return
* src/incremen.c: Remove not used variables
* src/sparse.c (pax_dump_header_0): Return false if
xheader_string_end fails (for 0.1 formats).
(pax_dump_header): Return meaningful value
* src/transform.c (segm_count): Change type to size_t
* src/xheader.c (xhdr_tab.decoder): pass keyword as a second
argument. All callers changed.
(decode_record): Check for numeric overflow
(xheader_string_end): Return boolean value. Check for possible
numeric overflow
2006-06-23 Sergey Poznyakoff
* doc/sparse.texi: New file
* doc/Makefile.am (tar_TEXINFOS): Add sparse.texi
* doc/intern.texi (Sparse Formats): New node
* doc/tar.texi: Update master menu
* src/common.h (tar_sparse_major,tar_sparse_minor): New globals.
* src/sparse.c: Implement sparse format versioning. Implement new
version (1.0) of PAX sparse format.
(pax_sparse_member_p): Fix condition
(pax_dump_header): A dispatcher function
(pax_dump_header_0,pax_dump_header_1): New functions.
(pax_optab): Update
(oldgnu_dump_header): Minor fix: make sure
sparse_header.isextended is set before calling
set_next_block_after
* src/tar.c: New option --sparse-version
* src/tar.h (struct tar_stat_info.sparse_major,sparse_minor): New
members.
* src/xheader.c: Implement new keywords: GNU.sparse.name,
GNU.sparse.major, GNU.sparse.minor, GNU.sparse.realsize
* tests/spmpv00.at, tests/spmvp01.at, tests/spmvp10.at: New
testcases.
* tests/Makefile.am: Add spmvp00.at, spmpv01.at, spmpv10.at
* tests/shortrec.at: Explicitely give `-f -' to the tar invocation
* tests/sparsemvp.at: Rewritten as an include file.
(TAR_MVP_TEST): New macro
* tests/testsuite.at: Include sparsemvp.at, spmvp00.at,
spmvp01.at, spmvp10.at
2006-06-21 Sergey Poznyakoff
* doc/tar.texi (Overriding File Metadata): New node
Document --mtime option.
* src/common.h (set_mtime_option,mtime_option): New globals
* src/create.c (start_header): Override mtime if requested
* src/tar.c: Implement new option, --mtime, allowing to set
modification times for all archive members during creation.
(struct tar_args): textual_date_option replaced with a linked list
textual_date. All references updated.
(get_date_or_file,report_textual_dates): New functions.
* configure.ac: Raise version number to 1.15.92
* NEWS: Update
2006-06-20 Sergey Poznyakoff
* src/common.h (struct name.explicit): Remove
Use variable names in all declarations
(name_scan): Remove second argument
* src/delete.c: Remove second argument from calls to name_scan
* src/update.c: Likewise
* src/incremen.c (procdir): Use is_individual_file to check for
files explicitely specified in the command line. Fixes bug
reported by Dat Head on 19 Jun 2006 (descending into mountpoints
with --one-file-system in use)
* src/misc.c (maybe_backup_file): Second argument is bool
* src/names.c (name_next_elt): Call register_individual_file
(namelist_match): Remove third argument
(name_match): Change return type to bool
(name_scan): Remove second argument
* src/sparse.c (pax_dump_header): Store original sparse file name
in GNU.sparse.name variable. The name field in the ustar header
now contains generated name (%d/GNUSparseFile.%p/%f), so that
non-pax-aware tars won't extract the file under the original
filename.
* src/xheader.c (GNU.sparse.name): New variable for storing sparse
file name.
2006-06-13 Sergey Poznyakoff
* doc/Makefile.am (check-options): Expand macros before grepping
in $(info_TEXINFOS)
* doc/rendition.texi (FIXME) [!PROOF_FOOTNOTED]: Enclose in a
cartouche
* doc/tar.texi: Define op as codeindex. Use special macros to
populate it
Consequently prefer @dfn{long options} over @dfn{mnemonic
options}.
Document --unquote, --no-unquote
(Short Option Summary): Build a table of cross-references to the
corresponding long options.
(Using Multiple Tapes,Multi-Volume Archives): Rewritten
* doc/value.texi (xopindex,opsummary): New macros
* doc/Makefile.am (check-options): New goal
* doc/tar.texi: Update
* src/tar.c: Implement --overwrite-dir option (long ago
documented).
2006-06-12 Sergey Poznyakoff
* doc/tar.texi: Document better the --totals option
* NEWS: Update
* src/buffer.c (total_blocks_deleted): New variable
(set_start_time): Set volume_start_time and last_stat_time as well
(set_volume_start_time): New function
(compute_duration): Do not call set_start_time, update
last_stat_time instead. Use it in calculation instead of
start_time, which is now set only once, upon startup.
(print_total_written): Removed.
(print_total_stats): New function for printing byte/speed statistics.
(_open_archive): Detect attempts to update compressed archives.
(_gnu_flush_write): Always update prev_written.
(open_archive): Call set_volume_start_time.
* src/common.h (volume_start_time,last_stat_time): New globals
(print_total_written): Replaced with:
(print_total_stats): New function
* src/delete.c (records_skipped): Remove static qualifier, the
variable is used by print_total_stats in buffer.c
* src/extract.c (check_time): Use volume_start_time when checking
for timestamp plausability.
* src/tar.c: (options, parse_opt): Allow for optional argument to
the --totals option, which specifies a signal upon delivery of which
the statistics must be output.
(main): Call print_total_stats if total_option is set.
2006-06-11 Sergey Poznyakoff
* src/xheader.c (xheader_set_single_keyword): Fix typo.
(decode_time): Avoid using gotos.
* doc/mastermenu.el: New file
* doc/Makefile.am (master-menu): New goal
* doc/tar.texi: Update master menu
2006-06-10 Sergey Poznyakoff
* doc/tar.texi: Remove leftover include
2006-06-09 Sergey Poznyakoff
* doc/Makefile.am (tar_TEXINFOS): Add intern.texi
(EXTRA_DIST): Remove convtexi.pl, add texify.sed
* doc/intern.texi: New file
* doc/convtexi.pl: Remove
* doc/texify.sed: Auxiliary script to convert ../src/tar.h to
header.texi
* doc/rendition.texi: Fix typo
* doc/tar.texi: Update
* src/tar.h: Fix indentation, introduce end-of-format marker for
texify.sed
* THANKS: Add Jason Armistead
* doc/tar.texi: Update
* NEWS: Update
* src/buffer.c: Implement more flexible checkpoint style
* src/common.h (checkpoint_option): Change type to unsigned
(checkpoint_style): New variable.
* src/tar.c: --checkpoint takes an optional argument specifying
number of records between two successive checkpoints (proposed
by Jason Armistead on 2004-06-22). Optional dot starting the
argument means "print dots instead of textual checkpoints".
(tar_help): New function
* src/transform.c: Minor fixes.
2006-06-08 Sergey Poznyakoff
* gnulib.modules: Add mkdtemp
* doc/dumpdir.texi: New file
* doc/Makefile.am (tar_TEXINFOS): Add dumpdir.texi
* doc/tar.texi: Document dumpdir format
* src/incremen.c (dumpdir_locate,obstack_code_rename):
(purge_directory): Re-implement renaming. Introduce
'X' control code.
(make_tmp_dir_name): Remove
* src/transform.c (set_transform_expr,_transform_name_to_obstack):
Implement NUMBER flag.
(add_char_segment): Fix length assignement
* doc/tar.texi: Update
2006-06-07 Sergey Poznyakoff
* src/transform.c (transform_name_fp): Run fun even if
_transform_name_to_obstack returns false.
(_transform_name_to_obstack,set_transform_expr): Implement GNU
extension case conversion operations.
* doc/tar.texi (transform): Document the option.
2006-06-02 Sergey Poznyakoff
* NEWS: Update
* src/common.h (set_transform_expr): New function
* tests/Makefile.am: Add incr04.at
* tests/testsuite.at: Likewise
* tests/incr04.at: New test case
* tests/long01.at: Fix typo in the comment
* tests/multiv04.at: Use genfile --files-from
(Above changes need new genfile.c from paxutils)
* TODO: Update
* NEWS: Update
* doc/tar.texi: Update
* src/transform.c: New file
* src/Makefile.am (tar_SOURCES): New module transform.c
* src/common.h (transform_name, transform_name_fp): New functions
(show_stored_names_option): Renamed to
show_transformed_names_option. All uses changed
* src/create.c (dump_file0): Transform file name
* src/extract.c (extract_archive): safer_name_suffix and
stripped_prefix_len are now called by decode_header
* src/list.c (print_header): Update displayable name selection.
* src/tar.c: New option --transform
New option --show-transformed-names generalizes
--show-stored-names. The latter is retained as an alias.
2006-05-31 Sergey Poznyakoff
* src/incremen.c (make_directory): Fix initialization of struct
directory.
2006-05-25 Sergey Poznyakoff
* doc/tar.texi: Document use of globbing patterns.
* src/tar.c (parse_opt): Add comment before --preserve case.
2006-05-24 Sergey Poznyakoff
* NEWS: Update
* doc/tar.texi: Update
* configure.ac (AM_INIT_AUTOMAKE): Use tar-ustar option. Raise
version requirement to 1.9
* src/common.h (struct name): Refactured
(warn_regex_usage): New variable.
(dump_file): First argument is const char*.
(name_init,name_add): Removed
(name_add_name,name_add_dir): New functions
(name_next): Return const char*.
* src/create.c: (dump_file,dump_file0): First argument is const
char*. All callers updated.
* src/names.c: Rewritten handling of member names in the command
line. Tar no longer attempts to guess globbing patterns, instead
it relies on --wildcard option.
(init_names): Removed.
(struct name_elt): New structure.
(name_array): Change type to struct name_elt. All references updated
(name_add_name,name_add_dir): New functions
(name_next_elt): New function
(name_next): Rewritten using name_next_elt.
(namelist_match): Rewritten pattern matching using
exclude_fnmatch.
(names_notfound): Warn if globbing patterns were used without
--wildcards option
* src/tar.c (options): Move globbing-related options into a
separate group. Set -l as an alias to --check-links, as required
by UNIX98
(struct tar_args): New fields
wildcards,matching_flags,include_anchored
(MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS): New macros
(parse_opt): Use x2nrealloc to grow archive_name_array.
Use MAKE_EXCL_OPTIONS,MAKE_INCL_OPTIONS to create appropriate
fnmatch options, and name_add_name,name_add_dir to handle member
name and -C arguments.
(decode_options): Likewise
(main): Remove call to init_names.
* tests/append.at, tests/append01.at, tests/extrac01.at,
tests/options.at, tests/options02.at, tests/same-order01.at,
tests/same-order02.at: Make AT_SETUP more readable.
2006-05-23 Sergey Poznyakoff
* src/buffer.c (change_tape_menu): Fix typo (uninitialized
variable) introduced yesterday.
2006-05-22 Sergey Poznyakoff
* doc/tar.texi: Use @var{file_name} instead of @var{file name}
* src/buffer.c (change_tape_menu): Break the loop after obtaining
new archive name. Check for empty input line.
2006-05-15 Sergey Poznyakoff
* tests/atlocal.in (XFAILFILE): New variable
* tests/version.at: Create $XFAILFILE on failure
* tests/testsuite.at (AT_TAR_CHECK): Declare expected failure if
$XFAILFILE exists.
2006-05-13 Sergey Poznyakoff
* THANKS: Update
* src/buffer.c (read_header0): Use read_header_primitive to avoid
clubbering current_tar_info. All callers updated.
* src/common.h (read_header_primitive): New function
* src/extract.c (extract_volhdr): New function
(prepare_to_extract): Use extract_volhdr as extractor for volume
names.
* src/list.c (read_header_primitive): New function
(read_header): Front end for read_header_primitive
* tests/chtype.at: New file
* tests/volsize.at: New file
* tests/Makefile.am (TESTSUITE_AT): Add chtype.at, volsize.at
(check-full): New target.
* tests/atlocal.in (TEST_DATA_URL,STAR_DATA_URL)
(STAR_TESTSCRIPTS): Provide default values.
(tarball_prereq): New function
* tests/testsuite.at (AT_TARBALL_PREREQ): New defun
(AT_STAR_PREREQ): Rewrite using tarball_prereq
Include chtype.at and volsize.at
* tests/volume.at: Add keywords.
* tests/star/gtarfail.at, tests/star/gtarfail2.at,
tests/star/multi-fail.at, tests/star/pax-big-10g.at,
tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at
(AT_STAR_PREREQ): Provide md5 sum.
* lib/.cvsignore: Update
2006-05-08 Sergey Poznyakoff
* tests/testsuite.at (AT_SORT_PREREQ, AT_UNPRIVILEGED_PREREQ): New
defines
* tests/extrac04.at, tests/incr03.at, tests/listed02.at,
tests/pipe.at, tests/rename01.at, tests/rename02.at,
tests/rename03.at, tests/same-order01.at: Call
AT_SORT_PREREQ. Remove fd 2 redirection after calls to sort
* ignfail.at: Call AT_UNPRIVILEGED_PREREQ
2006-05-08 Sergey Poznyakoff
Listed incremental backups: keep more information about
directories. Handle renamed directories more effectively
(initial implementation, more updates to follow).
Source tree before this point is tagged
alpha_1_15_90_incremental_1.
* NEWS: Update
* configure.ac: Raise version number to 1.15.91
* src/common.h (rename_directory,append_incremental_renames): New
functions.
* src/extract.c (rename_directory): New function
* src/incremen.c (struct directory.contents, flags): New members
(nfs,found,new): Remove. Replaced by appropriate bitmask values in
`flags' field. All uses updated.
(directory_meta_table): New table.
(hash_directory): Rename to hash_directory_name
(compare_directories): Rename to compare_directory_names
(hash_directory_meta,compare_directory_meta,find_directory_meta):
New functions
(compare_dirents): Removed
(note_directory): Get 7th argument: directory contents.
All callers updated
(dumpdir_locate,makedumpdir): New functions
(scan_directory): Rewritten. Use makedumpdir to create a sorted
dumpdir array. This makes the obstack argument unnecessary. Besides,
ALL_CHILDREN flag is set only for new directories.
(procdir): Change return type to struct directory. Return
immediately if the directory was already initialized. Discover
directory renames using directory_meta_table.
(append_incremental_renames): New function.
(read_directory_file, write_directory_file): Use new snapshot file
format.
* src/names.c (collect_and_sort_names): Update dir_contents of the
first non-fake name entry when in listed incremental mode.
* tests/incr03.at: New testcase
* tests/rename01.at: New testcase
* tests/rename02.at: New testcase
* tests/rename03.at: New testcase
* tests/Makefile.am: Add
incr03.at,rename01.at,rename02.at,rename03.at
* tests/testsuite.at: Likewise.
* tests/listed02.at: Update for the new behavior
* tests/multiv04.at (AT_KEYWORDS): Add missing incremental kw.
2006-05-02 Sergey Poznyakoff
* src/buffer.c (try_new_volume): Attempt to continue if the name
is apparently truncated in a GNU format volume.
* tests/comprec.at, tests/delete01.at, tests/delete02.at,
tests/delete04.at, tests/delete05.at, tests/extrac05.at,
tests/listed01.at, tests/multiv01.at, tests/multiv02.at,
tests/pipe.at, tests/same-order01.at, tests/same-order02.at,
tests/sparse01.at, tests/sparse03.at: Always use genfile --file,
this enables extra error checking.
* tests/multiv03.at: Attempt to extract a member with truncated
file name from the archive.
* src/buffer.c (_open_archive): Remove unnecessary argument to
check_compressed_archive.
2006-04-25 Sergey Poznyakoff
* tests/sparse01.at, tests/sparse02.at, tests/sparse03.at,
tests/sparsemv.at, tests/sparsemvp.at: Skip the test if the file
system does not support sparse files.
* doc/tar.texi (@copying): Remove the reference to not existing
invariant section.
2006-04-11 Sergey Poznyakoff
* src/extract.c (extract_dir): Fix toggling existing directory
permissions (Debian bug #361077). Use parts of patch provided by
Ian Jackson .
* src/compare.c: Minor changes
* src/incremen.c (directory.new): New member
(note_directory,find_directory: Use make_directory to create
struct directory entries
(procdir): Avoid duplicating directories in the incremental
backup map.
* tests/Makefile.am (TESTSUITE_AT): Add extrac06.at
* tests/testsuite.at: Include extrac06.at
2006-03-18 Ralf Wildenhues (trivial change)
* tests/atlocal.in (PATH): Add build-aux from the source tree,
not the build tree.
2006-03-13 Sergey Poznyakoff
* THANKS: Add Benno Schulenberg
2006-03-13 Jim Meyering
* tests/listed02.at: Sort the two lines of stderr from the
first `tar -v --listed-incremental'. They would come out
reversed and provoke a test failure on a tmpfs
file system.
2006-03-13 Benno Schulenberg
* doc/tar.texi: Minor fixes.
* src/tar.c (options): Consistently begin help messages with a
lowercase letter.
2006-03-12 Sergey Poznyakoff
* tests/Makefile.am (AM_CPPFLAGS): Define LOCALEDIR
2006-03-07 Paul Eggert
* src/buffer.c (record_buffer_aligned): New var.
(init_buffer): Use it to ensure that the buffer is aligned.
This doesn't result in any measurable performance improvement
on my host (Debian GNU/Linux 3.1 stable, with default block size),
but I assume it does help on some hosts.
* lib/.cvsignore: Sort.
2006-03-04 Sergey Poznyakoff
* tests/shortrec.at: Use -f - to read from stdin.
2006-02-21 Sergey Poznyakoff
* doc/tar.texi: Fix typo: --to-command instead of --to-program
2006-02-20 Paul Eggert
* tests/multiv04.at (split directory members in a MV archive):
Don't use %X in an awk printf format; this doesn't work with
Solaris 10 /usr/bin/awk. Use %x instead.
2006-02-20 Sergey Poznyakoff
* src/create.c (split_long_name): Fix maximum length estimation.
Patch by Jim Lowe.
* tests/Makefile.am (lustar01.at,lustar02.at,lustar03.at): New
tests.
* tests/atlocal.in: Add build-aux to the PATH
* tests/long01.at: Remove mkhier, use AT_TAR_MKHIER instead
* tests/longv7.at: Reword test title
* tests/lustar01.at: New test
* tests/lustar02.at: New test
* tests/lustar03.at: New test
* tests/testsuite.at (AT_TAR_MKHIER): New macro
(lustar01.at,lustar02.at,lustar03.at): New tests.
2006-02-20 Paul Eggert
* bootstrap: Don't claim lib/Makefile.am is generated automatically
from itself.
Avoid installation glitches on Solaris 8 with Sun C 5.4.
* lib/.cvsignore: Add system-ioctl.h.
* lib/Makefile.tmpl (noinst_HEADERS): Add system-ioctl.h.
* src/buffer.c: Include system-ioctl.h.
* src/compare.c: Likewise.
* src/delete.c: Likewise.
* src/system.c: Include , .
* src/tar.c: Include .
2006-02-19 Sergey Poznyakoff
* src/buffer.c (add_chunk_header): Free st.orig_file_name after
calling finish_header().
(new_volume): Prompt the user for archive name if unable to open
next archive.
* src/create.c (dump_file0): Restore file_count_links,
accidentally removed on 2005-11-29.
* configure.ac: Raise version number to 1.15.90
* NEWS: Likewise.
2006-02-08 Sergey Poznyakoff
* src/tar.c (tar_set_quoting_style): Provide second argument to
the format spec: program_invocation_short_name. Reported by Jim
Meyering.
2006-02-07 Paul Eggert
* gnulib.modules: Add closeout, exitfial.
* lib/.cvsignore: Add __fpending.c, __fpending.h, closeout.c,
closeout.h.
* src/buffer.c: Incluse closeout.h.
(_open_archive): Use freopen rather than fopen, so
that stdlis is always either stdout or stderr. Use
close_stdout_set_file_name to report its name.
* src/tar.c: Include closeout.h and exitfail.h.
(parse_opt, usage): Call close_stdout as appropriate, to check for
write errors.
(decode_options): Exit with status TAREXIT_FAILURE, not 1.
(main): Set exit_failure, to exit with proper status on memory
allocation failure and the like.
Use close_stdout rather than rolling our own test.
* NEWS: --version now outputs copyright etc., to conform to the
GNU coding standards. Remove --license.
* gnulib.modules: Add version-etc-fsf.
* doc/tar.texi: Document the change.
* lib/.cvsignore: Add version-etc-fsf.c, version-etc.c, version-etc.h.
* scripts/Makefile.am (SED_CMD): Update PAKCAGE_NAME, not PACKAGE.
* scripts/backup.in: Remove --license. Change --version to conform
to GCS.
* scripts/restore.in: Likewise.
* scripts/backup.sh.in (license): Output briefer license in the
style of coreutils, for consistency with other changes.
* src/tar.c: Include .
(LICENSE_OPTION): Remove.
(options): Remove --license.
(license): Remove.
(parse_opt): Use version_etc instead of rolling it ourselves.
Remove --license.
* tests/version.at (tar --version): Check only the first line of
output.
* ChangeLog, NEWS, src/common.h, src/extract.c, src/incremen.c:
* src/list.c, src/names.c, src/tar.h, src/xheader.c:
Update copyright year to 2006.
2006-02-07 Jim Meyering
* src/xheader.c (sparse_map_decoder): Fix misleading diagnostic.
2006-01-31 Sergey Poznyakoff
* src/common.h (get_gnu_dumpdir): Remove prototype
(is_dumpdir): New function
* src/extract.c (prepare_to_extract): Use is_dumpdir member to
check for dumpdirs.
* src/incremen.c (get_gnu_dumpdir): Static
(is_dumpdir): New function
(purge_directory): Use is_dumpdir
* src/list.c (list_archive): Use is_dumpdir
Do not wrap skip_member in mv_begin/mv_end, the function itself
takes care of it.
(decode_header): Set stat_info->is_dumpdir
(skip_member): Do nothing if skipped is true
* src/tar.h (struct tar_stat_info): New members is_dumpdir and skipped.
2006-01-22 Sergey Poznyakoff
* src/tar.c (decode_options): Refuse using --delete with
compression options.
2006-01-18 Sergey Poznyakoff
* NEWS: Updated.
* configure.ac (DEFAULT_QUOTING_STYLE): New configuration variable
* doc/tar.texi: Initial documentation for --quoting-style,
--quote-chars and --no-quote-chars option.
* src/tar.c: Implement new options --quoting-style, --quote-chars
and --no-quote-chars.
2006-01-09 Paul Eggert
* bootstrap: Default to pserver, and switch to cvs.sv.gnu.org,
to accommodate recent changes to the GNU CVS server.
* lib/.cvsignore: Add argp-pin.c, mkdirat.c, openat-priv.h.
2005-12-14 Sergey Poznyakoff
* src/names.c (name_scan): Take an additional argument requesting
exact matching.
* src/common.h (name_scan): Change prototype.
* src/delete.c, src/incremen.c, src/update.c: Update invocations
of name_scan.
2005-12-13 Sergey Poznyakoff
* src/common.h (struct name): New member `explicit'. Remove unused
member `isdir'.
* src/incremen.c (procdir): If name_scan() returns something,
check if it was explicitely given in the command line
* src/names.c (addname,add_hierarchy_to_namelist): Initialize
explicit member appropriately.
* src/incremen.c (procdir): If --one-file-system is given and a
directory is found to be on another device, *and* this directory
is explicitely given in the command line, then do not omit it.
2005-12-11 Sergey Poznyakoff
* NEWS: Update
* doc/tar.texi: Document --delay-directory-restore option.
(Configuring Help Summary): Document usage of ARGP_HELP_FMT
variable to customize help output.
* src/common.h (delay_directory_restore_option): New global.
* src/extract.c (directories_first): Replaced by
delay_directory_restore_option. All uses changed.
* src/tar.c (options,parse_opt): New options
--delay-directory-restore and --no-delay-directory-restore
2005-12-09 Sergey Poznyakoff
* src/buffer.c (open_archive): Add default case to shut up gcc.
* src/common.h (set_file_atime): Add prototype.
* src/create.c (to_chars_subst): Remove unused variable
Make sure useful result code is returned.
* src/incremen.c (read_directory_file): Fix format string
Thanks Eric Blake for reporting.
2005-12-08 Sergey Poznyakoff
* doc/tar.texi (Current status): Renamed to 'Changes' and moved to
appendices.
(Large or Negative Values): Rewritten
* src/common.h (gid_to_chars, major_to_chars, minor_to_chars)
(mode_to_chars, off_to_chars, size_to_chars, time_to_chars)
(uid_to_chars, uintmax_to_chars): Return bool
* src/create.c (gid_to_chars, major_to_chars, minor_to_chars)
(mode_to_chars, off_to_chars, size_to_chars, time_to_chars)
(uid_to_chars, uintmax_to_chars): Return bool
(to_chars): Return bool
(start_header): Check return values of convertion routines. Fail
if unable to store data in the header.
2005-12-07 Sergey Poznyakoff
* doc/tar.texi: Following the discussion with Karl Berry,
discontinue using @value{} substitutions for Texinfo commands.
Properly index all long options. Print a
separate long option index.
* doc/value.texi: Remove @set's
* doc/tar.texi: Update --info-script documentation
Resolve some more FIXMEs.
* scripts/dump-remind.in: Use TAR_VOLUME instead of reading volno
file.
* src/buffer.c (new_volume): Update invocation
(change_tape_menu): New function. Disable '!' command if given
--restrict option.
* src/common.h (sys_exec_info_script): Update declaration
(restrict_option): New global
* src/system.c (sys_exec_info_script): The script can supply new
archive name to use by writing it to file descriptor 3.
* src/tar.c (options): Add --restrict option. Use macros for
option grouping.
(license): Print full list of copyright years
* NEWS: Update
2005-12-06 Eric Blake (trivial changes)
* configure.ac (DENSITY_LETTER): Fix m4 overquoting.
* .cvsignore: Ignore .bootstrap.
2005-12-06 Sergey Poznyakoff
* doc/tar.texi: Document --to-command and --info-script
options. Add missing xrefs.
* src/buffer.c (new_volume): Use sys_exec_info_script() instead of
system().
* src/common.h (archive_format_string,subcommand_string)
(sys_exec_info_script): New prototypes.
* src/system.c (sys_exec_info_script): New function.
* src/tar.c (archive_format_string): Remove static qualifier.
(subcommand_string): New function.
2005-12-01 Sergey Poznyakoff
* src/extract.c: Fix restoring of directory timestamps from
incremental archives.
(directories_first): New variable.
(prepare_to_extract): Set directories_first
(extract_archive): Call apply_nonancestor_delayed_set_stat() only
if not extracting from an incremental archive
(extract_dir): Obtain root_device here, to make sure it works
correctly with -C.
* src/incremen.c (purge_directory): Skip the member and return if
the archive is not in incremental format.
* tests/incr02.at: New testcase
* tests/Makefile.am: Add incr02.at
* tests/testsuite.at: Likewise
* THANKS: Add Guerkan Karaman.
* NEWS: Update
2005-11-30 Paul Eggert
* doc/tar.texi (Option Summary): Rewrite the
--atime-preserve=system description in response to Ian Turner's
proposed patch.
2005-11-30 Ian Turner
* doc/tar.texi (Extracting Specific Files): Remove obsolescent
FIXME.
2005-11-29 Paul Eggert
* NEWS: New option --atime-preserve=system, which uses O_NOATIME.
* THANKS: Add Ian Turner.
* configure.ac: Prefer AC_CHECK_HEADERS_ONCE to AC_CHECK_HEADERS.
Check for stropts.h and sys/filio.h too, for _FIOSATIME.
* doc/tar.texi: Change "modification time" to "data modification
time", "change time" to "status change time", and "filesystem" to
"file system", so that we use terminology consistent with POSIX.
Use American spacing rather than French for sentence ends.
"non-dependable" -> "undependable".
(Option Summary, Attributes): Explain better the pitfalls of the
--atime-preserve option, and suggest read-only mounts,loopback
mounts, and noatime mounts for older systems.
* doc/value.texi (op-atime-preserve-system): Renamed from
op-atime-preserver-system to fix a misspelling.
* src/common.h (enum atime_preserve): Use lower case for enum values.
* src/compare.c: Don't include utimens.h; no longer needed.
(diff_file): Use set_file_atime rather than utimens; avoid closing
diff_handle until after this, so that we can set the file time stamp
via the file descriptor rather than via its name.
* src/create.c: Don't include utimens.h; no longer needed.
(dump_regular_finish): Remove. All callers now do its work inline.
(dump_dir): New arg FD. All callers changed.
Use fdsavedir rather than savedir.
(unknown_file_error): Arg is a const pointer now.
(dump_file0): 2nd arg is a const pointer now.
Treat directories more like files, with respect to --atime-preserve.
For example, also warn if a directory changes while we are dumping it.
Prefer file descriptors to file names when retrieving/setting file
attributes; this saves path-resolution time and allows us to avoid
changing mtime/ctime on Solaris when restoring atime as root.
Use O_DIRECTORY when opening directories, to avoid some race conditions.
Do not reset atime if mtime has changed. Report an error if
we cannot reset atime.
* lib/.cvsignore: Add malloc.h, regcomp.c, regex.c, regex.h,
regex_internal.c, regex_internal.h, regexc.c; used by rpmatch.
2005-11-29 Ian Turner
First cut at adding support for --atime-preserve=system.
* doc/tar.texi (Option Summary): First cut at documenting it.
All other uses of --atime-preserve changed to --atime-preserve=replace.
* doc/value.texi (op-atime-preserve-replace, op-atime-preserver-system):
New.
(op-atime-preserve): Mention METHOD.
* src/common.h (atime_preserve): New enum.
(atime_preserve_option): Now of the enum type rather than bool.
All uses changed.
* src/compare.c (diff_file): Read with O_NOATIME if asked for.
* src/create.c (dump_file0): Read regular and CTG files with O_NOATIME
if asked for.
* src/tar.c (usage): Mention new usage.
(parse_opt): Parse new usage.
2005-11-29 Paul Eggert
* THANKS: Convert back to UTF-8, sort (using LC_ALL=C on Debian
stable), and consistently use tabs rather than spaces.
2005-11-27 Sergey Poznyakoff
* src/xheader.c: Remove parts of code prematurely introduced
yesterday. Thanks Eric Blake.
2005-11-26 Sergey Poznyakoff
* src/xheader.c (xheader_format_name): Fix memory leak.
2005-11-11 Sergey Poznyakoff
* gnulib.modules: Add rpmatch
* lib/stdopen.h, lib/stdopen.c: New file. Imported from coreutils.
* lib/Makefile.tmpl: Add stdopen.h, stdopen.c
* po/POTFILES.in: Add rpmatch.c
* src/tar.c (confirm): Rewritten using rpmatch.
(decode_options): Minor optimizations
(main): Call stdopen() to ensure the first three descriptors are
open.
* tests/multiv01.at, tests/multiv02.at, tests/multiv03.at,
tests/multiv04.at, tests/sparsemv.at, tests/sparsemvp.at,
tests/star/multi-fail.at: Close stdin so that if something fails
causing tar to ask for the next volume, it won't hang the
testsuite.
* src/buffer.c (flush_write,flush_read): Change data type.
(flush_archive): Compute actual buffer fill level before calling
low level function.
(close_archive): Call flush_archive again if the first call
resulted in partially filled buffer.
(try_new_volume): Rewritten handling of initial headers.
(add_chunk_header): New function. Write an additional header
before the continuation chunk. The purpose of the header is to
allow third-party tars to extract the member.
(simple_flush_write): Take an argument.
(_gnu_flush_write): Correctly handle partially filled buffers.
* src/common.h (flush_read,flush_write): Functions, again.
(write_extended): Changed declaration
(xheader_format_name): New declaration
* src/create.c (write_extended): Change type and meaning of
the first argument. All callers updated
* src/xheader.c (xheader_format_name): Remove static
qualifier. Change last argument.
Correct buffer size calculation (allocated too much space).
(xheader_write): Increase global_header_count here ...
(xheader_write_global): ... instead of here
* tests/testsuite.at (AT_TAR_CHECK): Define TEST_TAR_FORMAT
* tests/multiv01.at: Update
* tests/multiv02.at: Update
* tests/multiv03.at: Update
* tests/sparsemvp.at: Update
* tests/star/multi-fail.at: Update
* scripts/tarcat: Handle archives in pax format. Improve handling
of traditional archives.
* doc/tar.texi (Tarcat): New node
2005-11-10 Sergey Poznyakoff
Fix splitting of sparse files between the volumes.
* src/buffer.c (try_new_volume): Bugfix. Always check
continued_file_name. If it is absent, the volume is out
of sync.
(add_multi_volume_header): Create GNU.volume.filename keyword in
the extended header.
* src/sparse.c (sparse_dump_region): Call mv_size_left.
(sparse_dump_file): Enclose the loop in mv_begin/mv_end.
* src/system.c: Do not pad compressed output if it goes to
stdout.
* src/xheader.c (xhdr_tab): New keyword GNU.volume.filename.
* tests/sparsemv.at: New testcase
* tests/sparsemvp.at: New testcase
* tests/Makefile.am: Add sparsemv.at and sparsemvp.at.
* tests/testsuite.at: Likewise.
2005-11-09 Sergey Poznyakoff
* src/buffer.c: Rewritten in a more modular fashion to provide
GNU extensions (multi-volume archives and archive labels) in
pax format.
NOTICE, that some of the aspects (e.g. splitting the archive
on the extended header boundary) are still not solved, others
(splitting a sparse file between the volume) require additional
testing. Wait for the next commit.
(volume_label,continued_file_name,continued_file_size)
(continued_file_offset): New globals.
(save_name,save_totsize,save_sizeleft): Make static
(mv_begin,mv_end,mv_total_size,mv_size_left): New functions
(open_archive,flush_write,flush_read): Rewritten
* src/common.h (save_name,save_sizeleft,save_totsize): Remove
globals.
(volume_label,continued_file_name,continued_file_size): New
variables.
(flush_read,flush_write): Pointers to functions
(mv_begin,mv_end,mv_total_size,mv_size_left): New functions
(write_extended): New function.
* src/compare.c, src/create.c, src/extract.c, src/incremen.c,
src/list.c: Use mv_.* functions uniformly instead of fiddling
with the global variables.
* src/sparse.c: Use mv_.* functions where necessary.
* src/tar.c (decode_options): Allow to use --multi-volume and
--label with pax archives.
* src/xheader.c (xhdr_tab): Support for new GNU keywords.
* tests/delete01.at, tests/delete02.at, tests/delete03.at,
tests/delete04.at, tests/delete05.at, tests/extrac01.at,
tests/extrac02.at, tests/extrac03.at, tests/extrac04.at,
tests/extrac05.at, tests/incr01.at, tests/incremental.at,
tests/listed01.at, tests/listed02.at, tests/long01.at,
tests/longv7.at, tests/multiv01.at, tests/multiv02.at,
tests/multiv03.at, tests/multiv04.at, tests/options.at,
tests/options02.at, tests/same-order01.at, tests/same-order02.at,
tests/sparse01.at, tests/sparse02.at, tests/sparse03.at,
tests/star/multi-fail.at (AT_KEYWORDS): Improve to allow execution
of related tests in groups.
* doc/tar.texi: Update
2005-11-07 Paul Eggert
* src/xheader.c (struct xhdr_tab.coder): Last arg is void const *,
not void *, to avoid create.c warning from GCC "passing argument 3
of 'xheader_store' discards qualifiers from pointer target type".
(dummy_coder, atime_coder, gid_coder, gname_coder, linkpath_coder):
(ctime_coder, mtime_coder, path_coder, size_coder, uid_coder):
(uname_coder, sparse_size_coder, sparse_numblocks_coder):
(sparse_offset_coder, sparse_numbytes_coder, dumpdir_coder):
(xheader_store): Likewise.
* src/common.h (xheader_store): Likewise.
2005-11-07 Sergey Poznyakoff
and Paul Eggert
* src/tar.c (NS_PRECISION_FORMAT_MASK): New macro.
(tar_timespec_cmp): New function. Wrapper over
timespec_cmp using the timespec precision provided by the
current archive format.
* src/common.h (tar_timespec_cmp): New declaration.
* src/compare.c (diff_file): Use tar_timespec_cmp.
* src/extract.c (file_newer_p): Likewise.
* src/update.c (update_archive): Likewise.
* tests/truncate.at: Reverted changes
* tests/update.at: Reverted changes
2005-11-07 Sergey Poznyakoff
Support for incremental formats in pax archives.
Fixed POSIX compatibility of `sparse' extended header keywords.
* src/common.h (dumpdir_size,get_gnu_dumpdir)
(xheader_string_begin,xheader_string_add)
(xheader_string_end): New functions.
* src/create.c (dump_dir0): Handle incremental backups in pax
archives.
* src/incremen.c (dumpdir_size, get_gnu_dumpdir): New functions.
(purge_directory): Use stat_info.dumpdir instead of getting its
value explicitely.
* src/list.c (list_archive): Handle incremental backups in pax
format.
(decode_header): Initialize stat_info.dumpdir
* src/sparse.c (sparse_diff_file): Bugfix: set seekable.
(pax_dump_header): Store sparse map in GNU.sparse.map. If this
variable has been explicitely deleted, use GNU.sparse.offset/
GNU.sparse.numbytes variables.
* src/tar.c (decode_options): Incremental options are allowed with
--format=pax
(tar_stat_destroy): Free dumpdir
* src/tar.h (struct tar_stat_info.dumpdir): New member.
* src/xheader.c (xheader_keyword_deleted_p): Remove static
qualifier.
(struct xhdr_tab.decoder): Change prototype. POSIX allows string
values to contain embedded nulls, so take an extra argument
specifying the length of the string.
(decx,decg,dummy_decoder,atime_decoder,gid_decoder)
(gname_decoder,linkpath_decoder,ctime_decoder,mtime_decoder)
(path_decoder,size_decoder,uid_decoder,uname_decoder)
(sparse_size_decoder,sparse_numblocks_decoder)
(sparse_offset_decoder,sparse_numbytes_decoder): Likewise.
(decode_record): Pass value length to the handler
(run_override_list): Pass value length to the decoder
(xheader_print_n): New function
(xheader_print): Rewritten using xheader_print_n
(xheader_finish): Do not rely om strlen to compute the length of
the collected string: it can contain embedded nulls
(xheader_string_begin,xheader_string_add,xheader_string_end): New
functions.
(sparse_map_decoder,dumpdir_coder,dumpdir_decoder): New
functions. Handle GNU.sparse.map and GNU.dumpdir variables.
(xhdr_tab): Add new variables.
* tests/incr01.at: Test gnu, oldgnu, and posix formats
* tests/incremental.at: Likewise
2005-11-06 Paul Eggert
* NEWS: Minor language and white space fixes.
* tests/truncate.at: Create files whose time stamps must fall on
1-second boundaries. This prevents tests from failing on hosts
like Solaris 8 that have nanosecond-resolution file time stamps.
* tests/update.at: Likewise.
* src/xheader.c (strtoimax, strtoumax): Remove decls; now done
in system.h.
2005-11-06 Sergey Poznyakoff
* doc/tar.texi: Properly document incremental dumps
* doc/value.texi: Likewise.
* doc/snapshot.texi: Likewise.
2005-11-05 Sergey Poznyakoff
Improve listed incremental format:
* src/common.h (update_parent_directory): New prototype.
* src/create.c (dump_file): Call update_parent_directory.
* src/incremen.c (struct directory.mtime): New member.
(note_directory): Take additional arguments. All callers updated.
(scan_directory): Updated to use more metadata. In particular,
this allows to correctly detect renamed files.
(read_directory_file,write_directory_file)
(write_directory_file_entry): Support new directory file format.
* tests/listed01.at: Sleep 1 sec before creating second file.
* tests/listed02.at: Never skip the test. It should work on any
filesystem.
* doc/snapshot.texi: New file
* doc/tar.texi: Update.
* doc/Makefile.am: Update.
2005-11-04 Paul Eggert
* src/extract.c (set_stat): Rewrite to avoid bug in Forte
Developer 7 C 5.4 Patch 111708-09 (2004-02-19).
2005-11-04 Sergey Poznyakoff
* bootstrap: Fix quoting in help output.
(update_po): Use backward-compatible wget option --cache instead
of deprecated -C to accomodate for wget 1.10.
Changes proposed by Eric Blake
* THANKS: Add Eric Blake
2005-11-02 Paul Eggert