+2004-04-04 Sergey Poznyakoff <gray@Noldor.runasimi.org>
+
+ * NEWS: Updated
+ * configure.ac: Raised version number to 1.13.94
+ * src/system.h: Protect inclusion of <sys/time.h>
+ by ifdef.
+ Declare time() if HAVE_DECL_TIME is 0
+ * tests/.cvsignore: Added mksparse
+
+ * tests/sparse01.sh: New file
+ * tests/multiv02.sh: New file
+ * tests/Makefile.am: Add sparse01.sh and multiv02.sh
+ * tests/longv7.sh: Added missing call to 'after'
+
+ * src/common.h: Added missing prototypes
+ * src/compare.c (diff_archive): Use is_sparse member
+ instead of GNUTYPE_SPARSE.
+ * src/create.c: Removed unused variables
+ * src/extract.c (extract_archive): Use sparse_member_p instead
+ of GNUTYPE_SPARSE.
+ Removed unused variables
+ * src/list.c (decode_header): Use sparse_fixup_header to correct
+ the st_size value.
+ (print_header): Do not rely on GNUTYPE_SPARSE type.
+ Use st->stat.st_size to print real file size.
+ (skip_member): Assign stat_info.file_name to save_name. This fixes
+ bug reported by Mads Martin Joergensen <mmj@suse.de>
+ Use sparse_skip_file() to skip sparse members.
+ * src/rtapelib.c: include "common.h"
+ * src/sparse.c (struct tar_sparse_optab.sparse_member_p)
+ (struct tar_sparse_optab.fixup_header): New member
+ (tar_sparse_member_p): New function.
+ (tar_sparse_init): Return true if decode_header is not provided
+ (tar_sparse_fixup_header)
+ (sparse_member_p,sparse_fixup_header)
+ (sparse_skip_file)
+ (oldgnu_sparse_member_p,oldgnu_fixup_header,star_sparse_member_p)
+ (star_fixup_header, pax_sparse_member_p): New function
+ (pax_decode_header): Remove
+ * src/system.h: Include <sys/time.h> and <utime.h> when available
+ * src/tar.c (usage): Prototype moved to common.h
+ * src/tar.h (struct tar_stat_info.is_sparse): New member
+ * src/utf8.c (utf8_convert): Changed prototype
+ (get_input_charset): Removed unused variable
+ * src/xheader.c: include <fnmatch.h>
+ (size_decoder): Assign to both st->archive_file_size and
+ st->stat.st_size.
+ (st->stat.st_size): Assign to st->stat.st_size
+ (sparse_numbytes_decoder): Removed unused variable
+ * src/.cvsignore: Added .gdbinit
+ * THANKS: Added Mads Martin Joergensen
+
+2004-03-26 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/create.c (write_long_name): Do not allow more than
+ NAME_FIELD_SIZE-1 characters in a file name for V7 format
+ archives.
+ * tests/longv7.sh: New file.
+ * tests/Makefile.am: Add longv7.sh
+
+2004-03-22 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/buffer.c (open_archive): Clear read_full_records_option
+ if reading from a pipe.
+ (short_read): Display warning about the deduced record size
+ if version > 1
+ * tests/star/pax-big-10g.sh: Updated to match the above changes.
+ * tests/star/ustar-big-2g.sh: Likewise.
+ * tests/star/ustar-big-8g.sh: Likewise.
+
+ * configure.ac: Added gl_FUNC_STRTOULL
+ * src/create.c (start_header): Check for GNU_FORMAT
+ if incremental_option is set.
+ * src/xheader.c (to_decimal): New function.
+ (xheader_format_name): Use to_decimal() instead of snprintf.
+ * tests/listed01.sh: Use genfile instead of dd
+ * tests/multiv01.sh: Likewise.
+
+2004-03-12 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/list.c (read_and): Stop processing the archive after
+ encountering a single zero record. Many old archives contain
+ arbitrary garbage after it.
+ The warning is issued anyway.
+
+2004-03-02 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/rtapelib.c (rmt_lseek__,rmt_ioctl__): Bugfix. The
+ conversion buffer was not null terminated. Fix provided
+ by Leland Lucius <llucius@tiny.net>
+ * THANKS: Added Leland Lucius
+ * src/utf8.c (utf8_convert): Indentation fix.
+
+2004-02-29 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/buffer.c (flush_read): Bugfix: the
+ condition at line 714 included
+
+ || (status > 0 && !read_full_records_option)
+
+ which is grossly wrong, since even if new_volume() below succeeds,
+ the subsequent call to rmtread will overwrite the chunk of data
+ already read in the buffer and thus spoil everything.
+ * src/system.c (sys_child_open_for_uncompress): Minor stylistic
+ fix.
+ * tests/star/multi-fail.sh: New test.
+ * tests/Makefile.am: Added multi-fail.sh
+ * tests/star/README: Updated
+
+2004-02-29 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * NEWS: Updated
+ * configure.ac: Removed spurious AC_CHECK_LIB(iconv)
+ * src/common.h (utc_option): new global
+ (enum old_files.KEEP_NEWER_FILES): New element
+ * src/extract.c: Handle --keep-newer-files option
+ * src/list.c (tartime): Print UTC if --utc was given.
+ * src/tar.c: New options: --utc and keep-newer-files
+
+ * tests/Makefile.am: Added new tests
+ * tests/after: Rewritten
+ * tests/before: Rewritten
+ * tests/preset.in: Rewritten
+ * tests/delete03.sh: Accomodate for the new testsuite logic
+ * tests/gzip.sh: Likewise
+ * tests/incremen.sh: Likewise
+ * tests/listed01.sh: Likewise
+ * tests/multiv01.sh: Likewise
+ * tests/old.sh: Likewise
+ * tests/options.sh: Likewise
+ * tests/version.sh: Likewise
+ * tests/volume.sh: Likewise
+
+ * tests/star: New directory
+ * tests/star/README: New file
+ * tests/star/gtarfail.sh: New file
+ * tests/star/gtarfail2.sh: New file
+ * tests/star/pax-big-10g.sh: New file
+ * tests/star/qucktest.sh: New file
+ * tests/star/ustar-big-2g.sh: New file
+ * tests/star/ustar-big-8g.sh: New file
+
+2004-02-26 Paul Eggert <eggert@twinsun.com>
+
+ * doc/tar.texi (dircategory Individual utilities): Append period,
+ as suggested by Karl Berry.
+
+2004-02-24 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/list.c (decode_header): Call xheader_decode before
+ the assignment to current_stat_info.archive_file_size.
+
+2004-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * configure.ac: Invoke AM_ICONV, to define ICONV_CONST if needed.
+
+2004-02-23 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ 1.13.93 released.
+
+ * NEWS: Updated
+ * tests/before: Move testing of the prerequisite archive formats
+ to the separate function 'prereq'. Do not expect any arguments
+ * tests/delete03.sh: Use prereq() instead of passing arguments
+ to 'before'.
+ * tests/incremen.sh: Likewise.
+ * tests/listed01.sh: Likewise.
+ * tests/multiv01.sh: Likewise.
+
+2004-02-22 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ Added UTF-8 support. Finished global extended header
+ support.
+
+ * NEWS: Minor fix
+ * configure.ac: Detect libiconv
+ * src/utf8.c: New file. Conversions to and from utf-8.
+ * src/Makefile.am: Added utf8.c
+ * src/create.c (write_header_name) In pax format, use
+ "path" keyword if the file name is not ASCII
+ (start_header): Likewise for uname and gname.
+ * src/list.c: Decode encountered global headers.
+ * src/xheader.c: Use keywords from the global
+ headers.
+ Correctly handle UTF-8 conversions.
+ (xheader_list_destroy): New function.
+ (xheader_set_single_keyword,xheader_set_keyword_equal): Added
+ missing gettext markers
+ (decode_record): Rewritten using caller-provided handler and
+ data closure.
+ * tests/listed01.sh: Give credit to Andreas Schuldei.
+
+2004-02-21 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * src/create.c (dump_file0): The conditional at line
+ 1296 prevented incremental backups on individual files
+ from working, as reported by Andreas Schuldei
+ <andreas@schuldei.org>.
+
+ This is due to the condition
+
+ (0 < top_level || !incremental_option)
+
+ Removing it makes incremental backups work for individual
+ files as well as for directories. On the other hand, it does
+ not affect other functionality, as shown by the reasoning below:
+
+ To begin with, the two parts of this condition are mutually
+ superfluous, because
+
+ 1) when top_level < 0, incremental_option == 1
+ so the condition yields false
+ 2) when top_level >= 0, incremental_option == 0
+ so the condition yields true.
+
+ In other words, it is completely equivalent to
+
+ (!incremental_option)
+
+ Now, let's consider the effect of its removal. There are two cases:
+
+ 1) when incremental_option==1
+ This means incremental backup in progress. In this case dump_file
+ is invoked only for directories or for files marked with 'Y' by
+ get_directory_contents. The latter are those that did not meet the
+ condition in incremen.c:242, which is exactly the same condition
+ as this at create.c:1296. So, for these files the check
+ (!incremental_option) is useless, since the rest of the
+ conditional will yield false anyway. On the other hand, if
+ dump_file is invoked on a directory, the conditional will yield
+ false due to !S_ISDIR assertion, so these will be processed as usual.
+
+ Thus, for this case the extra condition (!incremental_option) is
+ irrelevant, and its removal won't alter the behavior of tar,
+ *except* that it will enable incremental backups on individual
+ files, which is the wanted effect.
+
+ 2) when incremental_option==0
+ In this case the condition yields true and its removal does not
+ affect the functionality.
+
+ * THANKS: Updated
+ * configure.ac: Raised patchlevel to 93
+ * src/incremen.c: Minor stylistic fixes.
+ * tests/listed01.sh: New test. Check listed incremental
+ backups on individual files.
+ * tests/Makefile.am: Added listed01.sh
+
2004-02-20 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+ * src/common.h (simple_finish_header,start_private_header): New
+ declarations
+ (xheader_ghdr_name): Changed declaration
+ * src/create.c (start_private_header): Removed static qualifier.
+ (write_extended): Removed superfluous last argument. Use
+ xheader_write()
+ (simple_finish_header): New function.
+ (finish_header): Use simple_finish_header() to break recursive
+ dependency between this function and write_extended().
+ * src/tar.c (assert_format): Do not bail out if several
+ --format arguments are given. This is a common case when
+ TAR_OPTIONS are used.
+ (decode_options): New option --show-defaults displays the
+ compiled-in defaults.
+ Use POSIX format if no --format option was given and
+ --pax-option was specified.
+ Do not allow to use --pax-option unless the archive format is
+ set to POSIX (or reading subcommand is requested).
+
+ * src/update.c (update_archive): Write global extended header if
+ constructed.
+ * src/xheader.c (xheader_format_name): Bugfix.
+ (xheader_xhdr_name): Changed the default extended header name
+ to '%d/PaxHeaders.%p/%f', as POSIX requires.
+ (xheader_ghdr_name): Removed unused argument.
+ (xheader_write,xheader_write_global): New function.
+ (xheader_decode): Modified to honor overrides whatever
+ the current archive format is.
+
+ * src/delete.c (delete_archive_members): Call xheader_decode
+ unconditionally.
+ * src/list.c (decode_header): Likewise.
+ * src/incremen.c (sort_obstack): Fixed typo in the comment
+
+ * doc/tar.texi: Document new default for extended
+ header names.
+
+ * tests/before: Accept an optional list of allowed archive
+ formats. Exit with the status 77 if the current archive
+ format does not match any of them.
+ * tests/delete03.sh: Require gnu, oldgnu or posix format
+ * tests/incremen.sh: Require gnu or oldgnu format
+ * tests/multiv01.sh: Likewise
+
+2004-02-20 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
* doc/tar.texi (Option Summary): Documented --pax-option
* src/tar.c: Likewise.
* NEWS: Likewise.